+
+### Level 3 Chargers
+Level 3 chargers, also known as DC Fast Chargers (DCFC), charge EVs
+quickly by skipping the vehicle's internal charging circuitry and
+pumping energy directly to the battery.
+
+Level 3 chargers are:
+
+* Used for long distance travel
+* Located along major thoroughfares like I-5
+
+Level 3 chargers are more expensive than Level 2 chargers. Some Level 3
+chargers bill by time (for example, in North Carolina), but most bill by
+amount of energy used, measured in kWh.
+
+The Tesla Superchargers near me charge $0.25/kWh. At that price it
+costs me:
+
+* $3.50 for 50 miles of range (14kWh)
+* $16.88 for a 90% charge (67.5kWh, 270 miles)
+* $18.75 for a full charge (75kWh, 310 miles)
+
+Cost Per Mile Comparison (excluding taxes, fees, and maintenance)
+Vehicle,Fuel Source,Cost per Mile (excluding taxes, fees, and maintenance)
+Nadine's Car,Gasoline at $3.189/gallon,$0.0580
+My Car,Home Level 2 Charging at $0.13/kWh,$0.070
+
+### Finding Chargers
+EV chargers do not need a large fuel tank or pumps, so they are often
+tucked away in the corners of parking lots and other inconspicuous
+places.
+
+Alonzo and Christine drove through North and South Dakota a few years
+ago, and Alonzo sent me some funny pictures of surprise chargers tucked
+just out of view along the way.
+
+Another example is one of the Tesla Superchargers near my house, which
+is [located the parking lot behind a convenience store](https://www.plugshare.com/location/251943).
+
+Here are a few good resources for finding chargers:
+
+* [PlugShare](https://plugshare.com/): Web site and phone app that
+ allows you to search for chargers and filter the results by plug type
+ billing. Other users regularly check in with updates and pictures if
+ there are service problems (examples: a broken charger or a non-EV
+ car blocking one of the spots). I have the PlugShare app installed on
+ my phone and set to only show free Level 2 chargers by default.
+* [Alternative Fuels Station Locator](afdc-stations): Searchable
+ nation-wide database of chargers. Not as useful as PlugShare.
+* [Tesla Supercharger Map](https://www.tesla.com/findus?v=2): Tesla's
+ map of Superchargers in the United States. **Hint:** Click the icons
+ at the bottom to exclude "Stores and Galleries", "Service",
+ "Destination Charging", and "Collision Centers".
+
+Most EVs also have built-in software to find and route to the nearest
+Level 3 charger, so you don't have to fiddle with your phone while
+you're driving.
+
+## Long Distance Driving
+I'm breaking this into a "Tesla" section and a "non-Tesla" sections,
+because the answers are different.
+
+### Long Distance Driving (Tesla)
+You do have to worry about charging on long distance trips, but in
+practice it is not that big of a deal with Tesla EVs unless you are
+traveling more than 100 miles from a major travel route.
+
+Tesla has been building their Supercharger network since 2012, and as of
+2021 Superchargers are located every 100 miles or so along most major
+travel routes in the United States.
+
+You can see that yourself by doing the following:
+
+1. Go to the [Map of Tesla Superchargers][supercharger-map].
+2. Click the buttons at the bottom to filter out everything except for
+ "Superchargers".
+3. Zoom the map out to see the entire United States.
+
+#### Falls Church, VA to Spring Lake, NC
+For example, in 2019, Nadine and I drove to visit Robert and Jenn in
+Spring Lake, NC, which is 320 miles from Falls Church.
+
+We stopped at two Superchargers on the way there:
+
+* Chester, VA
+* Smithfield, NC
+
+We didn't even need the second stop to make it to Spring Lake. I made
+the second stop because Spring Lake is a small town with no Level 3
+chargers and very few Level 2 chargers, so it was easier to charge
+before we drove in, then forget that we had an electric car for the
+weekend.
+
+On the way back we stopped at three Superchargers:
+
+* Fayetteville, NC
+* Rocky Mount, NC
+* Fredricksburg, VA
+
+The third stop wasn't necessary for charging, but I needed a break from
+driving and Nadine was hungry. I remember that stop, because Nadine
+decided that eating clam chowder from a convenience store was a good
+idea. It was not a good idea.
+
+#### Eugene, OR to Port Angeles, WA (Tesla)
+On the phone you asked about:
+
+1. Driving from Eugene to Port Angeles. See the notes below.
+2. Driving from Eugene to rural Idaho. I can't answer this question
+ without a more specific destination.
+
+I said that I was sure driving to from Eugene to Port Angeles in an EV
+would be fine, and listed several fast charging stations along I-5.
+
+You can see what the route for a trip from Eugene to Port Angeles would
+look like in [my car][epa-car] via [A Better Route Planner (ABRP)][abrp]
+at the following URL:
+
+
+
+So fastest way to travel from Eugene, OR to Port Angeles, WA in [my
+car][epa-car] is:
+
+* one 6 minute stop in Vancouver, WA, and
+* one 11 minute stop in Tumwater, WA.
+
+The total cost would be $10.48.
+
+(Realistically If I made that trip, I would probably wait an additional
+30 minutes at the Tumwater, WA charger and charge to 90%).
+
+For comparison, [Nadine's car][epa-ioniq], could make the trip from
+Eugene to Port Angeles without stopping for gas.
+
+(I can't drive for that long in one sitting because my legs cramp up, so
+realistically I would need to stop at least once to relax and stretch my
+legs for 30 minutes).
+
+Anyway, the given the [average cost of gasoline in Lane County
+($3.746)](https://gasprices.aaa.com/?state=OR), and a distance of 339
+miles:
+
+
+
Eugene, OR to Port Angeles, WA
+
+
+
Car
+
Stops (#)
+
Stops (min)
+
Cost
+
+
+
+
+
Nadine
+
0
+
0
+
$23.09
+
+
+
+
Paul
+
2
+
17
+
$10.48
+
+
+
+
+### Long Distance Driving (non-Tesla)
+
+You can still make long distance trips in non-Tesla EVs, but it's more
+complicated because:
+
+* there are fewer non-Tesla Level 3 chargers,
+* non-Tesla Level 3 chargers are more expensive, and
+* non-Tesla Level 3 chargers have screwy billing rates (in other words,
+ they are a rip off)
+
+#### Eugene, OR to Port Angeles, WA (non-Tesla)
+Here is route for the same trip from Eugene, OR to Port Angeles, WA in a
+[Ford Mustang Mach-E Standard RWD][epa-mach-e], according to
+[ABRP][]:
+
+
+
+So fastest way to travel from Eugene, OR to Port Angeles, WA in a
+[Mach-E][epa-mach-e] is:
+
+* one 22 minute stop in Vancouver, WA, and
+* one 29 minute stop in Olympia, WA.
+
+The total cost of energy would be $23.27 (more expensive than Nadine's
+car).
+
+Here is the same trip in a [2020 Hyundai Kona EV][epa-kona], according
+to [ABRP][]:
+
+
+
+The fastest way to travel from Eugene, OR to Port Angeles, WA in a
+[Kona EV][epa-kona] is:
+
+* one 14 minute stop in Portland, OR, and
+* one 24 minute stop in Olympia, WA.
+
+The total cost of energy would be $18.55 (less expensive than [Nadine's
+car][epa-ioniq], but still not as good as [my car][epa-car]).
+
+Here is how all the cars stack up:
+
+
+
Eugene, OR to Port Angeles, WA
+
+
+
Car
+
Stops (#)
+
Stops (min)
+
Cost
+
+
+
+
+
2017 Hyundia Ioniq Hybrid
+
0
+
0
+
$23.09
+
+
+
+
2019 Tesla Model 3 LR AWD
+
2
+
17
+
$10.48
+
+
+
+
2021 Ford Mustang Mach-E RWD
+
2
+
51
+
$23.27
+
+
+
+
2020 Hyundia Kona EV
+
2
+
38
+
$18.55
+
+
+
+
+Tesla Model Y LR AWD:
+
+
+[epa]: https://fueleconomy.gov/
+ "EPA fuel economy"
+[epa-car]: https://fueleconomy.gov/feg/Find.do?action=sbs&id=41190
+ "2019 Tesla Model 3 LR AWD (my car)"
+[epa-ioniq]: https://www.fueleconomy.gov/feg/noframes/38484.shtml
+ "2017 Hyundia Ioniq Hybrid (Nadine's car)"
+[evse]: https://en.wikipedia.org/wiki/Charging_station
+ "EV car charger (Electric Vehicle Supply Equipment)"
+[afdc]: https://afdc.energy.gov/
+ "Alternative Fuels Data Center"
+[j1772]: https://en.wikipedia.org/wiki/SAE_J1772
+ "J1772 standard level 2 EV charger plug"
+[afdc-stations]: https://afdc.energy.gov/stations/#/find/nearest?fuel=ELEC
+ "Alternative Fuels Data Center Station Locator"
+[supercharger-map]: https://www.tesla.com/findus?v=2
+ "Map of Tesla Superchargers"
+[abrp]: https://abetterrouteplanner.com/
+ "A Better Route Planner (ABRP)"
+[epa-mach-e]: https://fueleconomy.gov/feg/Find.do?action=sbs&id=43604
+ "2021 Ford Mustang Mach-E Standard RWD"
+[epa-kona]: https://fueleconomy.gov/feg/Find.do?action=sbs&id=44444
+ "2020 Hyundai Kona EV"
diff --git a/content/posts/1998-11-30-pabloworld-news-update-19981201.html b/content/posts/1998-11-30-pabloworld-news-update-19981201.html
new file mode 100644
index 0000000..8ef1dfc
--- /dev/null
+++ b/content/posts/1998-11-30-pabloworld-news-update-19981201.html
@@ -0,0 +1,10 @@
+---
+date: "1998-11-30T17:00:00Z"
+title: 'PabloWorld News Update #19981201'
+slug: pabloworld-news-update-19981201
+---
+
+Everything seems to be taking place. I planned on setting
+up a web-based chat forum, but then I decided that i hate
+those things, so I scrapped the idea.
+
diff --git a/content/posts/1998-12-13-pabloworld-news-update-19981214.html b/content/posts/1998-12-13-pabloworld-news-update-19981214.html
new file mode 100644
index 0000000..8ec4b49
--- /dev/null
+++ b/content/posts/1998-12-13-pabloworld-news-update-19981214.html
@@ -0,0 +1,16 @@
+---
+date: "1998-12-13T17:00:00Z"
+title: 'PabloWorld News Update #19981214'
+slug: 'pabloworld-news-update-19981214'
+---
+
+Raster and Mandrake have finished the
+Enlightenment
+config file changes, so I've started working on
+Themble
+again. I got really tired of entering the code for the widgets
+('cause it takes too long), so I grebbed
+Glade. The last time I used it, it was
+still *really* in development, so hopefully it's matured a little
+bit.
+
diff --git a/content/posts/1998-12-14-pabloworld-news-update-19981215.html b/content/posts/1998-12-14-pabloworld-news-update-19981215.html
new file mode 100644
index 0000000..97497f4
--- /dev/null
+++ b/content/posts/1998-12-14-pabloworld-news-update-19981215.html
@@ -0,0 +1,23 @@
+---
+date: "1998-12-14T17:00:00Z"
+title: 'PabloWorld News Update #19981215'
+slug: 'pabloworld-news-update-19981215'
+---
+
+Start finished her web page finally! Check it out
+here
+(you might want to turn off JavaScript in order to avoid the
+*really* annoying popups).
+
+
+I finally installed that second old school cdrom drive in my system,
+but it doesn't seem to want to read my burned cds :(. I was planning
+on burning another cd of mp3s and then mounting it, but oh well.
+
+
+Oh yeah, updates to the
+About,
+News, and
+Bits sections, as well
+my EFN page.
+
diff --git a/content/posts/1998-12-20-pabloworld-news-update-19981221.html b/content/posts/1998-12-20-pabloworld-news-update-19981221.html
new file mode 100644
index 0000000..7c35e24
--- /dev/null
+++ b/content/posts/1998-12-20-pabloworld-news-update-19981221.html
@@ -0,0 +1,17 @@
+---
+date: "1998-12-20T17:00:00Z"
+title: 'PabloWorld News Update #19981221'
+slug: 'pabloworld-news-update-19981221'
+---
+
+I've done some major work on
+Themble, and the
+page has been completely overhauled to reflect this. There has
+been a couple more updates to the
+bits section, and I've started work on
+the links section. I wanted to
+remind everyone about my
+Trip to
+Europe page too. Well, back to the grindstone, but comments
+can go here.
+
diff --git a/content/posts/1998-12-22-pabloworld-news-update-19981223.html b/content/posts/1998-12-22-pabloworld-news-update-19981223.html
new file mode 100644
index 0000000..33f79fd
--- /dev/null
+++ b/content/posts/1998-12-22-pabloworld-news-update-19981223.html
@@ -0,0 +1,24 @@
+---
+date: "1998-12-22T17:00:00Z"
+title: 'PabloWorld News Update #19981223'
+slug: 'pabloworld-news-update-19981223'
+---
+
+I set up a cron job to automatically update the Change Log section
+of the Themble page every
+two hours. I also convinced/coerced Joe (VhunterD, author of the
+CFG theme making
+HOWTO) into doing the online help for Themble. We should have
+Themble in a useable state sometime in the next couple of monthes.
+
+
+Also, I just wanted to let everyone know that I finally broke
+the 24 hour mark for MP3s. As of right now I have 27 hours,
+12 minutes, and 58 seconds of MP3s. That's 335 songs
+totalling just over 1.5 Gigs. As always, comments,
+questions, money, etc. go
+to me.
+PS The newest
+bits update is my favorite
+one to date.
+
diff --git a/content/posts/1998-12-30-pabloworld-news-update-19981231.html b/content/posts/1998-12-30-pabloworld-news-update-19981231.html
new file mode 100644
index 0000000..8e9b1bc
--- /dev/null
+++ b/content/posts/1998-12-30-pabloworld-news-update-19981231.html
@@ -0,0 +1,25 @@
+---
+date: "1998-12-30T17:00:00Z"
+title: 'PabloWorld News Update #19981231'
+slug: 'pabloWorld-news-update-19981231'
+---
+
+New Years Fun! I've been helping
+Sean set up his new
+iMac. They're pretty nice
+systems. Other than that, I finally installed
+GTK Themes, and everything looks
+*really* cool now. A couple of apps are being a pain in the ass, but
+everything else looks pretty cool (especially
+GIMP). I also installed a couple of
+docked apps for
+E (well, they're actually
+WindowMaker apps, but who cares?).
+Here's
+a quick screenshot (showing off the docked apps and a GTK-themed
+GNOME panel).
+Pretty busy getting ready for the start of school and doing some
+last minute job-hunting, but I'll still read your mail if you
+send it
+here.
+
diff --git a/content/posts/1999-01-05-pabloworld-news-update-19990106.html b/content/posts/1999-01-05-pabloworld-news-update-19990106.html
new file mode 100644
index 0000000..dfe10b6
--- /dev/null
+++ b/content/posts/1999-01-05-pabloworld-news-update-19990106.html
@@ -0,0 +1,32 @@
+---
+date: "1999-01-05T17:00:00Z"
+title: 'PabloWorld News Update #19990106'
+slug: 'pabloWorld-news-update-19990106'
+---
+
+Classes have started, blah, blah, blah. I *really* want
+one of
+these (running
+LinuxPPC, of course).
+I watched
+Apache *and*
+Open Source software. I wasn't
+particularly impressed with MacOS X (or MacOS 10), just 'cause
+Linux does everything (except for
+WebObjects) just as good, if not better, than MacOS X. It is nice to see
+a microkernel succeed though. That means two industry leaders, both
+Apple and
+IBM, are now officially supporting
+Open Source software as a part of their Internet strategies. The
+Microsoft Macintosh software
+rep was pretty funny. He spent a lot of time introducing features in
+the new IE45 for Mac that have been available in other browsers
+for a while -- although there were a few cool features.
+
+In case you hadn't noticed, this is the first time in several years that
+I've actually been *really* excited about Apple technology. Anyways,
+mail goes
+here.
+
diff --git a/content/posts/1999-01-10-pabloworld-news-update-19990111.html b/content/posts/1999-01-10-pabloworld-news-update-19990111.html
new file mode 100644
index 0000000..9fc39e3
--- /dev/null
+++ b/content/posts/1999-01-10-pabloworld-news-update-19990111.html
@@ -0,0 +1,21 @@
+---
+date: "1999-01-10T17:00:00Z"
+title: 'PabloWorld News Update #19990111'
+slug: 'pabloworld-news-update-19990111'
+---
+
+I got a new processor from
+my uncle John.
+It's a P233MMX (oooh, wow MMX, how useful... just kidding), but,
+unfortunately, my piece of crap motherboard doesn't have a 3.5x
+multiplier and the VX chipset apparently does
+bad things
+if you up the bus speed beyond 66 MHz. The short story is that I'm
+stuck at 200MHz, which is still eons better than the Cyrix 133 I
+had previously.
+
+OTT, I set up a quick page for my CS312 class. Check it out
+here. And if you've got
+enough time to check out my page, you've got enough time to
+mail me.
+
diff --git a/content/posts/1999-01-13-pabloworld-news-update-199901114.html b/content/posts/1999-01-13-pabloworld-news-update-199901114.html
new file mode 100644
index 0000000..6f48c0a
--- /dev/null
+++ b/content/posts/1999-01-13-pabloworld-news-update-199901114.html
@@ -0,0 +1,13 @@
+---
+date: "1999-01-13T17:00:00Z"
+title: 'PabloWorld News Update #19990114'
+slug: 'pabloWorld-news-update-19990114'
+---
+
+It's too late (or too early... guess it depends how you look at
+things) for a long update, so I'll be brief. I updated my
+CS312 page, and I just
+read one of the funniest articles I've ever seen on
+The Onion. Check it out
+here.
+
diff --git a/content/posts/1999-01-17-pabloworld-news-update-19990118.html b/content/posts/1999-01-17-pabloworld-news-update-19990118.html
new file mode 100644
index 0000000..8d874da
--- /dev/null
+++ b/content/posts/1999-01-17-pabloworld-news-update-19990118.html
@@ -0,0 +1,19 @@
+---
+date: "1999-01-17T17:00:00Z"
+title: 'PabloWorld News Update #19990118'
+slug: 'pabloworld-news-update-19990118'
+---
+
+The first group project for my CS312 class was to install Linux
+on a machine and set it up, so I put up a quick web page on my
+group's machine. Check it out
+here. I also
+set up a
+Hotline server on this
+machine, but I don't really care all that much about it, so
+I probably won't have it up for more than a few days.
+
+Other than that, I have a couple job interviews this week, and
+hopefully I'll be employed soon. Email goes
+here.
+
diff --git a/content/posts/1999-01-19-pabloworld-news-update-19990120.html b/content/posts/1999-01-19-pabloworld-news-update-19990120.html
new file mode 100644
index 0000000..6cdaf46
--- /dev/null
+++ b/content/posts/1999-01-19-pabloworld-news-update-19990120.html
@@ -0,0 +1,22 @@
+---
+date: "1999-01-19T17:00:00Z"
+title: 'PabloWorld News Update #19990120'
+slug: 'pabloworld-news-update-19990120'
+---
+
+I finally started working on
+Themble again;
+I got the help sub-system working and grabbed a bunch of
+screenshots of all the editors. I'm going to have Joe
+do a dox-based help program -- it should be pretty simple
+to use Themble once we're done. I'm expecting v0.2 of
+Themble to be the first public release. Barring any unforseen
+difficulties, it should be able to create and save a theme.
+Buttons, Global Key Bindings, Internal Actions, Borders,
+Images, Text Classes, Menus, Backgrounds, and Control should all
+be implemented by the time v0.2 rolls around. Okay, my
+sales pitch is done... I also updated my
+CS312 page.
+PS Expect a format change for the PabloTron 2000 sometime soon
+(maybe this weekend if I'm not too busy).
+
diff --git a/content/posts/1999-02-25-new-page-is-online.html b/content/posts/1999-02-25-new-page-is-online.html
new file mode 100644
index 0000000..513fca9
--- /dev/null
+++ b/content/posts/1999-02-25-new-page-is-online.html
@@ -0,0 +1,43 @@
+---
+date: "1999-02-25T17:17:37Z"
+title: New Page is Online
+---
+
+Well, I accidentally deleted the old main page, so I just
+decided to post the new page. I've still got some debugging
+to do 'cause a few links don't work, but that should be
+taken care of by next week. I'm going to concentrate on
+fixing each of the sectionx this weekend too.
+
+Anyways, let me know what you think of the new look.
+Welcome to the New PabloTron (Update #19990225)
+Thu Feb 25 08:23:51 PST 1999
+Well, I just finished the new frontend for the Pablotron 2000.
+I've been pretty busy lately, but here's a quick rundown of
+what's been going on.
+
+
+Thanks to DHS, I know have a
+domain name for this system at
+http://pablotron.dhs.org -- if you're having trouble remembering
+all the cryptic ADSL mumbo jumbo, then now would be a good time to
+update your bookmarks.
+
+
+I've been really busy with school lately, but I've still been working
+on a few things. First of all, Sean and I have been working on something
+called the Corvallis Inquisitor -- but you'll see more of that
+in the future. I set up a third system in my room, but I had to take
+the second system offline because I shorted out the network card.
+You can check out the new system
+here, although it's not really doing anything just yet. Also, I've
+been spending a lot of time making cheezy dance remixes of old-school
+rap songs. Sean and I will have a music repository on our new page, so
+you guys can check out the songs when that page goes public.
+
+
+Well, there's a whole bunch more going on too, but I don't really have
+time to talk about it right now. I'll probably post this page
+tonight after I finish testing the new backend for it. Either way,
+let me know what you think.
+
diff --git a/content/posts/1999-02-25-the-random-dave-barry-is-online.html b/content/posts/1999-02-25-the-random-dave-barry-is-online.html
new file mode 100644
index 0000000..78745fc
--- /dev/null
+++ b/content/posts/1999-02-25-the-random-dave-barry-is-online.html
@@ -0,0 +1,10 @@
+---
+date: "1999-02-25T17:00:00Z"
+title: The Random Dave Barry is Online
+---
+
+I guess the title pretty much says it all. Check it out
+here. Also, the Music
+Repository -- which is far from complete -- is
+available with some songs I made
+
diff --git a/content/posts/1999-02-27-a-whole-bunch-of-new-stuff.html b/content/posts/1999-02-27-a-whole-bunch-of-new-stuff.html
new file mode 100644
index 0000000..9310b1e
--- /dev/null
+++ b/content/posts/1999-02-27-a-whole-bunch-of-new-stuff.html
@@ -0,0 +1,14 @@
+---
+date: "1999-02-27T17:00:00Z"
+title: A whole bunch of new stuff!
+---
+
+I finished moving over the Bits
+and Projects sections last
+night. I still need to finish the About and Links
+sections. Other than that, the
+Music Repository links all work correctly now, and I started
+working on a dumb project (which may or may not work correctly
+in your browser) called
+My Pablo.
+
diff --git a/content/posts/1999-03-03-ooh-look-at-the-pretty-pictures.html b/content/posts/1999-03-03-ooh-look-at-the-pretty-pictures.html
new file mode 100644
index 0000000..1b58b81
--- /dev/null
+++ b/content/posts/1999-03-03-ooh-look-at-the-pretty-pictures.html
@@ -0,0 +1,14 @@
+---
+date: "1999-03-03T17:00:00Z"
+title: Ooh, look at the pretty pictures!
+---
+
+I started work on a Screenshots page. Check it out
+here. I actually
+took
+
+this screenshot a few minutes ago, but
+GIMP is comveniently
+broken since I just upgraded to
+GNOME 1.0.
+
diff --git a/content/posts/1999-03-21-look-at-all-the-new-goodies.html b/content/posts/1999-03-21-look-at-all-the-new-goodies.html
new file mode 100644
index 0000000..054c6d8
--- /dev/null
+++ b/content/posts/1999-03-21-look-at-all-the-new-goodies.html
@@ -0,0 +1,54 @@
+---
+date: "1999-03-21T17:00:00Z"
+title: Look at all the New Goodies!
+---
+
+Sorry it's taken me so long to update, but I've been really
+busy with school and work. Anyways, here's a rundown:
+
Started work on the Botany and Plant Pathology (BPP) Support page.
+It's not ready for the public yet, but it should be pretty neat once it's
+finished.
+
+
Started work on the Enlightenment Documentation Project (EDP) page.
+It's not ready for the public either.
+
+
Started working on a C++ dynamic undirected graph implementation. If
+you don't know what this is, then shame on you for not being a programmer.
+The basic shell is finished, but I haven't implemented traversals,
+path-finding, or searching.
+
+
Made a few more songs. I don't have them up on the
+Music Repository yet, but I'll
+put them up when I get the time.
+
+
I can't believe you're still reading this list.
+
+
+
+The bad news is my other computers (adsl87 and adsl204?) both died :
+the network card on one of them shorted out and started smoking, and
+the hard drive on the second one went south. I'm going to play
+mix and match with the parts and see if I can't get one of them back
+up later this week.
+
+Anyways,
+let me know what you think
+of the new look.
+
diff --git a/content/posts/1999-03-25-and-some-more-news.html b/content/posts/1999-03-25-and-some-more-news.html
new file mode 100644
index 0000000..7ad8555
--- /dev/null
+++ b/content/posts/1999-03-25-and-some-more-news.html
@@ -0,0 +1,23 @@
+---
+date: "1999-03-25T17:00:00Z"
+title: And some more news...
+---
+
+I just fixed a couple of quirks on the page... It actually
+looks great in lynx now. No new computer yet -- the HD is completely
+hosed on the computer formerly known as adsl87. Stay tuned, 'cause
+I still have a few ideas.
+
+
+Other than that,
+Sean
+posted a couple of his songs on
+MP3.com -- you can check them out
+over at the
+MP3.com Official Drum Masta Ron page.
+And.... Tim said
+he has a big suprise -- I assume this means he got a real computer, but
+it's anybody's guess. You should email him and tell him to replace
+this sorry excuse for
+a web page with a real one (like mine).
+
diff --git a/content/posts/1999-04-05-more-and-more-updates.html b/content/posts/1999-04-05-more-and-more-updates.html
new file mode 100644
index 0000000..1c138a0
--- /dev/null
+++ b/content/posts/1999-04-05-more-and-more-updates.html
@@ -0,0 +1,42 @@
+---
+date: "1999-04-05T18:00:00Z"
+title: More and more updates!
+---
+
+I've decided to take the
+Music Repository offline. Click the link to find out why.
+I've been working on the web page for work -- check out the
+preliminary design here.
+
+
+My CS406 page has will be changing
+drastically in the next week or so -- we've decided to do a
+tests on a distributed web server with an SQL backend instead
+of a Beowulf cluster. I'm a little disappointed, but this will
+still be fun (and I'll learn a lot about SQL and running web
+servers to their limits).
+
+
+I started a complete re-write of
+Themble early last week. The
+old version had some interface quirks, and the code was getting
+a bit unwieldy. I've ported and cleaned up the internal
+representation of E data structures from the 0.1.x source, and
+written the parsing (and saving hooks) for my own proprietary
+format. After that I plan on implementing exporting, and
+_then_ the GTK+ interface. This should keep my code more managable,
+and allow Themble to be used as a non-GUI editor also. I've chosen
+to leave the web page as-is for the time being, because I've noticed
+everybody likes screenshots (and I can't exactly produce them with
+0.2.0 just yet).
+
+
+Finally, Tim did get a new computer after all. I hope people
+have been
+emailing him
+so he will change his
+ugly-assed web page. Anyways, school is starting to pick up, and I've
+been working a lot more hours at work recently, so the page may not get
+updated as much anymore. Feel free to send me some
+email, though.
+
diff --git a/content/posts/1999-04-07-helping-with-the-search-for-extra-terrestrials.html b/content/posts/1999-04-07-helping-with-the-search-for-extra-terrestrials.html
new file mode 100644
index 0000000..7d8e307
--- /dev/null
+++ b/content/posts/1999-04-07-helping-with-the-search-for-extra-terrestrials.html
@@ -0,0 +1,27 @@
+---
+date: "1999-04-07T18:00:00Z"
+title: Helping With the Search for Extra Terrestrials
+---
+
+Well, my RC5DES client (for
+distributed.net) is
+finally back up and running, although I still can't join
+Darren's team. For all you security freaks out there, I
+installed and configured PGP --
+you can grab my public key right
+here.
+
+
+The really funny thing is that I'm now contributing to the
+search for extra terrestrials -- ala the distributed approach
+taken by the likes of
+distributed.net and
+all those
+Beowulf clusters out there.
+Courtesy of
+Seti@Home, I
+can now contribute my extra CPU cycles to the cause -- searching
+the skies for the unknown. Okay, it's cheezy and stupid, but you
+gotta admit it's kind of cool. Anyways, it's almost 4am, and I'm
+going to bed.
+
diff --git a/content/posts/1999-04-12-a-blatant-plug.html b/content/posts/1999-04-12-a-blatant-plug.html
new file mode 100644
index 0000000..2648d94
--- /dev/null
+++ b/content/posts/1999-04-12-a-blatant-plug.html
@@ -0,0 +1,37 @@
+---
+date: "1999-04-12T18:00:00Z"
+title: A Blatant Plug
+---
+
+The first couple articles for the Corvallis Inquisitor are
+available in all their uncut glory. One of the articles deals with
+the dreaded
+Year 2000, while the other is
+a guide
+for joining the computing world (the latter being available in
+all it's unformated plaintext glory). You can also check out the
+rough interface that Sean
+(aka A. McGee) has whipped up. I still need to scrape together
+the parts for the permanent Corvallis Inquisitor server, so it'll be
+residing here until then.
+
+Shane and I have decided
+to do our independent study on a
+Beowulf cluster after all. Any
+new information about this will be available
+here sometime real soon.
+
+I'm thinking about building a much smaller CHAOS (Cheap
+Array of Obsolete Systems) cluster right here
+at home. I've contacted the 8J administrator we did the security audit
+for last term in order to see about getting some older computers. More
+on this later.
+
+Finally, the blatant plug you've all been waiting for. Don't forget
+about all the other crazy garbage I've left lying around on Internet.
+Some of the more memorable pages that haven't been banned or
+accidentally deleted are
+my old EFN page and some pictures from my recent
+vacation in
+Europe.
+
diff --git a/content/posts/1999-05-10-the-big-upgrade.html b/content/posts/1999-05-10-the-big-upgrade.html
new file mode 100644
index 0000000..0c79c8f
--- /dev/null
+++ b/content/posts/1999-05-10-the-big-upgrade.html
@@ -0,0 +1,16 @@
+---
+date: "1999-05-10T18:00:00Z"
+title: The Big Upgrade!
+---
+
+I finally took the plunge, and upgraded to
+Red Hat 6.0. So there may be
+some screwed up stuff for a couple of weeks while I get it all
+worked out. A funny thing happened to me last week -- click
+here to learn more.
+
+Other than that, not much is new here. Getting ready for the big
+move next week -- this server may be down for a week or so while
+USWest transfers DSL to the new place, but I don't know for sure
+yet.
+
diff --git a/content/posts/1999-08-27-it-s-all-about-security.html b/content/posts/1999-08-27-it-s-all-about-security.html
new file mode 100644
index 0000000..638671d
--- /dev/null
+++ b/content/posts/1999-08-27-it-s-all-about-security.html
@@ -0,0 +1,18 @@
+---
+date: "1999-08-27T03:53:00Z"
+title: It's all about security...
+---
+
+Well, I've been going off on one of my security and privacy tangents
+again. I decided to set up my PGP stuff again -- you can grab my
+public key here (or you can finger
+pabs@pablotron.dhs.org for the same text). If all of this is gibberish
+to you, you might want to read up on online security and privacy:
+EFF.org,
+PGPi.org,
+and Cryptography.org are all
+good places to start.
+
+Oh yeah, I just posted a new version of Themble at the
+usual place.
+
diff --git a/content/posts/1999-09-22-my-28-8-can-t-take-the-speed.html b/content/posts/1999-09-22-my-28-8-can-t-take-the-speed.html
new file mode 100644
index 0000000..0095e25
--- /dev/null
+++ b/content/posts/1999-09-22-my-28-8-can-t-take-the-speed.html
@@ -0,0 +1,31 @@
+---
+date: "1999-09-22T11:10:00Z"
+title: My 28.8 Can't Take the Speed!!
+---
+
+I added HEIGHT and WIDTH tags for all the images on this main page, so
+it'll load about 10 times faster in Netscape now. I finally redesigned the
+Themble page. Everyone check it
+out and tell me what you think
+(Enlightenment users should
+download Themble and test it out...feedback is appreciated). The new
+Nine Inch Nails album came out yesterday
+-- it's really good.
+
+Other than that, I've been talking a bit with
+Raster about doing an animation
+wrapper for the next version of
+Imlib. I'm hoping that I
+can just hijack the Imlib dynamic loader and write a few wrapper
+structures and functions and give everyone the flaming window borders
+in Enlightenment. Also, Imlib apps could display animated formats
+(eg MPEG, AVI, QT, etc) with minor code changes. I need to rewrite the
+Themble parser and spend some time churning through Imlib2's code, but
+as far as I can tell it shouldn't be _that_ much of a nightmare (oh, how
+wrong I could be... :) ).
+
+
+Finally, sorry about all the broken links. School just started again,
+but I'll fix 'em as soon as I can. Mail goes to
+the usual place.
+
diff --git a/content/posts/1999-10-11-i-like-development-software.html b/content/posts/1999-10-11-i-like-development-software.html
new file mode 100644
index 0000000..022ba23
--- /dev/null
+++ b/content/posts/1999-10-11-i-like-development-software.html
@@ -0,0 +1,24 @@
+---
+date: "1999-10-11T12:11:00Z"
+title: I Like Development Software
+---
+
+Lots of cool new stuff... The newest
+Mozilla build (M10) just came out
+a few days ago, so I downloaded the precompiled binary (the CVS checkout
+is over 100 megs :/), and it's pretty damned smooth. Also,
+Enlightenment DR0.16 just came
+out yesterday (not that it makes any difference, since I use the CVS
+version). Anyways, all you people who have wanted to check it out
+definately should -- there's some really cool new features.
+
+
+I posted my rasterizer and signature generator scripts in the
+Projects
+section, and I'll fix the broken URLs for the other scripts RSN. There
+are a ton of new goodies in the Links section,
+including a link to Sean's page (finally), and a bunch of cryptography
+links. I'm studying some books for a new project I started working on,
+but it probably won't be ready for prime time for several monthes. Mail
+goes here.
+
diff --git a/content/posts/1999-12-26-yule-tide-fun.html b/content/posts/1999-12-26-yule-tide-fun.html
new file mode 100644
index 0000000..d62f304
--- /dev/null
+++ b/content/posts/1999-12-26-yule-tide-fun.html
@@ -0,0 +1,29 @@
+---
+date: "1999-12-26T08:31:00Z"
+title: Yule Tide Fun
+---
+
+Well, I got some great books for christmas, including
+Applied Cryptography,
+GGAD,
+the most amazing graphics programming book I've ever seen, and the
+Hobbit and the Lord of the Rings Trilogy box set.
+
+Astute readers will note that I added both my
+public key and
+resume
+to the features on the left. Updates haven't been as frequent lately
+due to unfortunate outside circumstances, but I should be rolling
+again pretty soon. I also added some extra goodies to the
+Projects section, including an updated
+XOR Crack (now on version 0.2) and more.
+
+Finally, I started using Cascading Style Sheets throughout the
+site. I really like the sans-serif 10pt look, but feel free to
+let me know if you have
+any better ideas.
+
diff --git a/content/posts/2000-02-17-lots-of-cool-new-stuff.html b/content/posts/2000-02-17-lots-of-cool-new-stuff.html
new file mode 100644
index 0000000..97382e2
--- /dev/null
+++ b/content/posts/2000-02-17-lots-of-cool-new-stuff.html
@@ -0,0 +1,27 @@
+---
+date: "2000-02-17T14:00:00Z"
+title: Lots of Cool new stuff
+---
+
+I've submitted a couple of patches for EFM, the new file manager
+for Enlightenment. The
+first one added a dynamic keybindings api, and the second one
+fixed a multiple-login race issue with meta data, and added a
+meta-informaion exclusion directory API (mainly to make the people
+on the mailing list stfu)...
+
+OTT, I managed to lose my hard drive at home, along with a big
+chunk of work I had done on THemble. I haven't set everything
+back up yet, so I'm essentially computer-less for the moment.
+I put together a fairly lengthy Enlightenment Theming HOWTO, but
+I'm still tying up some loose ends, so I don't know when I'll
+post it for the world. I also started on a WindowBlinds ->
+Enlightenment & GTK+ Theme converter -- also nowhere near
+functional.
+
+I discovered an excellent GPLed Mac emulator called
+
+Basilisk II -- it's much nicer (and maybe faster?) than
+Executor, has a bunch of cool features, and (best of all), it's
+completely free.
+
diff --git a/content/posts/2000-03-15-more-fun-than-fun-itself.html b/content/posts/2000-03-15-more-fun-than-fun-itself.html
new file mode 100644
index 0000000..901eed3
--- /dev/null
+++ b/content/posts/2000-03-15-more-fun-than-fun-itself.html
@@ -0,0 +1,36 @@
+---
+date: "2000-03-15T08:00:00Z"
+title: More Fun Than Fun Itself...
+---
+
+I'm in a rush, but here's the news:
+
+
+
Getting a cable modem -- it should be here any day now. This translates
+into a lot more updates by me.
+
Went to a mu-Ziq/Luke Vibrant concert last month in Portland. It was
+awesome.
+
Bought a 10 gig drive from Jeff.
+Combined with my pending fast internet connection, and
+one of the many
+Linux Napster clients, I can already
+feel my MP3 collection growing.
+
Set up a web server for Sean.
+Soon he will be a 31337 H4X0R like me (j/k).
+
I've discovered AbiWord. I've
+used StarOffice and
+WordPerfect, and AbiWord is
+by far the best Linux word processor.
+
Page redesign now pending. Just gotta get a little bit of free time.
+
I managed to fill my home parititon on the web server, so my news
+posting scripts merrily erased all of my old news postings. I restored
+from the last backup, but a few of them are missing. Oh well... No biggie.
+
+Oh yeah, I'm available via ICQ now.
+My UID is 58304995, and my moniker is pabs. Harassment is welcome. I've
+also been spending a lot more time in #e (EFNet IRC nick is also as pabs)
+again lately. The crowd there is great -- I can always find someone who's
+interesting to talk to, or that I can really piss off. Either way, I
+still have fun.
+
diff --git a/content/posts/2000-05-15-witchhunts-lawyers-and-the-riaa-oh-my.html b/content/posts/2000-05-15-witchhunts-lawyers-and-the-riaa-oh-my.html
new file mode 100644
index 0000000..e8e107d
--- /dev/null
+++ b/content/posts/2000-05-15-witchhunts-lawyers-and-the-riaa-oh-my.html
@@ -0,0 +1,80 @@
+---
+date: "2000-05-15T13:09:00Z"
+title: Witchhunts, Lawyers, and the RIAA... Oh My!
+---
+
+Well, I've been working on a bunch of small stuff. I wrote a quick
+bookmark wrapper for feh called cam, you can probably find more info
+over on Tom Gilbert's (aka
+gilbertt on #e) page. Oh yeah, I've also been reading
+Kuro5hin a lot lately; they're
+kinda like Slashdot, only smaller and easier to digest (ie less stupid
+people). Oh yeah, I wrote a neat little auto-refresh JavaScript so
+raster's web cams would updated without a page refresh. Check it out
+on raster's page.
+
+
+I found an
+
+interesting article that seems to ahve been lost in the all the
+RIAA vs. Napster noise. Hey, if you're one of the
+300,000
+people who were banned from Napster, don't let it get you down. You
+can always pay Lars,
+
+assasinate Metallica, or just
+keep
+using Napster anyway. I prefer the latter; the
+RIAA really overprices CDs
+(here
+ is an excellent Slashdot post justifying my position). Either way,
+this whole thing is silly; the RIAA and their lawyers will eventually
+put Napster down. Unfortunately, they're fighting a losing battle:
+Hotline (and the unofficial
+Linux client),
+FTP, and ICQ are here to stay, and
+peer-to-peer search solutions are on the way (check out
+Gnutella,
+Freenet, and
+OpenNAP
+if you're interested). And before I get a bunch of junk mail, this is
+__not__ about piracy:
+piracy
+is theft, rape, and murder on the high seas,
+not exchanging computer data (I'll reserve the discussion about
+the effect of mass marketing memes effecting the connotation and
+eventually the denotation -- as witnessed by the second definition under
+the first result returned by that link -- for another day). I plan
+on writing a paper about
+this soon (I need to do somehting to the Bits page
+or remove it from my navigation bar), but the gist of the situation is
+this: people have been exchanging music via cassette tapes for almost
+20 years with little or no intervention from the RIAA (ie they have
+_not_ sued the makers of high-speed CD-to-cassette dubbing equipment),
+yet they prop up a cookie-cutter
+band with a lot of mind-share due to a musical fad from over 15 years
+ago and use them to attack
+a method of sharing music which
+is statistically insignificant when compared against to the method
+which the RIAA is implicitly condoning. Why? Because greed is a
+powerful motivator, the public doesn't really understand what's going
+on, and big corporations don't like technological innovations fucking
+with their distribution channels. Whew, this news post is getting a
+bit hefty, so I'll stop there.
+
+
+
+This Slashdot article is a pretty funny discussion about Computer
+Support people: I like
+
+this comment, but
+
+this one takes the cake. In case anyone is interested, I
+added a Screenshots page, and I plan on
+adding a new shot every week or so. Speaking of keeping things up to
+date, the Projects page is due up for an
+overhaul. I have a ton of new goodies to add, and none of my active
+projects are currently up. Basically, I've been spending all my time
+writing code, and
+playing Quake 3 Arena.
+
diff --git a/content/posts/2000-06-01-two-updates-one-month.html b/content/posts/2000-06-01-two-updates-one-month.html
new file mode 100644
index 0000000..496a6d7
--- /dev/null
+++ b/content/posts/2000-06-01-two-updates-one-month.html
@@ -0,0 +1,45 @@
+---
+date: "2000-06-01T13:00:00Z"
+title: Two Updates, One Month!
+---
+
+It's unbelievable, but true. I guess I'm trying to be cool like
+Tom Gilbert and update my
+page more than
+Tim Finch (sorry Tim -- you knew it was coming :P). I finally
+updated the Projects page; check it out for
+some more recent projects I've been involved in, and some more
+Linux- and UNIX-related scripts and programs.
+
+
+I decided to set up
+a temporary Quake 3 Arena Demo
+server on my home computer. Id software does a checksum comparison
+on the PK3 file before loading the demo server, so I couldn't modify
+any of the bots or levels, but I did hack together some interesting
+demo server modifications with some shell-trickery and a quick Perl
+script. Essentially, Quad Damage does _no_ damage (because quad is
+for losers), getting armor temporarily doubles gravity or changes the
+knock-back on certain weapons, and getting mega-health halves
+gravity (which wreaks havoc when you're playing Q3DM17). Again, I
+don't know how often it'll be active, but here's the info in case
+you're interested:
+
+
+
+
Server:
Pablo's Wacky Fun House
+
Host:
pabs.dhs.org
+
Info:
Q3D-DM: Q3DM7, Q3DM17
+
+
+
+Let me know if you've got any suggestions or are interested in my
+dedicated server scripts (eventually I'll post 'em to the Projects
+section, but first I need to clean up and comment the code).
+
+
+I think I'm headed to the
+Linux World Expo in
+San Jose this August. I don't have a place to stay yet, but travel
+and financing seems to be covered. My first LWE -- exciting!
+
diff --git a/content/posts/2000-06-06-pablotron-org.html b/content/posts/2000-06-06-pablotron-org.html
new file mode 100644
index 0000000..999f026
--- /dev/null
+++ b/content/posts/2000-06-06-pablotron-org.html
@@ -0,0 +1,15 @@
+---
+date: "2000-06-06T22:00:00Z"
+title: Pablotron.org ??
+---
+
+I registered pablotron.com and
+pablotron.org -- coming soon
+to your web browser! Oh yeah, check out
+DH Consulting for some
+awesome prices on domain names.
+
+Oh yeah, and I created an account on
+Advogato. You can view my personal page
+here.
+
diff --git a/content/posts/2000-06-06-quick-update.html b/content/posts/2000-06-06-quick-update.html
new file mode 100644
index 0000000..1f6c45c
--- /dev/null
+++ b/content/posts/2000-06-06-quick-update.html
@@ -0,0 +1,20 @@
+---
+date: "2000-06-06T21:30:00Z"
+title: Quick Update
+---
+
+I finally updated the Links page. Right now
+I'm testing out a new news submission script that I wrote, otherwise
+I probably wouldn't be posting.
+
+The Quake 3 Server on my home machine is temporarily down. I had to
+do some work on it, and I just haven't bothered to put it back up yet.
+Let me know if you're interested in trying it out.
+
+In case anyone doesn't know yet, I've offically stopped working on
+Themble; Enlightenment 0.17
+will have a built-in theme editor, so there's no need for me to do
+Themble any more. If anyone is interested, I might still polish it
+up and release it as an E16 theme editor, but that's only until E17
+gets near completion.
+
diff --git a/content/posts/2000-06-09-pablotron-updates-and-more.html b/content/posts/2000-06-09-pablotron-updates-and-more.html
new file mode 100644
index 0000000..e2f834d
--- /dev/null
+++ b/content/posts/2000-06-09-pablotron-updates-and-more.html
@@ -0,0 +1,21 @@
+---
+date: "2000-06-09T14:40:00Z"
+title: Pablotron Updates and More!
+---
+
+Well the pablotron.org
+domain is resolving now, but the
+pablotron.com domain is
+still giving me grief. Thanks to term- and epoch in #e for helping
+me get fix all the problems -- i should jsut have to wait for the
+changes to propagate now. :)
+
+I made a few changes to the About page. I've
+never felt too comforatble writing those things, so I just kinda
+updated what I had and left it.
+
+Oh yeah, the quake server is temporarily down. I'll put it back up
+in a couple of days at a new address: quake.pablotron.org.
+That's all for today. School is out for summer, and I'm gonna go
+hang out with my graduate friends before they leave town.
+
diff --git a/content/posts/2000-06-11-links-are-fun.html b/content/posts/2000-06-11-links-are-fun.html
new file mode 100644
index 0000000..278fd93
--- /dev/null
+++ b/content/posts/2000-06-11-links-are-fun.html
@@ -0,0 +1,19 @@
+---
+date: "2000-06-11T14:27:00Z"
+title: Links are Fun
+---
+
+Well, Boris^ put up some
+funny webcam pics that Tom
+Gilbert took. The gallery is dedicated to me. Check it out
+here.
+
+
+I updated the Links page. Mainly I just added
+a lot of the pages that I have bookmarked, and some that I regularly
+visit, but didn't have on the links page. OTT, not much going on.
+The pablotron.com domain works
+around here now, although I've heard that people are still having
+problems on the other side of the Atlantic :/. Okay, well that's all
+for right now.
+
diff --git a/content/posts/2000-06-19-advogato-rhymes-with-avacado.html b/content/posts/2000-06-19-advogato-rhymes-with-avacado.html
new file mode 100644
index 0000000..c7aad4a
--- /dev/null
+++ b/content/posts/2000-06-19-advogato-rhymes-with-avacado.html
@@ -0,0 +1,20 @@
+---
+date: "2000-06-19T14:30:00Z"
+title: Advogato Rhymes with Avacado
+---
+
+I just posted a huge rant
+on my advogato page
+regarding the major PITA it's been dealing with Apple on this whole
+netwokring problem. I also briefly go over the new features I added
+to feh this weekend
+(giblet, richlowe, and I all worked on it for over 12 hours straight --
+there's a bunch of new goodies now), a quick update on the progress of
+EWL. OTT, I got into a big conversation about
+the MS antitrust trial last night while playing
+Q3A, and out of it I ended up
+offering to write some CGIs for a clan server. NOt quite sure how that
+one worked out, but I'll post the url here if it's okay with the guy
+I'm writing 'em for (don't want to generate
+any unwanted traffic for him).
+
diff --git a/content/posts/2000-06-26-10k-is-down.html b/content/posts/2000-06-26-10k-is-down.html
new file mode 100644
index 0000000..952c368
--- /dev/null
+++ b/content/posts/2000-06-26-10k-is-down.html
@@ -0,0 +1,14 @@
+---
+date: "2000-06-26T12:58:00Z"
+title: 10k is Down
+---
+
+I forgot to mention that the 10k server is down for the week.
+Sean and Joe moved to a new apartment, and they haven't gotten
+cable or DSL hooked up yet. Even when it is ready, it'll still
+take at least a day for the DNS changes to propagate.
+
+Oh yeah, and the Crumbly Goodness server (at
+quake.pablotron.org) is back up again (thanks Alfred!). Log
+in and let us know what you think.
+
diff --git a/content/posts/2000-06-26-feh-fun.html b/content/posts/2000-06-26-feh-fun.html
new file mode 100644
index 0000000..b28e0e0
--- /dev/null
+++ b/content/posts/2000-06-26-feh-fun.html
@@ -0,0 +1,36 @@
+---
+date: "2000-06-26T12:03:00Z"
+title: Feh Fun
+---
+
+Tom finally released an
+updated version of feh.
+The new version includes my arbitrary rotation routines, button
+customization routines, a couple custom menu backgrounds, and my
+feh webcam wrapper (called cam). It requires imlib2 from
+E cvs.
+
+I seem to have horribly broken EWL
+sometime in the last couple of days. The
+latest snapshot
+still compiles fine, and I can't find anything in the diff that would
+be causing the SEGV I'm getting. So this is either memory corruption
+from a silly mistake by me, or something silly I did in the last
+couple of days. Needless to say, I won't be updating the snapshot
+until I squash this one out.
+
+Oh yeah, and I played around a bit with
+the InfoBot IRC bot -- it's
+pretty smooth. They still need to some work on the user
+authentication (at present it's non-existant, unless you edit the
+code by hand), and a it needs a few other goodies (like maybe a
+fallback server, and more tolerant key matching).
+
diff --git a/content/posts/2000-07-06-craziness-everywhere.html b/content/posts/2000-07-06-craziness-everywhere.html
new file mode 100644
index 0000000..dc0f599
--- /dev/null
+++ b/content/posts/2000-07-06-craziness-everywhere.html
@@ -0,0 +1,56 @@
+---
+date: "2000-07-06T13:23:00Z"
+title: Craziness Everywhere
+---
+
+EWL is coming along nicely. I finished porting
+the Imlib2 wrapper from
+feh, and I cleaned it
+up and added a few new calls along the way. Basically, it eliminates
+the silly context-based API and converts Imlib2 loading errors to
+strings. :) Oh yeah, the EwlImage and EwlImLayer rendering and layout
+APIs are complete, along with ewl_widget_render_*(), which means that I
+just need to port EwlWindow to the new EwlContainer setup, and things
+will start to fall into place. Now would be a good time to check out
+the latest tarball and
+give me API suggestions before it's set in 1.0 stone.
+
+
+I have a new layout for the page functioning -- a lot of you have
+already seen it, thanks to the post by
+Boris' to the e-develop
+mailing list. A convenient 600% increase in my web traffic for 48
+hours (wow, I didn't know I was so popular :P). It will be up
+soon enough -- I just have to find a little bit of free time to finish
+the graphics.
+
+
+Work has been crazy. We're losing our admins (Netware and UNIX), and
+management isn't moving particularly fast to replace them. This
+means my work load is going to increase dramatically, since Alfred
+and Robert are gone until September. Ouch.
+
+
+The Crumbly Goodness server (at quake.pablotron.org is down)
+again, and it could be quite some time before it's back up. The box
+is at Alfred's house, and he's in Hong Kong. Fortunately he's using
+Win2k,
+so none of us can administer it remotely, or kill the server
+and restart it when it goes nuts. Apparently people have been ICQing
+him, letting him know it's down, and he contacts his roommate, who
+then restarts the Q3A server, but that's just silly. Real Operating
+Systems provide full access to the system via a command line -- it's
+the only way to cater to virtually every operating system in existence.
+Looks like Redmond loses 10
+points; Berkley and
+Helsinki each gain 1000.
+
+
+I'm about done, but I should mention
+this cool web page (brought
+to you courtesy of Siobahn from #e). Also, be the first kid on your
+block to get an idiotic email address: details are
+here and
+here (thanks to
+Filgy and RADKade1).
+
diff --git a/content/posts/2000-07-26-ewl-updates.html b/content/posts/2000-07-26-ewl-updates.html
new file mode 100644
index 0000000..11ba6ff
--- /dev/null
+++ b/content/posts/2000-07-26-ewl-updates.html
@@ -0,0 +1,70 @@
+---
+date: "2000-07-26T10:42:00Z"
+title: EWL Updates
+---
+
+I've been working on EWL a lot lately -- in
+fact
+giblet and
+richlowe have
+been helping too. Rather than go over all the details, I went ahead
+and modified my update script so it posts the ChangeLog. You can
+check that out here. If you
+want to try out the snapshot, _please_ read the ChangeLog -- it's
+the only accurate documentation that exists ATM, and it has a lot
+of useful tips (for example, running src/create_personal_preferences.sh
+so EWL doesn't SEGV on startup). No, there isn't any rendering yet,
+yes there is rudimentary theme support.
+
+I moved all my screenshots from
+my old EFN page to the
+screenshots page, and I preserved the
+captions and added some updated commentary. There are still a
+lot of things strewn across various accounts that I'd like to move
+onto Pablotron, but that will have to wait until after a redesign
+(yes, it will happen eventually). It'll be SQL queries all over
+the place, and I'd like to make it themable, but we'll see what
+happens. I actually had a working themable PHP sample page, I don't
+think I'm going to go with that implementation after all.
+
+Our cable modem got cut off last week. Apparenly I was $11 short
+on the bill or something. Anyways, I didn't realize that it was
+about to get cut off, and I payed the entire bill with a credit
+card within 12 hours of the service being shut off, but for some
+reason @Home told me it would take 72 hours to turn it back on.
+That's fine, except it took twice that long, and I had to call at
+least 5 times before I got a "priority ticket" or some crap. I
+could go on, but Sean wrote a really nice summary of what dealing
+with @Home customer service is like over on
+the 10k page. Unfortunately,
+they're problems still aren't resolved, so you can't reack 10k
+at the moment.
+
+Kuro5hin, one of my favorite
+news pages (ie one of the few pages I read on a daily basis), was
+shut down because of DoS attacks on the anonymous story submission
+queue. This really sucks. It wasn't even a creative or complicated
+attack -- the non-computer analogy would be vandalizing a public
+restroom, only this is worse. The people running Kuro5hin were all
+volunteers who dedicated their time to the page because they
+enjoyed working on it, not because they were being payed. I liked
+the stories on kuro5hin better than "the other site" (how everyone
+on kuro5hin referred to
+Slashdot), and the comments
+were usually more interesting. Supposedly, they're going to take
+a break, remove the anonymous submission, and return after a month,
+but things like this are incredibly frustrating. DoS is stupid.
+It's not l33t, and you're not a cool computer h4x0r if you know how
+to run a smurf daemon on your grandma's iMac.
+
+Finally, seeing as how I don't have any interesting photos to post
+(besides this picture of
+Gnea), I'll direct you towards Tom Gilbert's vacation photos. His
+sister is pretty good looking. :) Check her, um I mean his vacation
+photos, out
+here (I'm just kidding, Tom. Although I do wish everyone in #e had dressed
+up in monkey suits as a suprise when you got back).
+
+
+Anyways, more later....
+
diff --git a/content/posts/2000-07-27-fun-with-spam.html b/content/posts/2000-07-27-fun-with-spam.html
new file mode 100644
index 0000000..472ba2a
--- /dev/null
+++ b/content/posts/2000-07-27-fun-with-spam.html
@@ -0,0 +1,24 @@
+---
+date: "2000-07-27T11:10:00Z"
+title: Fun with Spam!
+---
+
+Nobody likes Spam, and noone
+seems to have an effective and gratifying solution. Sure, you can
+install Procmail, or use a
+filtered mail service like MsgTo
+-- but where's the fun in that? Do what I'm doing --
+send your spam to Tom
+Gilbert. As effective as procmail, but 10 times as
+gratifying!
+
+I'm pretty busy today, but here's a few quick things to read:
+The Bill of Rights Lite and
+The Inflation Calculator.
+I'm sure you've read about the preliminary ruling against Napster (and
+the upcoming RIAA boycotts),
+and I'm assuming you know my
+position, so here's a funny parody called the
+Open Letter From Metallica. It's a bit dated, but an amusing read
+anwyays.
+
diff --git a/content/posts/2000-07-28-will-the-real-richlowe-please-stand-up.html b/content/posts/2000-07-28-will-the-real-richlowe-please-stand-up.html
new file mode 100644
index 0000000..b3a1281
--- /dev/null
+++ b/content/posts/2000-07-28-will-the-real-richlowe-please-stand-up.html
@@ -0,0 +1,20 @@
+---
+date: "2000-07-28T08:10:00Z"
+title: Will the Real richlowe Please Stand Up?
+---
+
+In the debate recently over whether or not
+this
+is a real picture of
+richlowe,
+KainX has provided us with some
+new pictures of Tom Gilbert
+(aka giblet). Check them out
+here.
+
+In other news, the theme db loading stuff for ewl works now.
+Widgets merely call ewl_theme_get_datatype() (where datatype is string,
+int, float, imlayer, etc), and the theme engine will search for
+the correct theme db in the path. More information is available in
+the ChangeLog.
+
diff --git a/content/posts/2000-07-31-paint-me-green-and-call-me-a-pickle.html b/content/posts/2000-07-31-paint-me-green-and-call-me-a-pickle.html
new file mode 100644
index 0000000..f01be9f
--- /dev/null
+++ b/content/posts/2000-07-31-paint-me-green-and-call-me-a-pickle.html
@@ -0,0 +1,10 @@
+---
+date: "2000-07-31T15:33:00Z"
+title: Paint Me Green and Call Me a Pickle!
+---
+
+All the sections except for Code,
+Search, and Gallery should
+be working okay. Granted, a few of them still look like crap, but I'll
+work on that tomorrow.
+
diff --git a/content/posts/2000-07-31-welcome-to-the-new-and-improved-pablotron.html b/content/posts/2000-07-31-welcome-to-the-new-and-improved-pablotron.html
new file mode 100644
index 0000000..8309bc2
--- /dev/null
+++ b/content/posts/2000-07-31-welcome-to-the-new-and-improved-pablotron.html
@@ -0,0 +1,9 @@
+---
+date: "2000-07-31T14:27:00Z"
+title: Welcome to the new and improved Pablotron
+---
+
+I finally got off my duff and finished redesiging parts of the page.
+Right now most of the sections are still broken, but that will change
+tonight at tomorrow. Comments are appreciated.
+
diff --git a/content/posts/2000-08-01-it-s-all-one-big-conspiracy.html b/content/posts/2000-08-01-it-s-all-one-big-conspiracy.html
new file mode 100644
index 0000000..6cf9915
--- /dev/null
+++ b/content/posts/2000-08-01-it-s-all-one-big-conspiracy.html
@@ -0,0 +1,23 @@
+---
+date: "2000-08-01T10:09:00Z"
+title: It's All One Big Conspiracy
+---
+
+Tom Gilbert, a Chemistry
+major living in the UK. Gilbert
+Hall, the chemistry department at my university. Coincidence?
+I think not.
+
+
+I finally got EWL rendering. Not very fast,
+but it works (at least for the window background image). Check the
+ChangeLog for more information.
+
+
+The images are broken on the page, but I still think
+this
+study is an extremely interesting look at human nature. Oh yeah,
+for those of you who don't remember how bad Mosaic was,
+this page should remind you
+real fast.
+
diff --git a/content/posts/2000-08-03-cows-everywhere.html b/content/posts/2000-08-03-cows-everywhere.html
new file mode 100644
index 0000000..c02222f
--- /dev/null
+++ b/content/posts/2000-08-03-cows-everywhere.html
@@ -0,0 +1,20 @@
+---
+date: "2000-08-03T12:58:00Z"
+title: Cows everywhere!
+---
+
+Just a quick one: This post
+on Slashdot is one of the funnier computer analogy jokes I've seen in
+a while (the top one being the infamous airline analogies).
+Also, be sure to read
+this short article
+by Neil Stephenson (the author of
+Cryptonomicon,
+Snow Crash, and
+Diamond Age).
+Finally, (and I haven't had time to read this yet), but it looks like good
+ol' prez Billy is _still_ extending the national state of emergency on
+the Encryption Export regulations. Read about them
+here.
+
diff --git a/content/posts/2000-08-08-a-few-updates-and-a-vacation-for-me.html b/content/posts/2000-08-08-a-few-updates-and-a-vacation-for-me.html
new file mode 100644
index 0000000..09ca3f0
--- /dev/null
+++ b/content/posts/2000-08-08-a-few-updates-and-a-vacation-for-me.html
@@ -0,0 +1,58 @@
+---
+date: "2000-08-08T08:36:00Z"
+title: A Few Updates and a Vacation For Me
+---
+
+I fixed the layout problems on the Links and
+Screenshots pages. I also added some
+more contact info to the Feedback page.
+
+
+I committed EWL to CVS finally.
+Tom Gilbert added the
+autoconf/make goodies for me. You can get it from CVS by following
+the instructions on the
+Enlightenment CVS
+page, and adding "ewl" to the list of modules to check out. See
+my Download page for some Expect scripts
+suitable for automatically updating CVS. Right now, EWL can
+open a window, pack a button into a box, pack the box into the
+window, and attach callbacks to all the widgets. Theming and
+event propagation and a slew of other things work correctly, but
+rendering is slow and layout is buggy. Unfortunately, I won't have
+time to work on EWL until I get back -- from LA!
+
+
+That's right, I'm headed to Los Angeles for a week. I'm leaving
+tomorrow morning, and I'll be back on the 16th. I'll try and find
+time to check my email, but I know that my sister's internet access
+is probably pretty limited.
+
+
+I don't have a Linux Advocasy page up just yet, but I was going to
+put it right underneath the Uptimes list (on the left sidebar).
+Fortunately for me, a power outage completely destroyed the uptimes
+for my web server and my work machine. The previous uptimes were
+48 days, 73 days, and 37 days (home, web, and work, respectively).
+The Advocasy page will still go up eventually, but I was hoping to
+have a >100 day uptime to entice people. Oh well.
+
+
+I finally got around to installing
+Galeon, a
+GNOME browser that uses the Gecko (eg Mozilla) rendering engine, but
+doesn't have all the cruft (eg XUL, news and mail readers, etc etc).
+Wow! It's dependencies are a bit heavy
+(Mozilla M16 or later -- I'm
+using the latest nightly build) and
+Helix GNOME, but Galeon
+itself is small (both memory and disk space wise) and much faster
+than Mozilla.
+
+
+Finally, I guess Tom is
+telling the rest of the world about his new Linux programming job:
+Not only is he going to be coding for $$ now, but he's also getting
+a laptop and moving to London. Good work dude :). Okay, I'll see
+everyone in a week.
+
diff --git a/content/posts/2000-08-17-cali-and-more.html b/content/posts/2000-08-17-cali-and-more.html
new file mode 100644
index 0000000..6d28e85
--- /dev/null
+++ b/content/posts/2000-08-17-cali-and-more.html
@@ -0,0 +1,58 @@
+---
+date: "2000-08-17T12:04:00Z"
+title: Cali and More
+---
+
+Wow, too much fun stuff to share in one update, but I'll do the best I
+can. First of all, I'm back from my vacation in California, and I
+had a lot of fun. Pictures will be up soon (I have to find 7 more
+pictures to take, then I'll have the roll developed and scanned). My
+sister Erin works at a frozen yogurt shop in Malibu, and I sat through
+a couple of her shifts. They get celebrities in there every day! I was
+only in there a few days, and I saw
+Candice Cameron,
+Tom Hanks, and
+Cher!
+Apparently, I just missed Adam Sandler
+-- he came in a few hours after we left one day. I learned a few
+things too:
+
+
No matter how bad the water is in your town, it will invariably
+ be worse wherever you travel.
+
In person, celebrities aren't obnoxious, flamboyant, or loud --
+ although the rest of us seem to be all of these things when a
+ celebrity is nearby.
+
Just because eating large quantities of ice cream and frozen
+ yogurt sounds like fun as a kid, doesn't mean it's good for you
+ or your digestive tract as an adult.
+
+
+I made a few quick page updates today. The Downloads
+page now has descriptions for most items, and I started wokring on
+a SQLized version of the news (as
+opposed to the home-grown db format I'm using at the moment). You can
+monitor it's progress by checking this
+page. Yes, this means you'll be able to search the page soon (at
+least the news section). Oh yeah, I posted my
+Netscape to Galeon bookmark
+converter It's still a bit buggy, but it's bound to work better
+than what Galeon is offering (eg a phat coredump in your home
+directory). I put a basic shell for the code section up
+here, although it's basically
+completely empty ATM. I've had several requests for design tips --
+I'd appreciate it if those of you who have emailed me would let me know
+what you're interested in seeing on the code page. Specifically, should
+I just dump all the scripts and backend, or would you like a bit of
+a tutorial as well? Finally, the uptimes (on the left sidebar) are now
+completely automated, I updated the EWL section on the
+Projects page to say that it's now in
+CVS, and the 404 page now works again.
+
+
+OTT x5rings and
+giblet added a few things
+to EWL while I was gone. Oh yeah, and Jeff
+(my roommate) has a ridiculously powerful level 50-something
+Necromancer in Diablo II now. Okay, there's more going on, but
+I've gotta run -- I'll update again when I have some time.
+
diff --git a/content/posts/2000-08-17-code-page-is-up.html b/content/posts/2000-08-17-code-page-is-up.html
new file mode 100644
index 0000000..c8d6da7
--- /dev/null
+++ b/content/posts/2000-08-17-code-page-is-up.html
@@ -0,0 +1,15 @@
+---
+date: "2000-08-17T21:01:00Z"
+title: Code Page Is Up
+---
+
+Just a quick note to everyone who was waiting -- the
+Code page is up and running. Even if you
+aren't really interested in the backend, you might be interested
+in the quick dynamic HTML and SSI navication script I hacked
+together. You can see it in action by viewing some SSIs on the
+Code page. I also added a bunch of stuff to the
+Download page, and switched it to a
+CGI instead of a script-generated page. You can still download
+the old make.pl file here.
+
diff --git a/content/posts/2000-08-18-bugfixes-and-the-search-page.html b/content/posts/2000-08-18-bugfixes-and-the-search-page.html
new file mode 100644
index 0000000..ea911ca
--- /dev/null
+++ b/content/posts/2000-08-18-bugfixes-and-the-search-page.html
@@ -0,0 +1,12 @@
+---
+date: "2000-08-18T08:47:00Z"
+title: Bugfixes and the Search Page
+---
+
+Okay, I added a few fixes for the Code page, and
+I put up a hacked Search page. Right now it uses
+Google's SiteSearch feature,
+which isn't quite what I want, but it'll have to suffice until I
+roll my own. You can check out the new search page
+here.
+
diff --git a/content/posts/2000-08-21-cam-page.html b/content/posts/2000-08-21-cam-page.html
new file mode 100644
index 0000000..2a1289c
--- /dev/null
+++ b/content/posts/2000-08-21-cam-page.html
@@ -0,0 +1,49 @@
+---
+date: "2000-08-21T07:04:00Z"
+title: Cam Page
+---
+
+Jeff and I put up a Webcam page. Check it out here.
+Also, I added security checks to my code navigation CGI -- If someone
+is trying to exploit the CGI, they end up looking at
+this page
+(IE users crank the volume for a special treat).
+
+
+On a related note, I added a few new options to
+Cam this weekend
+(you'll need CVS feh -- see the
+Enlightenment CVS Page
+for more information). You can now save cam images (with the -k or
+--keep-imagse option), and open multiple cams with one command (eg
+cam jenni dawn giblet raster). I also worked out a bunch of quirks
+in EWL (again, also in CVS). See the ChangeLog included with the
+CVS module for more information.
+
+
+
+Pablotron will be relocating soon. I have the new hardware and an IP,
+but I still need to install linux and set the bad boy up. This means
+we get to play the DNS game of fun again! I'll probably keep this
+server going for a few weeks just to make sure everone's DNS gets
+updated.
+
+
+Oh yeah, Emmanuel Goldstein (aka the guy who runs
+2600) posted his response to the
+DeCSS
+decision. Read it here.
+Also,
+here's
+a rare gem: an interesting post on
+Slashdot regarding this article
+(and this
+one too). The legal system in this country makes my head hurt. What
+ever happened to common sense?
+
+
+Finally, I stumbled across this page completely on accident. Who
+would have thought that Leo from the
+Screen Savers reads
+attrition.org?
+
diff --git a/content/posts/2000-08-23-links-updates.html b/content/posts/2000-08-23-links-updates.html
new file mode 100644
index 0000000..159c62c
--- /dev/null
+++ b/content/posts/2000-08-23-links-updates.html
@@ -0,0 +1,19 @@
+---
+date: "2000-08-23T14:45:00Z"
+title: Links Updates
+---
+
+Just a quick summary of changes I've made on the site... I fixed
+a bunch of links on the Links page, and added
+a few new ones. Also, I made minor corrections to the
+Feedback, and Download
+pages. CSS1 compliant browsers (read: not Netscape) now underline
+links on mouse-over. I added a Site Map page, which has brief
+descriptions of everything on the sidebar. Check it out
+here.
+
+I got a few Paul Oakenfield and Digweed & Sasha mp3s -- wow!
+I'd heard of both of 'em, but never actually sat down and listened
+to any of the songs. They're both pretty damn good. Alright,
+that's all for today.
+
diff --git a/content/posts/2000-08-24-evas-rocks-my-world.html b/content/posts/2000-08-24-evas-rocks-my-world.html
new file mode 100644
index 0000000..3aefbbc
--- /dev/null
+++ b/content/posts/2000-08-24-evas-rocks-my-world.html
@@ -0,0 +1,31 @@
+---
+date: "2000-08-24T18:56:00Z"
+title: Evas Rocks My World
+---
+
+I guess Jeff has been browsing Pablotron too much lately -- he
+directed me towards a spelling error and broken link on the
+Cam page. Thanks dude.
+
+
+As for EWL, I've been making misc
+changes here and there. I just posted a fresh snapshot of the
+EWL CVS tree. You can download it
+here, or read
+the ChangeLog here. Due to
+the problems I've had with the rendering system, I've decided to
+migrate the rendering system to Evas,
+raster's new ubercool
+canvas library. In addition to removing the rendering concern
+(and making it faster than I ever could have), this also adds
+basic GL rendering support to EWL (read: much faster). I'm getting
+up to speed with Evas by writing few test applications, but I
+plan on making the transition this weekend.
+
+
+Finally, I encourage anyone who hasn't done so to check out
+Geist,
+Tom Gilbert's new image layout program. I've contributed a
+few small snippets of code, but him and tillsan have done most
+of the work. I'm pretty impressed.
+
diff --git a/content/posts/2000-08-28-monkeys-on-crack-and-other-oddities.html b/content/posts/2000-08-28-monkeys-on-crack-and-other-oddities.html
new file mode 100644
index 0000000..9d9d53f
--- /dev/null
+++ b/content/posts/2000-08-28-monkeys-on-crack-and-other-oddities.html
@@ -0,0 +1,53 @@
+---
+date: "2000-08-28T08:12:00Z"
+title: Monkeys on Crack and Other Oddities
+---
+
+So I finally got off my ass and joined the Crack Monkey mailing
+list. Wow, it's a lot of fun! It's basically a bunch of losers
+like myself, spending their time coming up with crackpot ideas and
+bashing each other. For example, right now the list is debating
+the feasability of a nitrogen-filled, high-pressure nightclub
+(ie you could have music really loud without bothering the neighbors).
+You can check out the Crack Monkey site
+here (not recommended for
+Windows users -- the site will lock up your computer. You have
+been warned).
+
+
+I have my test Evas app working pretty well -- I just need to finish
+up some graphics, hten I'll post it for abuse on the
+Download page. I also fixed one little
+tiny bug in the evas_set_color() routine -- but other than that
+Evas has been pretty solid for me. I'm getting some wierd color
+flashes in my test app, but I'm almost positive sure it's my setup
+(XF4.0, TNT2 w/ nv module, Mesa 3.2 -- I think mesa3.2 is b0rked)
+and not Evas.
+
+
+As for this page, I finally added file sizes and MD5 checksums to
+the Download page, but I'm not sure if
+they're gonna stay -- I don't know if I like the look. I also added
+a few new links to the Links page -- for some
+reason I have a hard time keeping the links page up to date)..
+
+
+Joe pointed me towards
+this
+review of the Nintendo GameCube, which reminded me about
+this article that I
+read last week. I should mention that I'm biased; IMO ATI and S3
+are my two least favorite video chipset vendors -- the latter because
+they whore their crappy embedded chipsets out to every OEM on the
+planet (including Apple), and the latter because I am actually using
+the monstrosity that is S3 ViRGE at home. Of course, I also don't
+really care about console systems any more -- the last one I bought
+was the Sega Saturn, and that was only to play Virtua Fighter 2. But
+I haven't even touched that for at least 6 months. My TV broke, so
+I loaned out my VCR, and that was the last contact I've had with
+console systems, video rentals, and cable TV. Internet keeps me
+entertained now. Anyways, if I was interested in a console system,
+it would probably be the
+PlayStation 2,
+not the Dolphin.
+
diff --git a/content/posts/2000-08-30-mutt-fetchmail-oh-my.html b/content/posts/2000-08-30-mutt-fetchmail-oh-my.html
new file mode 100644
index 0000000..d88ba41
--- /dev/null
+++ b/content/posts/2000-08-30-mutt-fetchmail-oh-my.html
@@ -0,0 +1,59 @@
+---
+date: "2000-08-30T20:23:00Z"
+title: Mutt, Fetchmail, Oh My!
+---
+
+So I'm attempting to make the transition from
+PINE to
+Mutt. Of course, in order to do
+that I had to set up
+Fetchmail, and
+make a few minor changes to my existing
+Procmail setup. I grabbed
+the existing muttrc file from
+Tom Gilbert's page and
+spent some time tweaking it a bit, and I think I've got things
+kind of working (actually, I just sent my first non-test email
+about three minutes ago). Here's what I think so far: I really like
+Mutt a lot -- it's packed with features, completely configurable,
+and not actually that hard to get set up. As for fetchmail, it's
+GUI config program and config language are almost completely idiot
+proof. The GUI probed my IMAP server and set everything up for me,
+and it even caught a few stupid mistakes I made.
+
+
+Now the cons: I've been using PINE for over 6 years, and switching
+to new keybindings is a bit of a jolting experience. My setup for
+PINE wasn't perfect, but everything worked. Normally I don't mind
+tweaking with programs to get them working "just the way I want it",
+but mail is one of those things I take for granted -- I just want it
+to work without tweaking. Anyways, I felt the same way when I switched
+to VIM, and I felt the same way
+when I switched to Linux, and I
+know all this will pass. The other thing that kind of concerns me
+is using fetchmail to redirect all my mail. I'm used to using a
+shell account on the machine with my mail spool -- I haven't used
+POP3 or IMAP for at least 3 years. I've heard horror stories of
+people's wacky mail-transfer setup blowing away weeks worth of email;
+I'd prefer not to go through that experience. Anyways, I know
+there are several mutt pros who read this page -- feel free to
+drop me an email if you've got any transition tips for me.
+
+
+Oh yeah, I finally got around to installing
+GnuPG, the free software
+replacement for PGP. I posted
+a new public key, and I committed it
+to several keyservers around the world. I don't have the
+information anymore to revoke my old PGP 2.6.2 key, but the
+email addresses are different anyways:
+duncanpa@engr.orst.edu for
+the PGP 2.6.2 key and
+pabs@pablotron.org for the
+OpenPGP (eg GnuPGP) key.
+
+
+Finally, I helped Sean
+install Linux on his home machine today. Soon he will be a
+linux h4x0r like the rest of us. :)
+
diff --git a/content/posts/2000-09-05-evas-opengl-for-free.html b/content/posts/2000-09-05-evas-opengl-for-free.html
new file mode 100644
index 0000000..460bba6
--- /dev/null
+++ b/content/posts/2000-09-05-evas-opengl-for-free.html
@@ -0,0 +1,31 @@
+---
+date: "2000-09-05T12:49:00Z"
+title: 'Evas: OpenGL For Free!'
+---
+
+Well, CVS EWL has preliminary Evas support now.
+The software rendering alone is much faster, but Evas also gives EWL
+OpenGL support for free! I don't
+really have the setup to be testing the GL acceleration, but the
+Evas test program is a _lot_ faster in GL mode. For those of you
+who want to try out the acceleration in EWL, just do the following:
+
+As of tonight, the previous rendering system is still in EWL, but
+horribly broken -- the only thing that will display is the window
+background (which you can customize by editing background key in
+~/.ewl/themes/defaultTheme/EwlWindow.db).
+
+I'm pretty comfortable with Mutt
+now. It's amazing how fast I switched. I've made several tweaks
+to Tom Gilbert's default
+muttrc file -- sooner or later I'll post the file for all to see.
+
+That's about it for right now -- tomorrow I'm going to rip apart
+the theme engine in EWL and make it support Evas images. It's a
+real pain in the ass to break this stuff, but Evas support will
+make it all worthwhile in the end.
+
diff --git a/content/posts/2000-09-07-software-updates.html b/content/posts/2000-09-07-software-updates.html
new file mode 100644
index 0000000..0d78f28
--- /dev/null
+++ b/content/posts/2000-09-07-software-updates.html
@@ -0,0 +1,38 @@
+---
+date: "2000-09-07T10:33:00Z"
+title: Software Updates...
+---
+
+I finally updated my
+GNOME setup at home to
+Helix GNOME. I had been
+planning on doing this for several months, but I had to clear off some
+cruft on my root partition in order to fit all the crap in. For those
+of you who have no drive space, you might check your
+$PREFIX/share/themes and $PREFIX/share/locale directories (where $PREFIX
+is either /usr or /usr/local) -- they were using over 100 megs of
+space on my system.
+
+
+On a related note, I also switched over to
+Galeon as my primary
+web browser (even on my piece of shit home system). Oddly enough
+the bookmark importer works fine on my home system, but fails miserably
+on my work machine. Also, there still isn't correct download support,
+and a there are a few other quirks here and there. But overall,
+I think it's a better browser than Nutscrape.
+
+
+EWL is still coming along. Evas support
+works correctly for the background image, and I incorperated Evas
+support throughout the EWL Theme API, but it still doesn't
+render widgets quite right. I'll work on that some more this week,
+along with an actual working implementation of something me and
+several other E developers have been talking about for a while.
+The short, short version is that we're tired of using one format
+for theming -- there's no reason why you can't have a dynamic
+modular theme and config loading system that allows users to pick
+their own format (be it a fast local database, XML, off of an SQL
+server, or via http). I'll have more information if and when I have a
+working sample implementaion.
+
diff --git a/content/posts/2000-09-18-welcome-to-the-new-pablotron-server.html b/content/posts/2000-09-18-welcome-to-the-new-pablotron-server.html
new file mode 100644
index 0000000..8d10a2a
--- /dev/null
+++ b/content/posts/2000-09-18-welcome-to-the-new-pablotron-server.html
@@ -0,0 +1,32 @@
+---
+date: "2000-09-18T15:02:00Z"
+title: Welcome to the new Pablotron Server
+---
+
+If you can see this message, than you're on the new pablotron server...
+Hooray!
+
+
+So here's what's new -- I've added my work web server to the list of
+uptimes (on the sidevar). Also, I completely redid the
+Projects page. Check it out and let me
+know what you think. I also added unique pages for
+Cam and EWL.
+
+
+On a related note, I've submitted a couple of patches to
+Gnut. Basically, they
+just add config-file loading, saving, and command-line evaluation.
+I hadn't used Gnut at all until a few days ago, but it's already
+my favorite Gnutella
+client by far. It's fast, stable, easy to use, and it's got
+several features that other clients don't have. For example, Gnut
+can blacklist nodes (no more spam via Gnutella), monitor based on
+requests that yield results, monitor based on download requests,
+limit upstream transfer rates, and filter search results with regular
+expressions. It compiles out-of-the-box under most UNIX variants
+and Windows (although the latter is missing many features), and
+there is a GUI frontend in the works. If you're using one of the
+supported systems and you use Gnutella, give Gnut a try and see
+what you think.
+
diff --git a/content/posts/2000-09-19-more-gnut-fun.html b/content/posts/2000-09-19-more-gnut-fun.html
new file mode 100644
index 0000000..60af5d5
--- /dev/null
+++ b/content/posts/2000-09-19-more-gnut-fun.html
@@ -0,0 +1,25 @@
+---
+date: "2000-09-19T09:56:00Z"
+title: More Gnut Fun!
+---
+
+I went ahead and put my recent gnut patches online as one big
+diff file (universal against 0.4.13). You can grab the mondo patch
+right here.
+Also, I added backtick shell interpolation. I just submitted the
+patch to the Gnut developers today, but I also tossed it up
+here for
+people to play with. Finally, in case anyone is interested, my
+resource file for Mutt is
+available here.
+
+
+I spent some time today doing various code cleanupts to this page.
+The Download page script generates
+slightly more legible output, mainly so things look pretty for the
+Code page (but don't take my word for it,
+see for yourself). Also, I updated the
+Site Map to reflect the changes I made yesterday
+to the sidebar, and I fixed the damn titles on all the pages so they
+agree on formatting.
+
diff --git a/content/posts/2000-09-21-i-want-my-diablo-ii.html b/content/posts/2000-09-21-i-want-my-diablo-ii.html
new file mode 100644
index 0000000..19348be
--- /dev/null
+++ b/content/posts/2000-09-21-i-want-my-diablo-ii.html
@@ -0,0 +1,30 @@
+---
+date: "2000-09-21T18:39:00Z"
+title: I Want My Diablo II
+---
+
+I just signed the petition
+for Diablo II over on TuxGames.
+It looks like the big winners in the petitions are
+StarCraft with 2736 votes and
+Diablo II with 2242 votes. The
+next runner-up is Baldurs Gate II, with a measly 556 votes. Anywyas,
+even if Loki doesn't convince
+Blizzard to let them port
+Diablo II, the reports under Wine
+look promising.
+
+
+Anyways, none of this is going to happen until I upgrade my machine.
+I think I may have the cash to put together a new system sometime
+within the next couple of months. I'm thinking about an Ath800/128,
+along with a GeForce 2/MX (unless the GeForce DDR is better, that is),
+I'm also trying to buy a 17" monitor from one of my roommate's friends,
+but I don't know whether or not that's going to happen yet. In the
+future, I'd like to get my hands on
+the
+world's perfect mouse, a little bit more RAM (preferrably 256 megs),
+a larger hard drive (at least 60 gigs -- that's only ~$200 now-a-days),
+a TV Tuner Card, and a decent webcam. Anyways, this is all a ways off,
+but I can hardly wait.
+
diff --git a/content/posts/2000-10-01-parallel-searching-in-gnut.html b/content/posts/2000-10-01-parallel-searching-in-gnut.html
new file mode 100644
index 0000000..7dbef40
--- /dev/null
+++ b/content/posts/2000-10-01-parallel-searching-in-gnut.html
@@ -0,0 +1,29 @@
+---
+date: "2000-10-01T16:46:00Z"
+title: Parallel Searching in Gnut
+---
+
+Like the title says, I finally added multi-searching capabilities to
+Gnut. Well actually, I just
+sent the patch to the maintainer. It should be in the next version of
+Gnut, but you can download the patch
+here (it patches
+clean against 0.4.14, the most recent version of Gnut).
+
+
+So classes started for me again. Hurray, I guess. Actually, this
+term shouldn't be that bad -- I'm actually taking a coupel of
+interesting classes.
+
+
+Finally, I watched a really interesting documentary on the 1992
+presidential elections called Spin. Check it out
+here. It's focus is on
+the media in politics and spin doctors, but it takes the best shots
+I've ever seen at Pat Robertson and his CBN goons. Let me know if
+it's still overloaded when you try and download the files -- I
+have them saved locally and I can set up a mirror.
+
+
+That's all for today.
+
diff --git a/content/posts/2000-10-02-minor-updates-and-new-software.html b/content/posts/2000-10-02-minor-updates-and-new-software.html
new file mode 100644
index 0000000..1675a84
--- /dev/null
+++ b/content/posts/2000-10-02-minor-updates-and-new-software.html
@@ -0,0 +1,44 @@
+---
+date: "2000-10-02T23:25:00Z"
+title: Minor Updates and New Software
+---
+
+I posted my backup scripts for the web server to the
+Download page, you can check it out
+here. Also, the
+Cam page finally has some content,
+including a screenshot showing off some neat feh features. I
+added a browser check-list and some design tips to the
+Code page, and I also moved the view
+any page section to the top. The Feedback
+page is now titled the Contact page
+because that's what it really is. The sidebar and
+Site Map also received various updates, and
+I fixed a tiny rendering problem for
+Lynx.
+Last of all, I updated the front page to hold 8 news items
+instead of 5 -- news was getting flushed to the archives a bit
+quicker than I wanted it to.
+
+
+I updated to the newest version of
+GnomeICU. It's looking good.
+Not only did they fix the annoying send-through-server bug (eg all
+the disappearing ICQ messages), but they added a "message chat" feature
+ala ICQ for Windows. Keep up the good work, guys.
+
+
+I also updated Galeon.
+Not a whole lot of new stuff, but the latest release does improve
+the bookmark handling, and it adds an almost-full-screen option.
+I'm still waiting for the big four: working global keybindings,
+cookie support, plugin support (hopefully native Netscape plugin
+support, but that might be asking a bit much), and functional file
+transfer.
+
+
+I'm thinking about whipping up a linux help page, ala
+Tom Gilbert's Linux help
+spot. Let me know if you're interested in seeing something like
+this, and if so, what you'd like me to cover.
+
diff --git a/content/posts/2000-10-03-yet-another-gnut-patch.html b/content/posts/2000-10-03-yet-another-gnut-patch.html
new file mode 100644
index 0000000..8749bb1
--- /dev/null
+++ b/content/posts/2000-10-03-yet-another-gnut-patch.html
@@ -0,0 +1,30 @@
+---
+date: "2000-10-03T18:49:00Z"
+title: Yet Another Gnut Patch
+---
+
+So I got a response from Robert
+Mufano (the lead developr for
+Gnut), and he really liked my
+multi-search patch. He's gonna make a few minor tweaks, but it should
+be in 0.4.15. I sent him one more patch to slightly improve the
+behavior or "list" and "lclear" (specifically, they reference searches
+by an integer ID instead of a GUID-hashed one, and you can use ranges
+with lclear). As usual, you can grab the patch early on my
+Download page.
+
+
+Oh yeah, I ran this page through the
+W3C HTML Validator, and the results were pretty good. I did
+catch a few obscure HTML errors in my server-side includes, but
+nothing that affects rendering or layout (at least not in Netscape or
+IE). Also, I added a little description blurb to the
+Download page. And, in the spirit of saving
+the best for last, you can now download version 0.2 of my View script
+(the magic behind the backend-navigation on the
+Code page). Version 0.2 fixes several minor
+bugs, adds support for more URL types, and adds anti-cracking
+protection. Grab it here. The
+documentation on this bad-boy is nonexistant, so if you'd like some help
+getting it set up, let me know.
+
diff --git a/content/posts/2000-10-17-osx-planetarion-and-more.html b/content/posts/2000-10-17-osx-planetarion-and-more.html
new file mode 100644
index 0000000..910b719
--- /dev/null
+++ b/content/posts/2000-10-17-osx-planetarion-and-more.html
@@ -0,0 +1,32 @@
+---
+date: "2000-10-17T13:34:00Z"
+title: OSX, Planetarion, and More!
+---
+
+Richlowe introduced
+Jeff and I to a game called
+Planetarion; it's an entirely web-based space strategy game, with
+over 20,000 players. I've been playing it for a couple weeks now, and
+I'm pretty hooked.
+
+
+Also, Sean installed Mac OS X
+on his machine. I added his uptime to my sidebar, so you can compare
+his pathetic OSX uptime to my incredible Linux uptimes. Oh, and you
+can see a screenshot of OSX
+here.
+
+
+I've been rewriting the core for EWL, and
+I posted a super-early snapshot of the new tree. You can check it out
+here. Note
+that I have not finished merging the older code in, so there isn't any
+pretty graphics or theming just yet.
+
+
+Finally, I did a little bit of clean-up to the Download
+page. It's now divided into several sections, and each item has a
+modification stamp and a cute little icon. I'ma still at a loss,
+however, as to how I'm supposed to follow item #1 on
+Term's Website Rules.
+
diff --git a/content/posts/2000-10-22-more-page-updates.html b/content/posts/2000-10-22-more-page-updates.html
new file mode 100644
index 0000000..e3b130b
--- /dev/null
+++ b/content/posts/2000-10-22-more-page-updates.html
@@ -0,0 +1,21 @@
+---
+date: "2000-10-22T10:02:00Z"
+title: More Page Updates...
+---
+
+I finally reorganized the Links page so it'd be
+a bit easier to grok. Check it out and let me know what you think.
+
+
+I've been sick with the flu or something for the last couple days now,
+but it appears to be clearing up. I usually feel pretty good after
+being sick (because I no longer feel like absolute crap); Today is
+no exception. Wahoo!
+
+
+Jesse pointed me towards The
+Underdogs, a has-been PC videogame archive.
+Battlebots was linked from
+Memepool, and it looks kind of
+amusing. Anwyays, that's all for today...
+
diff --git a/content/posts/2000-10-31-privacy-counterstrike-gnut-and-more.html b/content/posts/2000-10-31-privacy-counterstrike-gnut-and-more.html
new file mode 100644
index 0000000..4ede402
--- /dev/null
+++ b/content/posts/2000-10-31-privacy-counterstrike-gnut-and-more.html
@@ -0,0 +1,52 @@
+---
+date: "2000-10-31T10:08:00Z"
+title: Privacy, Counterstrike, Gnut, and More...
+---
+
+I just read this story over on Kuro5hin.
+The thing that bothers me is that it sounds strikingly similar to something
+that happened to me (although the FBI didn't get involved, and I didn't
+lose any hardware). Well, there are ways of protecting yourself; always
+use SSH, use
+PGP (or, even better,
+GnuPG), and
+Anonymizer.
+Here is
+a good overview of security- and privacy-related information. I also
+have a Cryptography, Security, and Privacy
+section on my Links page.
+
+
+I finally got a chance to play
+Counter-Strike.
+For those of you who don't know, CS is technically a MOD for Half-Life,
+which I haven't really seen yet. Anyway, CS is really damn cool. You
+play as either a SWAT team member or a terrorist, and the weapons are
+modeled after real-life ones. The control is kind of screwy, but I
+think that's just me getting used to it.
+
+
+Gnut 0.4.15 is out, but it's
+not what you think. Apparently they forgot a header in the 0.4.14 build,
+so they fixed that and rereleased as 0.4.15. This means all my
+nifty patches for Gnut 0.4.14 still
+work on 0.4.15.
+
+
+I've been doing a lot of work on EWL again
+lately. Tom Gilbert fixed
+a really nasty bug that I was having trouble tracking down. This
+week I've been trying to get the layout and size-request code working.
+Feel free to contribute if you've got suggestions. The Enlightenment
+CVS server has moved to cvs.enlightenment.sourceforge.net; see
+the Enlightenment
+CVS Page for anonymous CVS instructions.
+
+
+I added ACTIONKEY modifiers to each of the main sections on the
+sidebar. The meta key + first letter of Main through Links will
+take you to the respective section. Apparently this HTML 4.0 feature
+isn't supported in Netscape 4.x, but it is supported in Internet
+Explorer and Mozilla. The Meta key for MacOS is Command, and it's
+Alt For Windows. It's redefinable in X11, but usually Alt.
+
diff --git a/content/posts/2000-11-01-gnut-patches.html b/content/posts/2000-11-01-gnut-patches.html
new file mode 100644
index 0000000..54b1f1d
--- /dev/null
+++ b/content/posts/2000-11-01-gnut-patches.html
@@ -0,0 +1,11 @@
+---
+date: "2000-11-01T08:00:00Z"
+title: Gnut patches...
+---
+
+I sent two more patches for Gnut
+to the maintainer last night. I haven't heard back yet, I expect them
+to be included in version 0.4.16. You can hunt for them on the
+Download page, or just skip directly to the
+Patch section.
+
diff --git a/content/posts/2000-11-06-php-and-stuff.html b/content/posts/2000-11-06-php-and-stuff.html
new file mode 100644
index 0000000..d0c93de
--- /dev/null
+++ b/content/posts/2000-11-06-php-and-stuff.html
@@ -0,0 +1,40 @@
+---
+date: "2000-11-06T22:01:00Z"
+title: PHP and Stuff
+---
+
+So I sat down the other evening and read all the way through the
+PHP. Wow! They've got a lot of
+really cool stuff. Integrated crypto, db support, session management,
+electronic cash payment support, and a bunch more nutty stuff that I
+can't even think of right now. I'm thinking about adding some php
+stuff ot this site; I've just gotta figure out a way to work it in
+without horribly mangling what I've already got.
+
+
+OH yeah, Attyz -- the local #e perl bigot -- pointed me in the direction
+of HTML::Mason, a Perl module
+that allows you to embed Perl with the <% foo %> syntax (ala
+ASP and PHP). I haven't had a chance to look throught it yet, but
+what I saw looked cool.
+
+
+Still no word on my latest updates to
+Gnut; I guess the maintainer is
+on vacation or something. :/ Guess I'll have to wait to find out the
+status of my patches. In the meantime, you can read some interesting
+thoughts I had regarding Gnutella
+and peer-to-peer networking technology in
+my Advogato diary
+(yup, I actually updated it).
+
+
+For those of you who haven't had a chance to try out
+Planetarion, now is your
+last chance to create an account before the game starts again. I'm
+not sure exactly when they're going to start the next round, but it's
+supposed to be sometime this week. If you do start playing, make sure
+to join Richlowe,
+Giblet, myself and several
+others in the FEH alliance.
+
diff --git a/content/posts/2000-11-09-nautilus-and-other-useless-stuff.html b/content/posts/2000-11-09-nautilus-and-other-useless-stuff.html
new file mode 100644
index 0000000..1ca74c9
--- /dev/null
+++ b/content/posts/2000-11-09-nautilus-and-other-useless-stuff.html
@@ -0,0 +1,26 @@
+---
+date: "2000-11-09T12:33:00Z"
+title: Nautilus and other Useless Stuff
+---
+
+After reading yet another article about Nautilus on
+/., I decided to take a look
+for myself. The result was this
+review (it was linked on Tom Gilbert's page several hours ago,
+so you may have already seen it). Apparently people in #e found it
+fairly amusing, so I thought I'd share it with the rest of you.
+
+
+Richlowe has been
+sending me patches for Cam like crazy.
+At last count I had about 5 pending in my Inbox. His patches fix
+some quirks with the command-line options, and add titles to the
+config file. Mind you, I haven't given the patches anything more than
+a cursory glance, so who knows if they work at all! :)
+
+
+I've been paying pretty close attention to the elections, but not
+necessarily because I'm concerned about one soft-money whore or the
+other winning. In fact, this article pretty much sums up how I feel (although I
+do believe that Bush is an idiot). Finally, Perl in Latin.
+
diff --git a/content/posts/2000-11-11-planetarion-2001.html b/content/posts/2000-11-11-planetarion-2001.html
new file mode 100644
index 0000000..43099c0
--- /dev/null
+++ b/content/posts/2000-11-11-planetarion-2001.html
@@ -0,0 +1,35 @@
+---
+date: "2000-11-11T05:33:00Z"
+title: Planetarion 2001
+---
+
+Time for Planetarion has
+officially started. They've updated the graphics for the site; it
+looks damn smooth now. If you haven't tried Planetarion yet,
+give it a try. You'll like it.
+
+
+With all the fun and games going on in the US presidential elections
+right now, not enough attention is being payed to the Palm Beach
+ballot issue. Well fusion94 has
+come up with a solution. Here
+is a new ballot, redesigned with a more Palm Beach-friendly layout.
+
+
+I've gotten a bunch of feedback regarding my review of Nautilus, so I decided to add a feedback section. It's
+at the bottom of the article. To the larger sites: if you want to
+post the article, that's fine, but please mirror it rather than
+linking; I don't have the bandwidth for a large amount of traffic.
+
+
+I finally applied the patches from richlowe, and version 0.4 of Cam
+will be available shortly on the Cam page.
+
+
+In case anyone missed it, yesterday was my birthday. I had a
+great time -- thanks to everyone from #e, especially
+Tom Gilbert for the
+unique birthday card. My parents sent me a bit of money, so I'm
+getting the long-awaited hardware upgrade real soon now. Okay,
+that's all for today.
+
diff --git a/content/posts/2000-11-13-whooooooooop.html b/content/posts/2000-11-13-whooooooooop.html
new file mode 100644
index 0000000..54b954b
--- /dev/null
+++ b/content/posts/2000-11-13-whooooooooop.html
@@ -0,0 +1,27 @@
+---
+date: "2000-11-13T10:03:00Z"
+title: Whooooooooop!
+---
+
+Okay, a lot of new stuff going on. I spent this weekend hacking on
+giblib; I added
+binary trees, hashes, queues, stacks, and a few new list calls. Then
+I moved on to Gom,
+adding text-piping, and background image support. Finally, I wrote
+a perl wrapper for Gom called Rollover
+that allows you to quickly create both the HTML and images for
+JavaScripted sidebars. Version 0.2 and a sample template file are
+available here.
+
+
+Richlowe has been
+sent in several patches for both Cam and
+Rollover. The Rollover patches
+are mostly Perl sanitization, but he's rewritten enough of Cam at
+this point that he's now a co-author. Thanks for all the help,
+dude!
+
+
+And the best news; I am now the proud owner of a AMD Duron 700! Thanks
+again to everyone for the great birthday!
+
diff --git a/content/posts/2000-11-19-tetrinet-and-gphone.html b/content/posts/2000-11-19-tetrinet-and-gphone.html
new file mode 100644
index 0000000..3c240d8
--- /dev/null
+++ b/content/posts/2000-11-19-tetrinet-and-gphone.html
@@ -0,0 +1,25 @@
+---
+date: "2000-11-19T13:40:00Z"
+title: Tetrinet and Gphone
+---
+
+Term has come up with some
+ingenous new ways of wasting our time. Last night he introduced me to
+Gphone a
+SpeakFreely compatible
+internet phone that uses GSM compression (ie the compression used in
+many cellular phones). A word of caution: you need a decent
+microphone, or it will be extremely difficult for the other person
+to understand you.
+
+
+Also, Term introduced us to the exciting world of
+Tetrinet, and online
+multiplayer tetris game. If you're using Linux, you should check out
+GTetrinet,
+a GTK+-based Linux client. There's a list of Tetrinet servers
+available here,
+but we've been having so much fun playing that I put up a permanent
+server at tetrinet.pablotron.org. You can monitor our game
+rankings over on my tetrinet page.
+
diff --git a/content/posts/2000-11-20-enlightenment-menu-fun.html b/content/posts/2000-11-20-enlightenment-menu-fun.html
new file mode 100644
index 0000000..d889b76
--- /dev/null
+++ b/content/posts/2000-11-20-enlightenment-menu-fun.html
@@ -0,0 +1,42 @@
+---
+date: "2000-11-20T23:08:00Z"
+title: Enlightenment Menu Fun
+---
+
+Seems like noone makes anything fun for
+Enlightenment menus.
+Well, I decided to write a few.
+This one
+generates real-time stock quotes in your E menu. If you select the
+menu item, it looks up the symbol on
+Yahoo's Finance page. Neat.
+And this one
+builds an E menu of your Cam bookmarks,
+which is makes things even easier than typing "cam person". Both
+the scripts check to see if they've already added themselves to the
+toplevel User menu, so you can run them more than once without any
+adverse effects (ie via a cron job or whatever).
+
+
+Oh yeah. I made yet another change to the scoring on
+my Tetrinet page. Basically, a person
+who does pretty good in a lot of games will now rate higher than
+someone who does incredibly well in a few games. The idea is to
+provide incentive for the good players to keep playing.
+
+
+I noticed the Gnut page
+is now linking directly here for my uncommitted patches. For
+those of you who don't know, you can apply these patches as
+follows:
+
+
+
+
+Okay, that's all for today. My video card arrives tomorrow, so
+I'm going to need some sleep.
+
diff --git a/content/posts/2000-11-20-tetrinet-server-patch.html b/content/posts/2000-11-20-tetrinet-server-patch.html
new file mode 100644
index 0000000..0846384
--- /dev/null
+++ b/content/posts/2000-11-20-tetrinet-server-patch.html
@@ -0,0 +1,19 @@
+---
+date: "2000-11-20T00:06:00Z"
+title: Tetrinet Server Patch
+---
+
+I've made a bunch of updates to
+my Tetrinet page, including a bunch of
+links, and a completely revamped ranking section. Check it out
+and let me know what you think. Also, it looks like the Windows
+version of Tetrinet has issues connecting to my server. I'm
+not entirely sure what's causing the problem, but if I can't
+patch the existing server, I'll migrate everything over to the
+"official" UNIX server.
+
+Also, both the ranking CGI and the patch to the tetrinet server are
+available on my Downloads page. Both are
+quick hacks at the moment; you will have to make changes to the CGI
+if you want it to work on your system.
+
diff --git a/content/posts/2000-11-20-whoops.html b/content/posts/2000-11-20-whoops.html
new file mode 100644
index 0000000..3b4b939
--- /dev/null
+++ b/content/posts/2000-11-20-whoops.html
@@ -0,0 +1,34 @@
+---
+date: "2000-11-20T08:33:00Z"
+title: Whoops
+---
+
+I forgot to mention the cool stuff I've been doing with my new computer.
+My video card will be here tomorrow. For those of you who don't know,
+I'm getting a eVGA NVidia GeForce 2 MX TwinView (dual-monitor and tv-out
+support). There's a really good review for the card over on
+NVNews. My monitor should be here
+this time some week.
+
+
+I also now have an blowfish encrypted partition, courtesy of the
+the International Kernel patch.
+Now I just gotta figure out what I need to hide.
+
+
+I've been making some changes to the page here and there. There's a
+few new things on the sidebar, and I've been slowly adding more stuff
+to the links section. Expect yet another project in a few days.
+
+
+Well, they released a new version of
+Gnut, and it's got some --
+but not all -- of my new patches. The reasons are too complicated to
+explain here, but I'll put up an explanation and a few more patches
+soon. For now, you can patch my features into the latest version
+yourself by grabbing them from the Patch
+section on my Download page. Finally,
+I saw this interesting
+study on Gnutella linked from
+Slashdot today. Give it a read; it's a really interesting article.
+
diff --git a/content/posts/2000-11-29-television-and-tetrinet.html b/content/posts/2000-11-29-television-and-tetrinet.html
new file mode 100644
index 0000000..0743d1e
--- /dev/null
+++ b/content/posts/2000-11-29-television-and-tetrinet.html
@@ -0,0 +1,37 @@
+---
+date: "2000-11-29T20:38:00Z"
+title: Television and Tetrinet
+---
+
+I finally got around to patching
+the
+official Tetrinet server. I added a Makefile and moved some of
+the documentation around, so I'm distributing it as a tarball at
+the moment. This is not a fork per se; I intend to submit my
+modifications back to the developers eventually. I also modified
+the CGI for
+my Tetrinet page so the ranking
+works again, made a few slight modifications to the
+default server configuration,
+and reset all the scores to zero. Also,
+term has put my patched server
+up in his private CVS repository; hopefully we'll get a chance to
+bastardize it some more really soon. Feel free to drop me an email
+if you've got any suggestions.
+
+
+Also, I picked up a WinTV card the other day. It's neat being able
+to watch TV onscreen, but the drivers for this thing are absolutely
+terrible. So far I've had at least three hard locks, and one
+instance of my parts of my filesystem just disappearing. From
+what I've read, the support in the 2.4 kernels is much better, but
+then I'm going to be fighting to get Quake working. I think I've
+gotten things smoothed out a bit, but if it gives me any more
+trouble I'll have to do the kernel upgrade.
+
+
+We've managed to get a bunch more people hooked on
+Planetarion, so I decided to
+put up a quick page with some helpful resources. Check it out
+here... Okay, that's it for today.
+
diff --git a/content/posts/2000-12-28-remember-me.html b/content/posts/2000-12-28-remember-me.html
new file mode 100644
index 0000000..8dd9d47
--- /dev/null
+++ b/content/posts/2000-12-28-remember-me.html
@@ -0,0 +1,14 @@
+---
+date: "2000-12-28T11:22:00Z"
+title: Remember Me?
+---
+
+Remember me? This is just a short update to let you know I'm still
+alive. I've made a lot of changes to the page in the last couple of
+weeks: I moved the Tetrinet rankings to a new page, prettied up the navigation bar at the bottom of the page, and
+cleaned up the sidebar. I've got my system just about completely set
+up; I'll let you know more in a bit. For now,
+this
+post on SlashDot is one of the
+funniest I've seen in a while.
+
diff --git a/content/posts/2001-01-05-does-he-ever-update-his-page.html b/content/posts/2001-01-05-does-he-ever-update-his-page.html
new file mode 100644
index 0000000..4b1a75e
--- /dev/null
+++ b/content/posts/2001-01-05-does-he-ever-update-his-page.html
@@ -0,0 +1,73 @@
+---
+date: "2001-01-05T22:38:00Z"
+title: Does He Ever Update His Page?
+---
+
+Here's the big update I've been promising. First, I realized I never
+told anyone about my new system. Here's what I've got: Duron 700,
+GeForce 2 MX TwinView, 128 megs of RAM, a 45 gig UDMA66 Western Digital
+hard drive, a Hauppage WinTV Go, a SoundBlaster 128 PCI, and an
+Intellimouse Explorer (that's right, the
+best mouse in the world).
+Caveats: The NVidia Linux driver does not currently support the
+TwinView feature, although I did pop my cursed S3 ViRGE in and give
+multihead a try. You can check out the screenshot
+here.
+Also, I'm still having a bit of problems with the WinTV card under
+the 2.2.x kernel. 2.4.0 was just released yesterday, but I have to wait
+for 2 things: the International
+Kernel Patch (so I can access my 500 meg encrypted partition), and
+support for the NVidia kernel module. I've read that
+[Bb]o[wr]is.* ported the
+driver to 2.3.x, but I haven't actually heard anything from NVidia or
+talked to him about it, so I'm going to wait and see. Until then,
+the WinTV is off-limits unless I feel like either rebooting afterwards
+or risking the "magical disappearing filesystem game of fun" (I already
+lost several great Bjork MP3s). On the positive side, I was getting
+hard locks until I manually upgraded the i2c and bttv kernel modules;
+now I just get wierdness that requires a reboot.
+
+
+As for the page, I've been making changes here and there. The most
+notable change is probably the sidebar; I decided it didn't really
+fit with the look for the rest of the page, so I added a bumpmapped
+effect to it's image as well. Let me know what you think. The
+astute readers will note the addition of a CVS link on the sidebar;
+yes, I've got a CVS server with some stuff I'm working on, and no,
+it's not ready for public consumption just yet. I'll let y'all know
+when it's ready.
+
+
+Software, software. I've been trying out tons of new stuff since I
+got this new machine. First of all,
+AVI File is one of the best
+media players I've seen in a while. It plays (suprise!) AVI files,
+including -- everyone's favorite --
+DivXs. I grabbed all my roommate's
+DivX's, and I've been watching them while I wait for 2.4.x so I can
+use my WinTV again. The other thing I've been using a lot is
+GKrellM.
+Richlowe tried to get
+me to install it a few months back, but I never bothered listenign to
+him. Well, I wish I had. GKrellM has replaced all my epplets, and
+it uses less CPU time, less desktop space, and actually does a lot
+more (line in volume control, mousewheel support, better theming,
+etc etc). I don't have it in a screenshot yet, but I'll take one soon
+so you can see my new and improved desktop. Finally, I've been
+playing around with
+VNC a bit. It's
+sort of like
+screen,
+but for X. Basically, you launch VNC, start some X applications,
+then you can reconnect from other machines, even MacOS and Windows
+machines. Or a web browser! The protocol isn't encrypted, but it's
+cake to set up SSH port forwarding
+(ssh -C -L localport:remotehost:remoteport remotehost, then start the
+VNC viewer). Finally, i started using
+LogColorise
+for my logs. You can see it in any of my
+latest screenshots.
+
+
+Well, that about covers it. I'll update more later...
+
diff --git a/content/posts/2001-01-10-plib-pheh-and-more.html b/content/posts/2001-01-10-plib-pheh-and-more.html
new file mode 100644
index 0000000..cfebbb3
--- /dev/null
+++ b/content/posts/2001-01-10-plib-pheh-and-more.html
@@ -0,0 +1,33 @@
+---
+date: "2001-01-10T01:40:00Z"
+title: PLib, Pheh, and More
+---
+
+Okay, I posted release versions of
+PLib and
+Pheh. Yes, that's right, I've _actually_
+been working on code again. Pheh is "strikingly similar" to
+Tom Gilbert's image
+viewer Feh, except Pheh
+uses Evas, so it supports OpenGL acceleration and a few other goodies.
+Check it out and let me know what you think.
+
+
+I changed the logo right above the sidebar. I think it looks better
+than the old one, but who knows. What I really need is some color.
+Also, Sean's OSX machine is no more,so I've removed the OSX uptime
+from the sidebar. He's gone back to MacOS 9 for the time being...
+
+
+After over three years, I finally got sick of the default look for
+BitchX. So I'm trying out the
+cypress theme from irc.themes.org.
+I've tweaked one of the built-in cypress themes a bit; you can see the
+result in my latest screenshot.
+
+
+As usual, Apple's newest
+Powerbook looks absolutely amazing. I'm going to try and use one at
+the local Mac outlet tomorrow. Anyway, I'm up waaay past my bedtime, so
+that's it for tonight.
+
diff --git a/content/posts/2001-01-17-divx-is-my-friend.html b/content/posts/2001-01-17-divx-is-my-friend.html
new file mode 100644
index 0000000..d89c171
--- /dev/null
+++ b/content/posts/2001-01-17-divx-is-my-friend.html
@@ -0,0 +1,55 @@
+---
+date: "2001-01-17T10:47:00Z"
+title: DivX is My Friend
+---
+
+I found a really great Star Trek: The Next Generation DivX site;
+I've been grabbing episodes since last night. Check it out
+here.
+Speaking of DivX, the next generation of the DivX ;-) codec is available,
+but this time with source. See Project Mayo: OpenDivX for more information.
+
+
+Pheh 0.2.1 is out. I've got v0.2.2 sitting
+here on my box; it's almost ready to go. The only problem is, I upgraded
+to the SGI GLU headers so compile the latest CVS Evas, and I must have
+gotten a broken snapshot, because now no GLU-related stuff works correctly.
+Oh well, I'll fix it soon enough. 0.2.2 adds webcam and native
+Cam bookmark support. I'm still working on
+sane keyboard support; I might hold off v0.2.2 until that is ready to
+go.
+
+
+I've been having a horrendous time with kernel 2.4. Here's
+the problem; I've got a GeForce 2 MX TwinView and the KT133 chipset.
+Now, kernel 2.4 has KT133 AGP support via agpgart, and the
+NVidia driver has #ifdefs so it doesn't use it's own AGP support. So,
+in theory I _should_ be able to compile the kernel with KT133 agpgart
+support, reboot, and compile the NVidia drivers (which would exclude
+it's own AGP driver). Alternatively, I could compile 2.4 without
+agpgart, and compile the NVidia driver, which would use it's own (working)
+KT133 support. Fortunately for me neither of those two options
+works; I get a hard lock after my ssh-agent dialog closes. Before
+you ask, yes I've applied the linux-2.4.0-PR patch; 0.9-5 won't
+compile under 2.4 without it. I've also tried the TNT2 M64 POST
+patch (someone in #nvidia thought it might help), and various other
+crap. The only thing I haven't tried yet is upgrading from XFree86
+4.0.1 to 4.0.2. At this point, I suspect that may be the problem,
+but I'm sticking with 2.2 for the time being.
+
+
+On a more positive note, I tried out both SVGATextMode (132x60) and
+fbcon. Wow! FBCon looks great -- totally smooth fonts in
+console; absolutely amazing -- but it's a bit on the slow side.
+I like SVGATextMode a bit more at the moment. It's not noticeably
+slower, but there's a _ton_ of console space. I actually felt a bit
+cramped once I got back into X.
+
+
+Finally, I've heard rumors about the new Nvidia Linux drivers having
+multihead or even xinerama GL support. Needless to say, I've been
+checking the
+page
+about 1000 times a day waiting for it to come out. Then again, the
+drivers were supposed to come out before christmas, so who knows...
+
diff --git a/content/posts/2001-01-22-who-s-your-dual-head-daddy.html b/content/posts/2001-01-22-who-s-your-dual-head-daddy.html
new file mode 100644
index 0000000..a7a0c13
--- /dev/null
+++ b/content/posts/2001-01-22-who-s-your-dual-head-daddy.html
@@ -0,0 +1,29 @@
+---
+date: "2001-01-22T06:06:00Z"
+title: Who's Your Dual-Head Daddy?
+---
+
+Courtesy of the NVidia 0.9-6 drivers, I now have a hardware accelerated
+dual-head setup. Hooray! I modified my screenshot scripts and took
+a quick, unspiffed up screenshot. Check it out
+here. This also means I'm running
+kernel 2.4. Everything seems to be working okay, except the mounting
+system refuses to set up a loopback device automatically for my
+encrypted partition, so I have to do that by hand. Oh, and I'm still
+getting filesystem corruption when i run my WinTV, so that's been
+canned for the time being.
+
+
+I released a new version of Pheh today;
+new features inclue keyboard support, cam support, a code cleanup, an
+easier to read config file, and some other goodies. The ChangeLog is
+here, the diff from 0.2.1 is
+here, and
+the full tarball is
+here.
+
+
+Oh yeah, read
+this article (it was
+linked from Slashdot today). That's all for now...
+
diff --git a/content/posts/2001-02-01-gibmeet-and-plib.html b/content/posts/2001-02-01-gibmeet-and-plib.html
new file mode 100644
index 0000000..f37b233
--- /dev/null
+++ b/content/posts/2001-02-01-gibmeet-and-plib.html
@@ -0,0 +1,17 @@
+---
+date: "2001-02-01T12:16:00Z"
+title: GibMeet and PLib
+---
+
+Just a quick update to let everyone know that I'm alive, and that the
+new versions of GibMeet and
+PLib are available for download. If
+you're using Pheh, you'll need to upgrade
+PLib for the next version (coming out soon).
+
+
+Oh yeah, I upgraded the pablotron server. I had a P200 collecting
+dust in the corner, so I figured I'd move Pablotron from it's trust
+486/66. I also added a larger hard drive and some more memory, so
+things should be just a tad bit faster now.
+
diff --git a/content/posts/2001-02-06-snow-man-is-the-man.html b/content/posts/2001-02-06-snow-man-is-the-man.html
new file mode 100644
index 0000000..af8a753
--- /dev/null
+++ b/content/posts/2001-02-06-snow-man-is-the-man.html
@@ -0,0 +1,74 @@
+---
+date: "2001-02-06T18:31:00Z"
+title: SNOW-MAN IS THE MAN!
+---
+
+Uh... Okay, long story short, Pablotron has a new home, @Home is a
+steaming load, and Snow-Man is
+my new best friend. He's now hosting both Pablotron and Pablotron
+DNS. I'm so grateful I even put his logo below my sidebar ;-).
+It might take a few more days for the DNS changes to propagate
+everywhere, but pablotron.com appears to work correctly for most
+people.
+
+
+As for the site, most things should still work correctly. The tetrinet
+rankings will be broken for a bit while i rewrite the CGI, but I'm not
+going to rush that. AFAIK, noone even plays tetrinet anymore :). Also,
+the uptimes and stats aren't going to update for a while until I
+rewrite the scripts.
+
+
+The new version of GibMeet includes
+plugin support. A few reference plugins are included with the
+newest tarball, and you can grab the ones made by
+Richlowe and
+koudelka
+right here. You'll need
+PLib version 0.1.2 or better ain order
+for GibMeet to compile. Speaking of PLib, a few people have reported
+problems compiling PLib; specifically, undefined references to db.
+I'm not actually using the db wrapper at the moment, and I'll probably
+disable it in the next version of PLib (pending a rewrite). For now,
+do the following to disable the db stuff:
+
+
+
remove pdb.o from the line beginning with OBJS= in plib/plib/Makefile
+
remove the text "-ldb" from plib-config.c
+
+
+Before anyone emails me about it, yes i know autoconf could take care of
+this madness for me. I'll get around to it :).
+
+
+As for development stuff. The CVS version of PLib has a new dynamic
+resource loading API. In it's simplest form, you simply do a
+data = p_resource_get("urltype://url_parameters", &len) and
+PLib will find the correct dynamic library, load it, and pass your
+URL off to it. Note that the URL isn't limited to things like http
+and ftp. I plan on adding support for things like SQL and XML, so
+you could do somethign like
+PList *list = p_resource_get("mysql://pabs@s3kr3tp4ss:db.pablotron.org:\"select 1-5 from News where (Title like '%snow-man%');\"", &len);
+or whatever . Anwyay, this is still a ways off; right now I'm working
+on the ftp, http, and shttp modules (all of which will probably be
+implemented with libcurl
+(the only sane http library I've found -- thanks
+[Bb]o[wr]is.* ;-) ).
+
+
+Oh yeah, Tom Gilbert renamed
+Gom to
+Gozer due to a name
+conflict (I need to do the same soon with PLib. :-( ). For those of
+you using Rollover, you'll either
+need to upgrade to CVS, or edit the rollover.pl script manually (just
+chnage all occurances of gom to gozer and you should be okay).
+
+
+Okay, that's all for now. Thanks again to
+Snow-Man for helping me out.
+If you have the time, don't forget to drop into #e (on
+OPN IRC) and wish
+Schmoo a
+happy birthday.
+
diff --git a/content/posts/2001-02-12-cvs-is-fun.html b/content/posts/2001-02-12-cvs-is-fun.html
new file mode 100644
index 0000000..9fe0033
--- /dev/null
+++ b/content/posts/2001-02-12-cvs-is-fun.html
@@ -0,0 +1,16 @@
+---
+date: "2001-02-12T01:09:00Z"
+title: CVS is Fun
+---
+
+Okay, I updated the things in CVS. I added
+Pbfvm and
+Q3dag, and put up quick
+pages for both of them. Also, I moved
+Pheh into CVS; for some
+reason I managed to completely forget to put it there. :)
+Holler if you have any trouble with the CVS server.
+
+
+That's all for today. :)
+
diff --git a/content/posts/2001-02-26-the-magical-disappearing-pablo.html b/content/posts/2001-02-26-the-magical-disappearing-pablo.html
new file mode 100644
index 0000000..e0f563c
--- /dev/null
+++ b/content/posts/2001-02-26-the-magical-disappearing-pablo.html
@@ -0,0 +1,33 @@
+---
+date: "2001-02-26T15:19:00Z"
+title: The Magical Disappearing Pablo
+---
+
+I just realized I haven't updated in two weeks. I've been playing
+around with Freenet.
+The HTTP proxy stuff is really cool; it's fun to browse Freenet
+URLs in my browser.
+
+
+Anyway, I've been spending most of my time working on a
+secret project. It's coming
+along a lot quicker than I anticipated, so hopefully I'll have
+something everyone can mess around within the next couple of
+months. I guess we're going to be using
+PLib, so I really, really need
+a new name for it. I was thinking libprc or something
+
+
+Just so I have something new and interesting,
+
+here is a list of Neil Stephenson's articles in Wired. Also,
+his personal page is here.
+And, if by some chance you've mananged to escape without reading
+"In the Beginning was the Command Line", follow
+this link and read it now.
+
+
+Oh yeah. In case anyone doesn't know, I'm looking for a new job. If
+anyone has any openings (preferrably in the bay area), feel free to
+mail me.
+
diff --git a/content/posts/2001-03-07-version-0-2.html b/content/posts/2001-03-07-version-0-2.html
new file mode 100644
index 0000000..11e5050
--- /dev/null
+++ b/content/posts/2001-03-07-version-0-2.html
@@ -0,0 +1,86 @@
+---
+date: "2001-03-07T02:50:00Z"
+title: Version 0.2
+---
+
+Lots of new stuff today. Version 0.2.0 of
+PLib is available, you can download it
+here. The latest version
+has vastly improved (but slightly incompatible) list and hash
+implementations. Also,
+Tom Gilbert has redone a
+lot of the POption code, added a PResource saver, and fixed a
+bunch of other stuff.
+
+
+I've also released version 0.2.0 of
+Pbfvm. You can download it
+here. New features
+include interpreter optimization, transparent zlib support,
+one-liner support, piped interpretation, and a partial
+"pseudo-ASM" implementation (which adds conditional statements,
+copy, move, branch, return, and other tratitinal operations).
+
+
+I wrote a really basic UDP chat client as a reference for my
+friend's network programming assignment. I thought it was kind of
+amusing, so I decided to post it for everyone else to play with.
+Check it out here. It's
+version 0.2 partly because I cleaned up a few things before posting
+it, but mainly so I'd have 0.2 of everything. :)
+
+
+The versions of Cam available on my Cam
+page and through
+Enlightenment
+CVS have been out of sync for monthes, so I decided to
+finally get my act together. The latest version of Cam is
+available here. Most of
+it has been cleaned up and rewritten by
+Richard Lowe,
+and there's too much new stuff to cover here. You will need the
+CVS version of Feh
+for some of the newer features, but it should work okay with older
+versions of Feh as well.
+
+
+Okay, so that does it for new software. As for my computer, I've
+given up on bttv until they can actually get it to work without
+destroying parts of my filesystem. On the plus side, I finally
+got TrueType fonts working. I decided to whip up some new logos
+for Pablotron as a test of the new fonts. The joke ones
+are here and
+here, and the logo
+that I was thinking about using permanently is
+here. Also, I'm
+trying to move all the downloadable content on my page into the
+Download page. It's slow going, but I
+should be finished sometime later this week.
+
+
+Oh yeah, I downloaded KDE 2.1
+the other day. As most of you know, I don't really run
+GNOME or
+KDE, but I like to keep them
+around for the application dependencies, and to see how they're
+doing. Anyway, Konqueror is really good; it does everything that
+Nautilus tries to do,
+without dragging my computer to a screeching halt. Also, if
+you're in to IDEs, then KDevelop can't be beat. Though personally,
+I prefer Vim and
+Ctags to an IDE.
+Speaking of VIM, I just downloaded version 6.0w the other day;
+the new vertical split feature is great. I haven't had a chance
+to play with all of the other new features just yet, but 6.0w
+has worked great so far. Lemme see, other new software...
+GnomeICU 0.60.1 is
+out. Avifile 0.53.5 fixes
+several bugs...
+
+Anyway, I've got more to say, but this news post is already
+long enough.
+This
+is my one funny URL for the day, and if you haven't seen it
+before, check out Plastic.
+Whew.
+
diff --git a/content/posts/2001-03-16-pheh-phun.html b/content/posts/2001-03-16-pheh-phun.html
new file mode 100644
index 0000000..88c1d2d
--- /dev/null
+++ b/content/posts/2001-03-16-pheh-phun.html
@@ -0,0 +1,76 @@
+---
+date: "2001-03-16T02:28:00Z"
+title: Pheh Phun
+---
+
+Well, it's not ready for release just yet, but I've been working on a
+new version of Pheh today. A pre-0.3.0
+screenshot showing off the new thumbnail window is available
+here. Other
+good stuff: PLib 0.2.0 support,
+slightly improved Evas and X code, and probably more stuff that I
+forgot. If you don't feel like waiting, you can always grab Pheh
+from CVS; instructions are available on my CVS
+page.
+
+
+I've noticed that Evas, or at least the CVS version, appears to leave
+some bizarre visual artifacts. This could just be the NVidia
+OpenGL implementation, or it could be the SGI GLU 1.3 GLU headers
+I'm using. Anyway, if you have the same problem, try turning off
+pheh hardware acceleration (comment the
+render_method 3d_Hardware line in your ~/.pheh/phehrc).
+
+
+Speaking of NVidia, the 0.9-7
+drivers came out a few days ago. Things are still working good,
+and I get a noticeable framerate boost in
+Quake 3. It looks like
+they tweaked the TwinView support and managed to alleviate some of
+the "dual-head tax". The new drivers also support the
+X Render
+extension, although I haven't had a chance to try it out just yet.
+There's a patch for
+QT that adds
+anti-aliased font support to QT (and, by extension,
+KDE applications) floating
+around somewhere; I'll post a bit about it once I've had a chance
+to try it out.
+
+
+While I'm thinking about it, I just remembered that
+Nautilus 1.0 came out
+the other day. Don't waste your time trying it. While they did
+manage to address a few of
+my complaints abut PR2,
+Eazel
+apparently neglected to fix the two most important problems with
+Nautilus. As such, I have found three more appropriate mascots for
+Nautilus; one for it's
+speed,
+one for it's
+size,
+and one for it's
+stability.
+If you're still gung-ho about installing Nautilus, you should
+probably consider a
+leaner or
+more stable
+alternative. On the other hand, if you're actually looking for a
+decent graphical file manager, I recommend either
+Konqueror or
+Andrew Shugg's unsupported and unmaintained
+
+older EFM CVS snapshots.
+
+
+Oh yeah, Raster redesigned
+his page -- I really like the new layout. He even broke down and
+divided his photo gallery into several pages. I suspect it was
+just to drown out the cacophony of
+whiny
+modem
+users. Anyway,
+I'm pretty sure I've managed to offend just about everyone, so that's
+it for today.
+
diff --git a/content/posts/2001-03-19-tab-madness.html b/content/posts/2001-03-19-tab-madness.html
new file mode 100644
index 0000000..59e3a3f
--- /dev/null
+++ b/content/posts/2001-03-19-tab-madness.html
@@ -0,0 +1,38 @@
+---
+date: "2001-03-19T02:28:00Z"
+title: Tab Madness
+---
+
+I saw yesterday's post on Slashdot
+about Zsh, and I decided to give it
+a try. I really liked the tab completion and a few other features,
+but Zsh was just too different than Bash for me to make a permanent
+switch. So I decided to upgrade to Bash 2.04 and mess with it's
+programmable completion instead. I started with a few from the samples
+included with Bash and added a bunch for things like tar, ssh, and
+cvs. Several people on #e asked for my completions, so I decided to
+clean them up a bit, add an installer script, and put them online.
+The result is Bash Tweaks. Enjoy.
+
+
+I've been learning more about
+XML, and I decided to work on
+making this page a bit more transitional friendly. I've converted
+the sidebar and all the server-side includes, which means most of
+the layout for the page should be okay, but I haven't started on
+all the content yet. I decided to preserve rendering in older
+browsers (mainly Netscape 4). The two tags that it seems to get
+pissed off about are <br/> and
+<div align="center">, so I'm going to stick with the
+more compatible, but less compliant <br> and
+<center> (at least until everyone can affort to run a
+modern browser).
+
+
+Finally, if you've got a GeForce 2 MX TwinView (and possibly even
+a GeForce 2 MX), and you want to try the NVidia 0.9-7 drivers, be
+sure you grab the 0.9-769 drivers, _not_ the 0.9-767 drivers. I
+consistently got hard locks in Quake 3 with the 0.9-767 drivers, but
+the 0.9-769 drivers appear to be working okay. Okay, that's it for
+today.
+
diff --git a/content/posts/2001-04-03-configure-amp-amp-moonwalk.html b/content/posts/2001-04-03-configure-amp-amp-moonwalk.html
new file mode 100644
index 0000000..5312115
--- /dev/null
+++ b/content/posts/2001-04-03-configure-amp-amp-moonwalk.html
@@ -0,0 +1,30 @@
+---
+date: "2001-04-03T09:35:00Z"
+title: ./configure && Moonwalk
+---
+
+The CVS version of PLib now has
+autoconf and automake support. I've tested it on systems without
+PCRE and
+SSL, and things appear to
+compile and work okay. There's also support for systems without
+libdl (Dynamic Loader) support, but I haven't checked to see if
+they work correctly yet.
+
+
+Also, I put up another review. It's a horrible ROM that srl from
+#e (OPN IRC) sent me.
+Check it out here.
+
+
+The current round in Planetarion
+just ended. In a week or so they'll delete all the existing accounts.
+If you want to get in on the action, now is a good time to start
+reading the documentation and the forums.
+
+
+Finally, I wouldn't believe it if I hadn't written it myself, but
+apparently my About page has actually been
+updated. All you ever didn't want to know about me is now available
+in a chewable bite-sized capsule.
+
diff --git a/content/posts/2001-04-05-php-baby.html b/content/posts/2001-04-05-php-baby.html
new file mode 100644
index 0000000..97414fe
--- /dev/null
+++ b/content/posts/2001-04-05-php-baby.html
@@ -0,0 +1,12 @@
+---
+date: "2001-04-05T10:45:00Z"
+title: PHP Baby!
+---
+
+I just converted the entire site to PHP with a little shell script
+and Perl magic. There's several things that are going to be
+broken until I get a chance to fix them (probably this evening).
+Specifically, the Code page, the offended
+URL, and the Screenshots page. I'll
+get it finished this evening.
+
diff --git a/content/posts/2001-04-05-php-rocks.html b/content/posts/2001-04-05-php-rocks.html
new file mode 100644
index 0000000..9d6777e
--- /dev/null
+++ b/content/posts/2001-04-05-php-rocks.html
@@ -0,0 +1,22 @@
+---
+date: "2001-04-05T18:45:00Z"
+title: PHP Rocks
+---
+
+Okay, the news generator script, offended URL, and
+Screenshots page are working again. I
+still need to fix the script for the
+Download page, and the
+Code page. Oh yeah, the Screenshots page
+has a new feature; you can now link to specific screenshots and
+navigate through them one-by-one, like
+this or like
+this.
+
+
+Also, after a night's worth of tweaking, the entire site is now
+themable. I've only got one theme done right now,
+Lunixbrat. You can switch between
+themes on the Themes page. I'll add some
+more themes this weekend.
+
diff --git a/content/posts/2001-04-07-more-themes-and-news-navigation.html b/content/posts/2001-04-07-more-themes-and-news-navigation.html
new file mode 100644
index 0000000..6579670
--- /dev/null
+++ b/content/posts/2001-04-07-more-themes-and-news-navigation.html
@@ -0,0 +1,13 @@
+---
+date: "2001-04-07T19:10:00Z"
+title: More Themes and News Navigation
+---
+
+I added a few more themes to the Themes page;
+One-Bit and -- my personal favorite --
+Glass.
+
+
+Also, I wrote a new news engine and converted all of my entries to the
+new system. Check out the News Navigator at the bottom of the page.
+
diff --git a/content/posts/2001-04-10-page-cleanups-and-plib.html b/content/posts/2001-04-10-page-cleanups-and-plib.html
new file mode 100644
index 0000000..4b7631f
--- /dev/null
+++ b/content/posts/2001-04-10-page-cleanups-and-plib.html
@@ -0,0 +1,26 @@
+---
+date: "2001-04-10T01:08:00Z"
+title: Page Cleanups and PLib
+---
+
+More cleanups to the page. No more evil
+<center> and
+<br> tags; they've been replaced by their
+standards-compliant counterparts. I also fixed small errors all
+over the site -- almost every page linked from the sidebar has
+minor updates, although most of them were HTML-related.
+
+
+For those of you who are here to check out
+PLib, you might want to take a look at
+the CVS version. The CVS version has full
+autoconf/automake support, the networking API (including
+transparent SSL support),
+Richard Lowe's
+PCRE wrapper, and other nice
+stuff. A few warnings about the CVS version: the documentation is
+horribly out of date, and the networking API may still have some kinks
+that need to be ironed out. Anyway, have fun, and feel free to
+send me comments, criticism,
+patches, etc.
+
diff --git a/content/posts/2001-04-13-new-theme-epic-te.html b/content/posts/2001-04-13-new-theme-epic-te.html
new file mode 100644
index 0000000..0b1192a
--- /dev/null
+++ b/content/posts/2001-04-13-new-theme-epic-te.html
@@ -0,0 +1,24 @@
+---
+date: "2001-04-13T23:02:00Z"
+title: New Theme, EPIC+TE
+---
+
+Added a new site theme that mimics the color scheme of
+Plastic.com. You can read a
+brief description on the Themes page, or
+try the theme out directly by clicking here.
+
+
+Also, I switched my IRC client from
+BitchX to
+EPIC +
+TE. So far, I think I
+like EPIC+TE more than BitchX; the TE configuration is really easy
+and intuitive, and EPIC+TE seems a bit faster than BitchX.
+
+
+Finally, schmoo comandeered
+schmoo.org and has started
+building an her online empire! Drop by the site and let her
+know what you think ;). Okay, that's it for today.
+
diff --git a/content/posts/2001-04-15-pabsdot-joins-the-fray.html b/content/posts/2001-04-15-pabsdot-joins-the-fray.html
new file mode 100644
index 0000000..b1eb865
--- /dev/null
+++ b/content/posts/2001-04-15-pabsdot-joins-the-fray.html
@@ -0,0 +1,15 @@
+---
+date: "2001-04-15T07:08:00Z"
+title: Pabsdot Joins the Fray
+---
+
+Added a new theme called Pabsdot. Check it out on the
+Themes page. I can't think of anything else
+that's newsworthy at the moment, so I'll add something else to this
+news item later today.
+
+Okay I thought of something. On the off chance you hadn't heard,
+Tribes 2 is out for Win32, and
+the Linux version is just around the corner. I can already feel
+my productivity dropping.
+
diff --git a/content/posts/2001-04-25-planetarion-fun.html b/content/posts/2001-04-25-planetarion-fun.html
new file mode 100644
index 0000000..cb515d6
--- /dev/null
+++ b/content/posts/2001-04-25-planetarion-fun.html
@@ -0,0 +1,42 @@
+---
+date: "2001-04-25T04:30:00Z"
+title: Planetarion Fun!
+---
+
+I quietly released a new version of PLib
+a few days ago. PLib 0.3.0 has a whole bunch of new goodies; here's
+a quick list:
+From Tom Gilbert, resource
+loader cleanups, and a new modular resource saver. From
+Richard Lowe, a
+PCRE wrapper, and new warning and
+debugging calls. From me: PList and PHash cleanups, added the
+PVector type (think Vector in Java), PList and PHash API cleanups and
+bugfixes, TCP/IP and UNIX domain socket utility functions, TCP/IP
+and UNIX domain socket client and server (with simple
+SSL support), a short example
+program (a chat client and server with option file handling, and SSL
+support), C++ friendlyness, and autoconf/automake magic. Note that
+PCRE, OpenSSL, and even libdl are optional. If you don't have OpenSSL
+installed, for example, the PLib will still compile and work just
+fine; albiet without SSL capabilities. Thanks to Tom and Richard
+for all the help on PLib.
+
+
+The next round of Planetarion
+has started. Since the old BattleCalc a) doesn't work this round and
+b) was Windows-only (of course, it ran great in
+Wine ;) ), I decided to whip up my
+own battle calculator. It's still pretty rough, and there isn't a GUI
+just yet -- although it does create CSV output so you can view the
+battle in Excel, Gnumeric, or your spreadsheet program of choice).
+Anyway, you can download my battle calculator
+here.
+
+
+Oh yeah, I also updated my Planetarion resource
+page. Having trouble starting your planet? Be sure to check
+out the
+3-Day
+Plan, a rough guide on your planet's first 72 hours.
+
diff --git a/content/posts/2001-05-23-insert-interesting-title-here.html b/content/posts/2001-05-23-insert-interesting-title-here.html
new file mode 100644
index 0000000..5efab49
--- /dev/null
+++ b/content/posts/2001-05-23-insert-interesting-title-here.html
@@ -0,0 +1,45 @@
+---
+date: "2001-05-23T05:37:00Z"
+title: Insert Interesting Title Here
+---
+
+Well, I haven't updated in quite a while, so I thought I'd toss some
+stuff up here. First of all, I went to Virginia a few weeks ago
+to visit some friends. I got to meet
+Steve (Snow-Man),
+Brian (bma),
+Karen (aphrael),
+Tom (giblet),
+Sue (schmoo),
+Kevin (het), and
+Gordon (aka
+gordont). Tom and Gordon both took pictures and posted them
+on their sites.
+
+
+I hadn't mentioned it, but I posted two new themes; Terminal and
+Kindergarten. You can try them out on the Themes
+page. Also, I wrote a couple of utilities for
+Planetarion:
+PACalc, a planetarion battle
+calculator, and PA Scan Tracker,
+a way to organize sector and unit scans. I haven't done too much
+work on the battle calculator, since an there's a fully functional
+online calculator (linked off my Planetarion Resources
+page), but I'm still updating the scan tracker.
+
+
+PLib 0.2.1 is out, with a few
+bugfixes, and version 0.2.2 is just around the corner, with a ton of
+minor tweaks and improvements. Thanks to attyz for pointing my
+stupid autoconf error out.
+
+
+I've been doing a lot of work on my
+secret project. I can't say
+much about it yet, but I can say that things are coming along really
+well. I can also say that we'll probably have something to show
+within the next two months. The core is mostly done, and we're
+just working on the main pieces now.
+
diff --git a/content/posts/2001-05-27-home-again-whee.html b/content/posts/2001-05-27-home-again-whee.html
new file mode 100644
index 0000000..006f48b
--- /dev/null
+++ b/content/posts/2001-05-27-home-again-whee.html
@@ -0,0 +1,21 @@
+---
+date: "2001-05-27T15:01:00Z"
+title: Home Again, Whee!
+---
+
+Just a quick note to let everyone know I'm back from my interview in
+Virginia. People I met this time around:
+Michael (mazeone) and
+Jon Ann (lilyj).
+Brian (bma) managed to snap
+a few pictures of me in my suit; the pictures are
+here and
+here.
+Also, here is a
+picture of lilyj and I hanging out at
+Steve's (Snow-Man) place.
+
+
+Anyway, I just got home a few hours ago, so I'm still unpacking,
+cleaning, and getting caught up.
+
diff --git a/content/posts/2001-05-29-updates-we-don-t-need-no-stinking-updates.html b/content/posts/2001-05-29-updates-we-don-t-need-no-stinking-updates.html
new file mode 100644
index 0000000..33ab4d3
--- /dev/null
+++ b/content/posts/2001-05-29-updates-we-don-t-need-no-stinking-updates.html
@@ -0,0 +1,26 @@
+---
+date: "2001-05-29T21:40:00Z"
+title: Updates? We don't need no stinking updates!
+---
+
+I've got all sorts of new stuff for you kids to play with. First of all,
+I finally got around to rewriting the Download
+and Links sections. Both have three different
+list modes, and you can filter both by section, or just view individual
+items. I also updated the Site Map and
+Contact sections. There's a new site theme
+called Forge; you can check it out on the Themes
+page.
+
+
+PLib 0.2.2 is out. It includes
+fixes to the list, hash, resource, and vector code. Thanks to Gnea
+for catching yet another stupid autoconf mistake. Check out the
+ChangeLog or grab the
+latest version.
+
+
+Finally, Lilyj posted
+some pictures of the trip to Virginia. Check them out
+here.
+
diff --git a/content/posts/2001-06-07-a-part-of-your-balanced-breakfast.html b/content/posts/2001-06-07-a-part-of-your-balanced-breakfast.html
new file mode 100644
index 0000000..5ff6a4a
--- /dev/null
+++ b/content/posts/2001-06-07-a-part-of-your-balanced-breakfast.html
@@ -0,0 +1,19 @@
+---
+date: "2001-06-07T14:48:00Z"
+title: A Part of Your Balanced Breakfast
+---
+
+Just a quick note to let people know I released
+PA Scan Tracker 0.3.1 -- it now
+handles Sector, Unit, PDS, and Military scans. Also, I moved
+Pablotron CVS to
+Snowy's CVS server. The DNS
+should have propagated by now, but there's a change in the CVSROOT;
+see the CVS page for more information.
+
+
+For those of you using the Pabsdot theme, I
+added a bunch of new icons to the top. I also cooked up
+this picture from the
+Pabsdot icons.
+
diff --git a/content/posts/2001-06-19-google-apt-get-install.html b/content/posts/2001-06-19-google-apt-get-install.html
new file mode 100644
index 0000000..0cff18c
--- /dev/null
+++ b/content/posts/2001-06-19-google-apt-get-install.html
@@ -0,0 +1,36 @@
+---
+date: "2001-06-19T08:05:00Z"
+title: google "apt-get install"
+---
+
+A few interesting things to report. After months and months of
+relentless harassment by
+various
+members
+the
+evil
+Debian
+Mafia, I finally
+succumbed to peer pressure and installed
+Debian Linux -- or should I say
+*cough* GNU/Linux -- on one of my spare machines. My initial
+impression is as follows: HOLY CRAP! The installer is a bit rough,
+but once you get past that and get apt properly configured,
+installing and setting up new software is a joke. It took me about
+20 seconds to install Apache (apt-get install apache),
+then I realized I didn't have PHP4 installed (apt-get install
+php4). Installing other stuff was about the same.
+Tom walked me through a
+dist-upgrade to unstable (more than a bit of a misnomer, I might add).
+After years of the untold pain and suffering that is RPM, Windows, and
+MacOS software installs, I am completely in awe of Debian Package
+management. I'm sure Debian has it's quirks, but for the moment I'm
+completely hooked. In fact, while I was writing this I just installed
+ispell to double-check the spelling of a word.
+
+
+The other interesting bit of news for the day is a little shell
+script i wrote for accessing Google.
+You can grab it here.
+
+
diff --git a/content/posts/2001-07-04-you-are-here-gt-x.html b/content/posts/2001-07-04-you-are-here-gt-x.html
new file mode 100644
index 0000000..d06b289
--- /dev/null
+++ b/content/posts/2001-07-04-you-are-here-gt-x.html
@@ -0,0 +1,27 @@
+---
+date: "2001-07-04T07:46:00Z"
+title: You Are Here --> X
+---
+
+Things have calmed down just a tad, so I decided to post a quick update
+to the page. In case you hadn't heard, I just started a working with
+Snow-Man and
+bma at
+Mitretek. Obviously this means
+I've been relocating from Corvallis, OR -- the west coast -- to
+Annandale, VA -- the east coast. I'm still mostly offline, as parts of
+my computers are still either on the west coast or en route here. Most
+of the moving and shipping mess should be sorted out by the end of next
+week.
+
+
+My email address stays the same, and my URL stays the same. However,
+anything located on x.pablotron.org, 10k.pablotron.org, and
+home.pablotron.org will be unavailable until I finish reorganizing. Oh
+yeah, I'm surrounded by evil Debianites around here, so I've "decided"
+to install Debian on my main machine. "I feel like one of those
+people who shave their heads and claim they've always been punk."
+(John Cusack's character in "High Fidelity"). Anyway, I'll try and keep
+everyone posted on the job, my relocation, and the Debianization of my
+main machine. Stay tuned for details!
+
diff --git a/content/posts/2001-07-20-dmitry-sklyarov.html b/content/posts/2001-07-20-dmitry-sklyarov.html
new file mode 100644
index 0000000..6b27bf6
--- /dev/null
+++ b/content/posts/2001-07-20-dmitry-sklyarov.html
@@ -0,0 +1,36 @@
+---
+date: "2001-07-20T17:02:00Z"
+title: Dmitry Sklyarov
+---
+
+Hi, sorry about the lack of news lately. In case you hadn't heard,
+our friend the
+DMCA has been busy wreaking
+havoc again. Since there's nothing new here, please take a moment to
+read (and hopefully sign)
+Chris Dibona's Community
+Declaration regarding the arrest and imprisonment of Dmitry Sklyarov.
+You can check it out here.
+
+
+As an aside, you should consider contacting
+Adobe representatives and letting
+them know how you feel about purchasing software from companies that
+encourage incarcerating non-US citizens under bullshit US laws. I've
+already mailed the following people, and I suggest you do the same:
+
+
+
+Oh yeah, be sure to check the
+EFF for up-to-date news regarding
+Mr. Sklyarov's situation.
+
+
diff --git a/content/posts/2001-07-24-debian-ate-my-motherboard.html b/content/posts/2001-07-24-debian-ate-my-motherboard.html
new file mode 100644
index 0000000..3f6f642
--- /dev/null
+++ b/content/posts/2001-07-24-debian-ate-my-motherboard.html
@@ -0,0 +1,54 @@
+---
+date: "2001-07-24T10:11:00Z"
+title: Debian Ate My Motherboard!
+---
+
+
Hooray! Adobe
+decided to call off the storm troopers and join the good guys. You can
+read all about it
+here.
+
+
Oh yeah, I promised an update on the
+Debian Linux install. Well, so
+far things have been going great. I'm now in the unique position of
+having either too new of a glibc or too new of a gcc for occasional
+applications. Of course, that's my only gripe, and it usually only
+takes a bit of tweaking code in order to get it to work properly.
+
+
Anyway, a few days after I installed Debian, my motherboard decided
+to crap out on me. The diagnostic LEDs seemed to think it was a dead
+CPU, so we went out and got a new Duron 750, which didn't do any good.
+A few days later, Snow-Man and I
+went out and got a new motherboard (a MSI K7T Turbo instead of a MSI
+K7T Pro). That seemed to fix things up nicely.
+
+
I haven't been working on a whole lot lately, but I did manage to
+eek in some time to write a quick GUI bash and gdialog wrapper for
+apt-cache search; you can grab it
+here. I revamped my bash tweaks, you can
+grab the latest version from the
+Bash Tweaks project page. I also
+rewrote and posted an updated version of my
+VIM config. You can grab it
+here. I rewrote
+most of my Mutt config as well, but
+I haven't quite finished packaging that for public consumption just
+yet.
+
+
A few random things... Since we share the same office,
+Brian has been threatening me
+with one of
+these sissy
+Nerf guns. I've decided to get
+one
+of these just in case. I accidentally stumbled across
+Astalavista, a great site for
+grey and black hat security goodies. Finally, here's a couple nifty
+links I found on Memepool:
+
+
You Damn Kid: the funniest comic strip I've seen in quite a while.
+
+
diff --git a/content/posts/2001-07-26-banner-ads-suck.html b/content/posts/2001-07-26-banner-ads-suck.html
new file mode 100644
index 0000000..1a56e3d
--- /dev/null
+++ b/content/posts/2001-07-26-banner-ads-suck.html
@@ -0,0 +1,19 @@
+---
+date: "2001-07-26T19:52:00Z"
+title: Banner Ads Suck
+---
+
+Well, I finally decided I'd had enough of banner ads.
+Brian mentioned something a few days
+ago about
+JunkBuster, so I decided to
+spend a bit of time setting it up on my home machine. It took me
+a few evenings of adding common urls to my configs, but it's really
+starting to pay off now. I went ahead and tossed my config directory
+up; you can grab it
+here.
+There's a source tarball, an RPM, and a Windows executable available on
+the page, and
+Debian users can just
+apt-get install junkbuster.
+
diff --git a/content/posts/2001-07-26-bash-tweakin-madness.html b/content/posts/2001-07-26-bash-tweakin-madness.html
new file mode 100644
index 0000000..c8dd33c
--- /dev/null
+++ b/content/posts/2001-07-26-bash-tweakin-madness.html
@@ -0,0 +1,11 @@
+---
+date: "2001-07-26T21:49:00Z"
+title: Bash Tweakin' Madness
+---
+
+I'm not still awake, and if I was I certainly wouldn't be working on
+my
+Bash Tweaks package. The latest
+version, of course, is not available
+here.
+
diff --git a/content/posts/2001-08-05-urls-of-fun.html b/content/posts/2001-08-05-urls-of-fun.html
new file mode 100644
index 0000000..112b69e
--- /dev/null
+++ b/content/posts/2001-08-05-urls-of-fun.html
@@ -0,0 +1,10 @@
+---
+date: "2001-08-05T10:18:00Z"
+title: URLs of Fun
+---
+
+I wrote a couple of URL convenience scripts. One brings up a dialog and
+allows you to enter a url or a shortcut, and the other prompts you with
+a list of the last 20 URLs posted in IRC. You can check them out
+here.
+
diff --git a/content/posts/2001-08-23-the-shortest-update-ever.html b/content/posts/2001-08-23-the-shortest-update-ever.html
new file mode 100644
index 0000000..697329f
--- /dev/null
+++ b/content/posts/2001-08-23-the-shortest-update-ever.html
@@ -0,0 +1,14 @@
+---
+date: "2001-08-23T20:01:00Z"
+title: The Shortest Update Ever
+---
+
+URL Scripts
+0.1.3.
+JunkColor 0.1.0.
+Interesting
+USENET post.
+Switched back to Galeon
+again.
+
diff --git a/content/posts/2001-10-10-the-apex-of-page-updates.html b/content/posts/2001-10-10-the-apex-of-page-updates.html
new file mode 100644
index 0000000..ec8edf0
--- /dev/null
+++ b/content/posts/2001-10-10-the-apex-of-page-updates.html
@@ -0,0 +1,117 @@
+---
+date: "2001-10-10T14:14:00Z"
+title: The Apex of Page Updates
+---
+
+
+A lot has happened since I last updated my page:
+Brian (bma) and
+Karen (aphrael) got
+married! Brian's wedding cruise pictures are available
+here.
+Tom(giblet) and
+Sue (schmoo) were unable to
+join Brian and Karen's wedding cruise due to the post-WTC international
+flight mayhem, so they spent the week at my place instead. Tom posted
+pictures of the week and the reception
+here.
+Also at the reception: Beth (Sue's daughter;she's a great kid and funny
+as hell), Kevin (het), Nick (learath), Jimmy and Megan
+(Karen's non-Internet-enabled friends that we hang out with quite a bit),
+Megan's sister Jill, the man behind the curtain,
+Mr. Mej (mej, KainX)
+himself,
+Richard (richlowe) and
+Jon Anne (lilyj) were
+at the reception as well, and they're staying with
+Stephen (Snow-Man)
+and I for a little while as well. Lots of great
+Gimpable pictures of Richard in
+Tom's pictures. Not that I would ever
+encourage
+someone to
+modify a
+picture of
+Richard, or
+of anyone else for that matter.
+
+
+
+I finally got around to purchasing a CDRW, and I've been burning CDs
+like mad. Somehow I managed to accumulate a couple DivX movies, so
+I burned those along with a CD of mp3s for work, a full backup of my
+home directory, and some other random junk.
+
+
+
+Pablotron is semi-broken at the moment. Snow-Man upgraded PHP on the
+web server, and it seems to have broken some of my spaghetti PHP. I've
+been designing a new backend for another site, and I'll probably update
+it to support site themes and port Pablotron to the new backend. The
+new backend is much, much cleaner than the current Pablotron one; it
+makes extensive use of stylesheets, object oriented PHP, and standard
+configuration files (currently only CSV, but I plan on adding XML
+support in soon). Here's an example of the differences:
+
+Under the new system, that page could be written as follows:
+
+
+
+
+<?php
+require("$DOCUMENT_ROOT/inc/header.php");
+
+$page = new Page();
+$page->start("samplePage", "Sample Page");
+
+$page->start_item("Sample Page"); ?>
+This is a sample page.
+This is a <?php $page->url("sampleUrl", "sample url"); ?>
+<?php $page->end_item();
+
+$page->end();
+?>
+
+
+
+
+Obviously the latter allows us to do all sorts of crazy things that the
+former does not. Coupled with CSS, It also strengthens the distinction
+between Pablotron's content and the layout.
+
+
+
+Some other random stuff; I whipped up a quick script to convert
+Yahoo! Finance stock quotes to
+the GKrellM
+FMonitor
+format, so you can view stocks in GKrellM. You can download it
+here. Well, there's a lot
+more going on, but I have to get some sleep, so I'll try and update
+again tomorrow.
+
Wrote a script to handle patching between the main and -ac trees.
+It's options are pretty straight-forward:
+
+
+Generate a shell script that will update me to 2.4.12-ac1:
+kupi.pl -ug update_me.sh 2.4.12-ac1
+Patch up to the latest ac-series patch, then compile and install the
+kernel:
+kupi.pl -ai
+You'll need to make some changes to the base configuration to get it
+working on your system, but the Kupi tarball is available
+here.
+
+
+
+Oh yeah,
+here's
+a list of ways to say "Oh my god! There's an axe in
+my head" in various languages.
+
+
diff --git a/content/posts/2001-10-18-new-toys.html b/content/posts/2001-10-18-new-toys.html
new file mode 100644
index 0000000..fc89103
--- /dev/null
+++ b/content/posts/2001-10-18-new-toys.html
@@ -0,0 +1,23 @@
+---
+date: "2001-10-18T07:31:00Z"
+title: New Toys
+---
+
+
+
+Forgot to mention that I switched all my drives to ext3 a few weeks
+back. Been working great so far; I've even (accidentally) tested it
+with some abrupt power outages, and the journal does it's magic just
+like it should.
+
+
+
+I got some
+new
+toys. More about setting
+them up in Linux soon. Also, check out this
+war correspondence
+(linked from Fark).
+
+
+
diff --git a/content/posts/2001-10-22-random-stuff.html b/content/posts/2001-10-22-random-stuff.html
new file mode 100644
index 0000000..0e9a896
--- /dev/null
+++ b/content/posts/2001-10-22-random-stuff.html
@@ -0,0 +1,42 @@
+---
+date: "2001-10-22T14:46:00Z"
+title: Random Stuff
+---
+
+
+Here is
+an interesting discussion about the on-going debate regarding binary XML.
+The paragraph about MPEG 7 is particularly interesting.
+This
+article is a brief overview of what's new in Windows XP.
+Interesting to see how far behind Microsoft is wrt to some things, and
+how far ahead they are on others. For example, the author is excited
+about three customizable views and NTP time syncronization, when we've
+had that stuff forever. On the other hand, XP and OSX.1 are busy
+refining translucent window support, while we're still
+trying to figure it out.
+I also stumbled across Directron, an
+online hardware vendor with a bazillion different cases, and
+Kernel Trap, an interesting
+Linux kernel news site.
+
+
+
+I picked up a DVD-ROM drive this weekend, but I'm still fighting to get
+it playing CSS-scrambled disks. If I have any luck I'll post the
+results here. I tried
+the preeptible kernel
+patch, but it failed catastrophically with my SMP box. It looks
+like he corrected a few SMP-related mistakes, so I may give it another
+shot in the next few days.
+
+
+
+I'd be interested in knowing how this page
+renders in various browsers. I've checked it out in Mozilla, Galeon,
+Konqueror, and Opera, and I'd like to know how it renders in
+Internet Explorer (Windows and MacOS), ICab, etc. Screenshots or email
+welcome.
+
+Just upgraded my kernel to
+2.4.13-ac2
+with the preemptible kernel
+patch by Robert Love. Everything appears to be working correctly
+with SMP now, and my system does seem a little bit faster (although it's
+kind of hard to tell ;)). Anyway,
+here
+is a great interview with Robert Love describing the preemptable kernel
+patch and comparing it with the other reduced-latency kernel patch
+floating around.
+
+
+
+Otherwise, things seem to be running okay. Still no luck with the DVD
+drive; I'm starting to think I've got a bum drive (it throws a ton of
+errors regardless of the DVD, player, configuration, etc). The strange
+thing is I can mount and read CDs and DVDs just fine; playing them is
+just a no-go.
+
+
+
+Finally, I posted a no-documentation tarball of my mutt settings. If
+you're interested, you can grab them here. Please
+remove my email and name before using these files.
+
+
diff --git a/content/posts/2001-10-28-read-this.html b/content/posts/2001-10-28-read-this.html
new file mode 100644
index 0000000..e5b9dc2
--- /dev/null
+++ b/content/posts/2001-10-28-read-this.html
@@ -0,0 +1,10 @@
+---
+date: "2001-10-28T07:04:00Z"
+title: Read This!
+---
+
+I just stumbled across this
+transcript of former U.S. president Bill Clinton's October 6th
+speech at Yale University. Read it or else.
+
diff --git a/content/posts/2001-10-29-put-wesley-in-the-airlock.html b/content/posts/2001-10-29-put-wesley-in-the-airlock.html
new file mode 100644
index 0000000..34d3195
--- /dev/null
+++ b/content/posts/2001-10-29-put-wesley-in-the-airlock.html
@@ -0,0 +1,12 @@
+---
+date: "2001-10-29T12:37:00Z"
+title: Put Wesley in the Airlock
+---
+
+Just a quick heads up that
+Slashtroll just posted the
+answers to the interview questions they sent to
+Wil Wheaton a few weeks ago.
+YOu can check them out
+here.
+
diff --git a/content/posts/2001-12-25-ptv-engine-page-redesign-and-a-whole-lot-more-tm.html b/content/posts/2001-12-25-ptv-engine-page-redesign-and-a-whole-lot-more-tm.html
new file mode 100644
index 0000000..08c7581
--- /dev/null
+++ b/content/posts/2001-12-25-ptv-engine-page-redesign-and-a-whole-lot-more-tm.html
@@ -0,0 +1,7 @@
+---
+date: "2001-12-25T00:51:52Z"
+title: PTV Engine, Page Redesign, and a Whole Lot More (tm)
+---
+
+Welcome to the new pablotron. I'm still porting things over to the new engine, so it may be a week or so until everything is back to normal.
+
diff --git a/content/posts/2001-12-31-new-page.html b/content/posts/2001-12-31-new-page.html
new file mode 100644
index 0000000..8e69f98
--- /dev/null
+++ b/content/posts/2001-12-31-new-page.html
@@ -0,0 +1,21 @@
+---
+date: "2001-12-31T15:05:39Z"
+title: New Page
+---
+
+
+I just put the new page up. The
+Download,
+Gallery,
+Links,
+Backend,
+Themes,
+and Account
+sections all need more work; I'll take care of
+that when i get a chance. Feel free to
+mail me
+and let me know what you think of the new
+layout. Thanks to everyone in #e for all the
+help testing things out.
+
+
diff --git a/content/posts/2002-01-01-first-2k2-post.html b/content/posts/2002-01-01-first-2k2-post.html
new file mode 100644
index 0000000..4d4ced2
--- /dev/null
+++ b/content/posts/2002-01-01-first-2k2-post.html
@@ -0,0 +1,32 @@
+---
+date: "2002-01-01T01:53:41Z"
+title: First 2k2 Post
+---
+
+
+You can create accounts now, although there may still be some quirks in
+the code. Feel free to create an account and test the comment code out.
+I've removed some of the sections I wasn't keeping up to date (such as
+Bits and the Site Map), although it's much easier for me to add sections
+now, so they may come back at some point.
+
+
+
+I've been messing around with Ruby a lot lately. Ruby is
+basically an OOP-centric amalgamation of Perl and Python, and it's
+really fun to use. Here's a
+screenshot of a quick GTK+ mail client I hacked together in an evening
+using Ruby.
+
+
+
+Oh yeah, the
+preemptable kernel patch
+is working great on my workstation and on vault (my new fileserver).
+I also finally got my DVD player and my TV tuner card all set up. Okay,
+that does it for tonight. Happy New Year everyone.
+
+
+
diff --git a/content/posts/2002-01-04-random-stuff.html b/content/posts/2002-01-04-random-stuff.html
new file mode 100644
index 0000000..b582731
--- /dev/null
+++ b/content/posts/2002-01-04-random-stuff.html
@@ -0,0 +1,21 @@
+---
+date: "2002-01-04T00:51:57Z"
+title: Random Stuff
+---
+
+
+Thanks everyone for the compliments on the new
+page. For those of you looking for the backend,
+it's still not up yet :(. But, you can check out
+most of the code right now on the
+Backend page; some
+interesting places to start are probably
+the Page class, the Sidebar class, and the CommentItem class.
+
+
+
+A bunch of random stuff... RADKade1 posted this amusing WinXP picture the other day in IRC. I've been messing around with REXML, and I seriously think it's the coolest XML API I've ever seen. That it's written for Ruby in Ruby is quite a coincidence, don't you think? Found Magazine collects found stuff. Wierd.
+
Here is a cool PsyOps history page. Oh yeah, everyone look out for the deadly linux virus; I'm really scared!!!! You should be too!!!(</sarcasm>)
+
+
diff --git a/content/posts/2002-01-07-gestures-in-galeon-cvs.html b/content/posts/2002-01-07-gestures-in-galeon-cvs.html
new file mode 100644
index 0000000..66d943f
--- /dev/null
+++ b/content/posts/2002-01-07-gestures-in-galeon-cvs.html
@@ -0,0 +1,10 @@
+---
+date: "2002-01-07T20:30:36Z"
+title: Gestures in Galeon CVS
+---
+
+
+I'm sitting here trying the new gestures feature of
+Galeon CVS, and I've got to say it's one of the most interesting browser features I've seen in quite a while. Here's another sentence so this isn't a one sentence post.
+
+I posted the first tarball of the backend source. There aren't really any comments or anything describing how it works, so you'll have to sift through it on your own. If you're feeling brave, you can find it here
+
+
diff --git a/content/posts/2002-01-08-quicktime-in-linux.html b/content/posts/2002-01-08-quicktime-in-linux.html
new file mode 100644
index 0000000..024bcff
--- /dev/null
+++ b/content/posts/2002-01-08-quicktime-in-linux.html
@@ -0,0 +1,11 @@
+---
+date: "2002-01-08T14:30:13Z"
+title: QuickTime in Linux
+---
+
+
+After seeing how well it worked for
+Brian (bma), I decided to buy my own copy of
+the Crossover plugin. Movies play fine in my browser (Galeon), and the independant player works great as well. The only installation issue I had was with the QuickTime 5 installer; Enlightenment maps the full-screen override-redirect above the setup window, with no real way to raise it. The solution? Temporarily allow WINE to manage all it's windows, instead of deferring non-full-screen windows to the window manager. You can do this by commenting out the line that says "Managed" = "Y" in your Crossover WINE configuration file (usually $HOME/crossover/dotwine/config). Incidentally, this same fix also works for cranky Windows installers in standard WINE.
+
+Go IBM!!! Stack smash protection in GCC. Read about it here.
+
+
diff --git a/content/posts/2002-01-16-kernel-fun.html b/content/posts/2002-01-16-kernel-fun.html
new file mode 100644
index 0000000..3dca062
--- /dev/null
+++ b/content/posts/2002-01-16-kernel-fun.html
@@ -0,0 +1,73 @@
+---
+date: "2002-01-16T14:15:59Z"
+title: Kernel Fun
+---
+
+
+
+This weekend I decided to upgrade from my trusty 2.4.16 + preempt to
+something a bit more recent. The first thing I tried was
+2.4.18-pre3 +
+O(1) + preempt + lock-break,
+which fell over miserably on my system (eg if it didn't panic at boot I
+could consistently cause a panic with a gmake -j5). After
+some "testing" on
+IRC with
+Robert Love (ie, boot, wait
+until panic and hard lock, write entire panic on piece of paper, reboot
+into stable kernel and type up panic, post panic to web for Robert to
+run ksymoops on, apply patch to kernel, reboot, repeat), I finally
+decided to take a break from
+preempt
+for the week and give low latency a shot. I'm running
+2.4.17
++ rmap +
+O(1) + low latency now, and it
+seems to be pretty stable. I'll try out preempt + lock-break again
+this weekend and let everyone know what happens. By the way, the
+problems I mentioned above with preempt have to do with SMP and
+preemption near interrupts -- all you single-processor users have
+nothing to fear.
+
+
+
+
+There has been a really amusing thread on the LKML for the last few
+weeks regarding automatic kernel build configuration. The thread
+started as a question from ESR about probing the ISA bus, and progressed
+(devolved?) into an amusing war of metaphors between Alan Cox and ESR.
+Essentially, ESR used a hypothetical "Aunt Tillie" to represtent the
+typical technology-impaired "mom and pop" Linux user, who, for some
+unspecified reason, opts to compile her own kernel instead of using the
+modular vendor-supplied, vendor-tested, and vendor-supported version.
+After the Aunt Tillie scenario made relatively little progress against
+Alan Cox and a handful of other people, ESR added "Nephew Melvin" to the
+list of hypothetical characters. Anyway, Alan Cox's latest contribution
+to the argument:
+
+
+
+
+
+From: Alan Cox <alan@aunt-tillie.org>
+...
+pabs@gw-uunet:~> whois aunt-tillie.org
+...
+Registrant:
+ Melvin? What do I type here?
+ 10 Alan Turing Road
+ Surrey Research Park
+ Guildford, Surrey GU2 7YF
+ UK
+
+Oh, I also bought an iPaq 3835; it's pretty cool. I'll post some more info about it once I've had a chance to play with it some more.
+
+
diff --git a/content/posts/2002-02-02-i-can-t-think-of-a-creative-topic.html b/content/posts/2002-02-02-i-can-t-think-of-a-creative-topic.html
new file mode 100644
index 0000000..1b8bb33
--- /dev/null
+++ b/content/posts/2002-02-02-i-can-t-think-of-a-creative-topic.html
@@ -0,0 +1,15 @@
+---
+date: "2002-02-02T17:15:56Z"
+title: I Can't Think of a Creative Topic
+---
+
+
+A Changelog of the differences between the available ultra-beta version PTV and the live version of my page. You really shouldn't be attempting to use this for anything other than satisfy idle curiosity; it's not documented very well and the configuration is difficult. That said, you can check out the Changelog
+here.
+
+
+
+I posted a slightly more recent screenshot on my
+Screenshots page. You can see the serial console on my iPaq (left screen, top-center console).
+
+
diff --git a/content/posts/2002-02-02-preempt-back-in-business.html b/content/posts/2002-02-02-preempt-back-in-business.html
new file mode 100644
index 0000000..94e4a68
--- /dev/null
+++ b/content/posts/2002-02-02-preempt-back-in-business.html
@@ -0,0 +1,27 @@
+---
+date: "2002-02-02T05:40:57Z"
+title: 'Preempt: Back in Business'
+---
+
+
+I gave the preempt-kernel
+patch another shot today. This time it seems to be working properly
+on my system. I also posted a combined "meta-patch" against 2.4.17
+vanilla of all the junk I've got in my kernel; you can check it out here.
+
+
+
I gave up
+on WinCE and installed Familiar Linux on my iPaq.
+It's not fully functional yet, but so far it looks promising. Any
+distribution that comes with Ruby in it's base distribution is
+okay in my book. On a side note, I should mention that the people in
+#handhelds.org (OpenProjects IRC)have been
+incredibly helpful; I would probably still be trying to connect to my
+iPaq in Linux if it weren't for their help.
+
+I finished the main story of Grand Theft Auto 3 (GTA3); I've still got several mini missions to take care of (specifically, 20 of them), so it's not like I'm totally finished. I think GTA3 is probably one of the top 5 console games of all time. It really is that good.
+
+
+
+NVidia is finally coming out with several new dual-head capable chipsets. I reeeeeeeeeeeeeally want a
+GeForce 4 Ti 4600; I'm going to figure out a way to make it happen. The first GeForce 4 Ti 4600 card is available here.
+
diff --git a/content/posts/2002-02-15-mmmmm-money.html b/content/posts/2002-02-15-mmmmm-money.html
new file mode 100644
index 0000000..f0f1e00
--- /dev/null
+++ b/content/posts/2002-02-15-mmmmm-money.html
@@ -0,0 +1,10 @@
+---
+date: "2002-02-15T01:09:01Z"
+title: 'Mmmmm Money... '
+---
+
+
+In light of the so-called campaign finance reform bill before congress, I thought
+this article, which breaks down soft money contributions by party and source, was pretty interesting.
+
+I've been working on a new theme for the page called Alloy. The theme doesn't really bear any resemblance to metal; I have no idea where the name came from. Alloy isn't finished yet; I still need to change the sidebar and come up with a new style for the item titles. Anyway, you can check it
+out by clicking here (click here to get the default theme back). Your browser has to accept cookies in order for the themes to work between pages.
+
+The comments on Slashdot are
+usually terrible, but occasionally there are incredibly insightful
+comments or links. Case in point: this
+essay linked by jACL.
+Titled "Was Democracy Just a Moment" and written by Robert
+D. Kaplan, the essay covers democracy, economic stability, globalism,
+regimes, and more. I used to "borrow" my stepmom's issues of Atlantic
+Monthy and read them cover to cover; this article just inspired me
+to get my own
+subscription.
+
+An amusing example of a lack of proper priority inversion handling from the LKML:
+
+
+
+
+One mainframe at MIT
+was decomissioned in the early 70's and they found a "run only when idle"
+task that had been started around seven years earlier and still hadn't gotten
+any time slices because the server had never been completely idle. (The
+pathfinder mars probe kept rebooting for a similar reason: a vital system
+task was getting starved while it held a semaphore that other stuff needed,
+and not scheduling before timeouts caused a reboot.
+
+
+
diff --git a/content/posts/2002-03-04-stupid-white-men.html b/content/posts/2002-03-04-stupid-white-men.html
new file mode 100644
index 0000000..f120505
--- /dev/null
+++ b/content/posts/2002-03-04-stupid-white-men.html
@@ -0,0 +1,10 @@
+---
+date: "2002-03-04T22:20:26Z"
+title: Stupid White Men
+---
+
+
+I just got (and finished)
+Michael Moore's newest book, "Stupid White Men." I highly recommend it to anyone who wouldn't be turned off by the obvious political bias.
+
+Not a whole lot going on. My iPAQ mysteriously died on Monday, then mysteriously came back again on Wednesday evening. I got a GeForce 4 Ti 4600, but it's still not working properly; either the card I have is defective or it doesn't cooperate nicely with my hardware. We'll see.
+
+
+
+There's a new version of REXML available with full XPath support.
+
+
diff --git a/content/posts/2002-04-01-imlib2-ruby-and-rbot.html b/content/posts/2002-04-01-imlib2-ruby-and-rbot.html
new file mode 100644
index 0000000..3eacd5b
--- /dev/null
+++ b/content/posts/2002-04-01-imlib2-ruby-and-rbot.html
@@ -0,0 +1,21 @@
+---
+date: "2002-04-01T16:30:39Z"
+title: Imlib2-Ruby and rbot
+---
+
+
+I guess I forgot to announce the initial release of Imlib2-Ruby. Apparently it's a good week for
+Ruby software; Tom just released the first version of rbot, his cool all-ruby IRC bot. I've been helping him "test" rbot a bit. BTW in this context, "test" really means "wait until he says 'check out this new feature!', then try and make it do annoying or malicious stuff or crash the bot". Case in point:
+
+
+<pabs> rbot: remind giblet about poop every 0.1 seconds
+<rbot> okay
+*** Signoff: rbot[Excess Flood]
+* pabs whistles
+
+
+
+Anyway, we're both in this week's Ruby News; you can check it out here.
+
+
diff --git a/content/posts/2002-04-03-still-no-gf4.html b/content/posts/2002-04-03-still-no-gf4.html
new file mode 100644
index 0000000..a1c731f
--- /dev/null
+++ b/content/posts/2002-04-03-still-no-gf4.html
@@ -0,0 +1,31 @@
+---
+date: "2002-04-03T01:24:27Z"
+title: 'Still no GF4 '
+---
+
+
+After a bit of haggling on the part of eVGA, I finally got my replacement GeForce4 Ti 4600. The new one doesn't work either :(. We tested it out in
+Stephen's box, and it worked great. Which means the problem is my box :(. My best guess at this point is my el-cheapo 400W power supply, so I ordered a better 460W power supply from
+PC Power and Cooling
+(recommended by Stephen. Aka
+Snow-Man.
+He just redesigned his
+his page. You should
+check it out.
+<PLUG>
+Snow-Man wants you to check out his
+new page. The one
+he just
+updated.
+</PLUG>).
+
+
+
+I snagged the GCC ARM toolchain earlier this evening; I'm going to write apps for Familiar on my iPAQ. Maybe even some for Opie if I can ever figure out Qt Designer: I'm accustomed to Glade, which is much more intuitive, in my opinion. Speaking of Glade, Ruby/GTK+ and Glade/Ruby (Debian users: libgtk-ruby and libglade-ruby, respectively) are amazingly simple to use.
+
+
+
+PS. Check out Snow-Man's
+newly redesigned page.
+
+
diff --git a/content/posts/2002-04-11-gf4-take-2.html b/content/posts/2002-04-11-gf4-take-2.html
new file mode 100644
index 0000000..3f54d3f
--- /dev/null
+++ b/content/posts/2002-04-11-gf4-take-2.html
@@ -0,0 +1,47 @@
+---
+date: "2002-04-11T01:55:46Z"
+title: GF4, Take 2
+---
+
+
+My exchanged GeForce4 still doesn't work, even with my new power supply. My best guess is some AGP quirk with my motherboard;
+I'm going to email Nvidia and maybe Tyan to see if I can get some answers.
+
+
+
+I've had a few requests for my Junkbuster configuration.
+Here are a couple of
+Junkbuster-related scripts, and here
+are my junkbuster config files, current as of right now (I use the
+auto-update cron script distributed with Junkbuster, so my configuration
+changes a little bit every once in a while).
+
+
+
+Oh yeah, Joe (duerrj in
+#gah) pointed me towards Level
+Six. They sell a variety of interesting Playstation peripherals,
+including this
+Playstation to USB adapter, which I bought. Now I can play roms in
+Snes9x (Debian users, apt-get install
+snes9x-x or snes9x-gl) and X-MAME (Debian users: apt-get
+install xmame-x or xmame-gl) with a joystick instead
+of the keyboard.
+
+
+
A few random urls: Afro Tech
+Mods has a bunch of really funny and pointless
+ PC mods. My
+friend Ed is working on a music site called Hip Hop Mecca; there's not much
+there yet, but check it out and let him know what you think. My friend
+John is doing something similar at
+Sample Scene. Okay,
+that's all for now.
+
+I finally got tired of using my iPAQ
+over a 115kb/s serial link, so I switched to USB
+networking. Wow. ipkg upgrade (analagous to
+apt-get dist-upgrade on a Debian system) is a lot faster now;
+roughly 120kB/s instead of 10kB/s over the serial link. The theoretical
+maximum throughput is about 1.37MB/s, but I think the limiting factor
+here is the iPAQ CPU (a 206MHz StrongARM processor), since things get
+kinda slow when I'm doing really heavy "disk" and network operations.
+
+
+
+The other thing I did was get QtopiaGNUBoy working on the iPAQ. The problem is as follows: the GNUBoy launcher is looking for the executable qtopiagnuboy, which is placed in /opt/QtPalmtop/bin. For some idiotic reason, that path is not in $PATH. You can work around that by setting $PATH properly from the console (ex: # PATH="$PATH:/opt/QtPalmtop/bin"; export PATH for sh and bash users, or setenv PATH "$PATH:/opt/QtPalmtop/bin" for csh and tcsh users), but typing that out on the mini-keyboard sucks. The correct fix is to modify /etc/init.d/qpe and add the following lines:
+
+
+
+PATH="$PATH:$QPEDIR/bin"
+export PATH
+
+
+
+Oh yeah, for those of you who would rather do HTTP proxying instead of (or in addition too) IP masquerading, /etc/init.d/qpe is also a good place to set http_proxy and HTTP_PROXY (Konqueror/Embedded incorrectly uses the latter).
+
+
+
+Anyway, GNUBoy works -- even for color games -- but it's really not
+playable yet. The requisite screenshots: Monopoly and Zelda. For the first time in my
+life I have more USB devices than I can plug in at once: my UPS, my
+Playstation controller adapter, and my iPAQ. I'm planning on
+getting another controller adapter so I can teach Snow-Man why I was feared up and down
+the west coast in Street Fighter II Turbo (as long as Joe wasn't around), and all
+across the country in Mario Kart (as long as Sean wasn't around).
+
+I just posted version 0.4.0 of
+ Imlib2-Ruby; the post to the ruby-talk mailing list is
+here.
+You can also view the new RDoc-generated online API reference here, or skip straight to the
+0.4.0 download here.
+
+
diff --git a/content/posts/2002-04-24-me-kicks-verisign-in-the-nuts.html b/content/posts/2002-04-24-me-kicks-verisign-in-the-nuts.html
new file mode 100644
index 0000000..f625f5b
--- /dev/null
+++ b/content/posts/2002-04-24-me-kicks-verisign-in-the-nuts.html
@@ -0,0 +1,17 @@
+---
+date: "2002-04-24T19:44:23Z"
+title: /me kicks VeriSign in the nuts.
+---
+
+
+First the bad news. VeriSign attempted to domain slam three of my domains! I filed a complaint with the Better Business Bureau. If the same thing happens to you, here is the form you want to fill out. Oh, and never, ever, get a domain through VeriSign; use DH Consulting instead and support our canadian friends instead.
+
+
+
+Imlib2-Ruby 0.4.1 is out. It fixes a few minor bugs and adds a workaround for the broken imlib_image_draw_pixel() call. I also finished the first version of Xmms-Ruby, my Ruby bindings for XMMS.
+
+
+
+My iRiver SlimX iMP-350 showed up finally. It's really cool; I highly recommend it to anyone in the market for a portable MP3 player.
+
+
diff --git a/content/posts/2002-04-25-so-you-want-to-learn-japanese.html b/content/posts/2002-04-25-so-you-want-to-learn-japanese.html
new file mode 100644
index 0000000..05694f0
--- /dev/null
+++ b/content/posts/2002-04-25-so-you-want-to-learn-japanese.html
@@ -0,0 +1,10 @@
+---
+date: "2002-04-25T18:47:17Z"
+title: So You Want to Learn Japanese?
+---
+
+
+I mentioned that I wanted to learn Japanese in #ruby-lang so I could read the Ruby core development list, and so I'd know what was going on if I ever get to visit Japan. Matju pointed me towards
+this page, which is the funniest thing I've seen in a while.
+
+I just posted Xmms-Ruby version 0.1.1. You can read the ChangeLog here, or skip directly to the download here. Xmms-Ruby is also available in Pablotron CVS under the module xmms-ruby; see the CVS page for instructions on checking modules out of CVS.
+
+
diff --git a/content/posts/2002-05-26-old-themes-rise-from-the-grave.html b/content/posts/2002-05-26-old-themes-rise-from-the-grave.html
new file mode 100644
index 0000000..1e72079
--- /dev/null
+++ b/content/posts/2002-05-26-old-themes-rise-from-the-grave.html
@@ -0,0 +1,19 @@
+---
+date: "2002-05-26T05:21:00Z"
+title: Old Themes Rise from the Grave!
+---
+
+
+I rewrote the Themes page and ported several of the themes from the old backend. The old default theme is called Retrotron. The Pabsdot theme is back, and so is Kindergarten, so hopefully Hendryx will stop bugging me about it ;).
+
+
+
+I stumbled across some cool stuff for the iPaq that I thought was worth sharing. Well technically most of it is for the Sharp Zaurus, but the Zaurus runs Qtopia on an Intell StrongARM SA-1100. iPaqs running Familiar Linux and either Qtopia or Opie are binary compatible with the Zaurus, so you can interchange packages, binaries, and source. Anyway, here is a great Qtopia software index. GraphIt! is a nice replacement for graphing calculators, Sheet/Qt is a spreadsheet program which doesn't suck, Konqueror/Embedded is exactly what it sounds like, and Tab Manager allows you to add, modify, and remove the Qtopie (or Opie) tabs.
+
+
+
+I also bought a basic (yet entertaining) Qtopia RTS game from Eon Games called Strategic Assault. I'm about half way through the full version (I bought the expansion pack as well), and I really recommend it to other Qtopia users out there; it's a lot of fun, and it only costs $26US. Oh yeah, I'm not sure if I've mentioned this before, but you can check out a handful of Qtopia screenshots I've taken here. Okay, that's it for this evening.
+
+I just released the first version of FAM-Ruby, my FAM bindings for Ruby. You can check the project page out here, or skip directly to the download here.
+
+
diff --git a/content/posts/2002-06-09-come-on.html b/content/posts/2002-06-09-come-on.html
new file mode 100644
index 0000000..c75a8c9
--- /dev/null
+++ b/content/posts/2002-06-09-come-on.html
@@ -0,0 +1,12 @@
+---
+date: "2002-06-09T22:32:15Z"
+title: Come On!
+---
+
+
+
+
diff --git a/content/posts/2002-06-16-domain-name-registration.html b/content/posts/2002-06-16-domain-name-registration.html
new file mode 100644
index 0000000..81ddafe
--- /dev/null
+++ b/content/posts/2002-06-16-domain-name-registration.html
@@ -0,0 +1,13 @@
+---
+date: "2002-06-16T20:23:03Z"
+title: Domain Name Registration
+---
+
+
+My friends Alonzo and Ed recently lost their domain because they were unable to get in touch with their domain name registrar before the domain expired, and someone else scooped it up (their domain was hiphopmecca.net, by the way). I register the few domains I'm responsible for through Dave Henderson's (aka epoch in #gah on OPN IRC) registrar, DH Consulting; I've never had any problems getting in touch with him on short notice, and I highly recommend him to anyone looking to register a domain.
+
+
+
+Apparently Xmms-Ruby is available in the FreeBSD ports collection now. Noone told me they were adding it to ports, but Richard mentioned that he saw it posted. So Imlib2-Ruby and Xmms-Ruby are available to the BSD folks.
+
+
diff --git a/content/posts/2002-07-21-i-m-still-alive.html b/content/posts/2002-07-21-i-m-still-alive.html
new file mode 100644
index 0000000..df31c91
--- /dev/null
+++ b/content/posts/2002-07-21-i-m-still-alive.html
@@ -0,0 +1,18 @@
+---
+date: "2002-07-21T21:49:09Z"
+title: I'm Still Alive!
+---
+
+
+I set up a machine outside the firewall. So far I've used it to play around with IceCast, CIPE, and IP Tables. I also used it as an excuse to install TripWire, altough I haven't finished tweaking it yet. Everyone knows the Debian Linux install is less than spectacular, so I've been trying to build a basic "user friendly" Debian ISO with the Progeny PGI graphical installer. If I get anything interesting up and running I'll post it here.
+
+
+Sean (aka dmron on IRC) posted a bunch of Jaguar screenshots. You check out the screenshots and read what people have to say about the new features
+here . If you're looking for it (I was), Chris.com has a ton of ASCII art, conveniently organized into categories. Here's an amusing list of comparisons between the Constitution and Bill of Rights and the behavior of the current administration.
+Also, be sure to check out this interesting article about media consolidation in the United States. I bought a couple of t-shirts from T-Shirt Hell; their shipping sucks, but their shirts are really funny. If you're into Trance music, you'll probably like Massinova.
+
+
+
+Be sure to check out my new improved desktop in this screenshot. Oh yeah I saw DJ Shadow in live a few weeks ago; he was really good. Okay, that's it for today.
+
+Yesterday I drove to Cleveland, OH, then turned right around and came
+back again. Why, you ask, would I submit myself to 14 hours of driving?
+To pick up Sue's cat, Ickle. He didn't have a
+home and he was going to go to a shelter unless someone could take care
+of him. Brian and Karen offered to take care of him,
+but they're in the DC area too, and they couldn't make the trip. I
+wouldn't go so far as to say the trip was fun, but it was certainly
+interesting. I'd never been to Ohio, and I've only been to Pennsylvania
+once: my dad and stepmom
+wanted to visit Scranton, PA, the city in Harry Chapin's song "30,000
+Pounds of Bananas". I also drove by Pittsburg and through
+Cleveland, and I drove on both the Ohio and Pennsylvania turnpikes.
+
+So last weekend I went with my friends Alonzo, Ed, and Lee to the MTV2 Smokin' Grooves 2002 concert and saw Lauren Hill, Outkast, and The Roots. I liked everyone at the show but overall I think The Roots were the most entertaining (followed closely by Outkast). The list of other notable concerts I've seen since I moved to the DC area: Blink 182 and Crystal Method (with Stephen [Snow-Man], Megan, and Jimmy), DJ Shadow (with Alonzo [osiekhan] and Lee), and Cake (with Richard [richlowe] and Jon-Anne [lilyj]). One of the cool things about the DC area (as opposed to the places I lived in Oregon) is there's almost always great concerts coming up.
+
+
+
+I've been playing around with User Mode Linux (UML). The gist of UML is it allows you to compile and run the Linux kernel as an executable, which means you can do fun stuff like run an arbitrary number of "virtual" machines inside one physical machine (eg. a jail or chroot environment on crack, or a protected environment for a vhost client, etc) or debug and profile the running kernel with all the standard userspace tools (gdb, gprof, ddd, etc). It would also be useful for rapidly prototyping network designs or isolating daemons on servers. Debian users can apt-get install user-mode-linux{,doc} uml-utilities, or you can be a man and patch the kernel tree yourself like I did ;). There's also the beginnings of a user site at http://www.usermodelinux.org/.
+
+
+
+People have been having trouble creating accounts on the page. I'm not sure if it's an IE issue or if a PHP update broke my authentication, but feel free to email me if you can't log in to your account or if you can't post comments any more. Finally, I've been accused of not putting enough graphics on my page and having it look "bland like all the other linux geeks' pages". So, here's a picture from Fark to tide everyone over until my next update:
+
+
+
+
+
+
+
+
diff --git a/content/posts/2002-10-13-the-worst-man.html b/content/posts/2002-10-13-the-worst-man.html
new file mode 100644
index 0000000..ab510b6
--- /dev/null
+++ b/content/posts/2002-10-13-the-worst-man.html
@@ -0,0 +1,10 @@
+---
+date: "2002-10-13T18:02:41Z"
+title: The Worst Man
+---
+
+
+I'm in the UK. Tom (giblet) and Sue (schmoo) got married. I was the best^Wworst man! I took pictures! You can find them here. Tom's pictures are here. Richard's (Jaded) pictures are here.
+Okay, bye!
+
+I added Xinerama support to Feh. It's available in CVS Feh right now, but if you use the source tarball (or source rpm), you can try it out now with this patch. I also wrote a small command-line mysql client in Ruby called rq. You can download a tarball here.
+
+
+
+I still don't have a nice gallery of the UK images from last weekend up, so if you don't feel like browsing bazillions of images without thumbnails, you might want to check out Tom's mirror of my pictures. By the way, the camera I bought is the Fuji F401; it's only a 2.1 megapixel camera, but it's got some funky 4 megapixel interpolation trick (which actually helps a little), it's small as hell, and it's batteries last forever. I'm pretty happy with it, and I recommend it to anyone in the market for a digital camera.
+
+
+
+The Debian package for EPIC+TE broke, so I took the opportunity switch completely to Irssi. So far I'm really happy with it; I've got it rotating and compressing logs on it's own (instead of requiring a funky cron job), saving URLs to a MySQL database, and tab-completing dictionary words. It also seems to have much nicer multi-server support than EPIC+TE and BitchX.
+
+
+
+Seanbaby has a list of the top (bottom?) 20 worst games for NES of all time. Check it out here.
+Woody Harrelson wrote an interesting article about the current political climate. Here's an Onion article echoing the roughly the same sentiment. If someone feels like contributing to the cool cases for Paul fund, they can buy me this case. Oh yeah, here's the test page for a new Pablotron theme I've been working on. It's not finished yet, but I think it's going to be the new default theme when I'm done. Okay, that's it for today.
+
+
diff --git a/content/posts/2002-10-21-kernel-fun.html b/content/posts/2002-10-21-kernel-fun.html
new file mode 100644
index 0000000..dffee2a
--- /dev/null
+++ b/content/posts/2002-10-21-kernel-fun.html
@@ -0,0 +1,18 @@
+---
+date: "2002-10-21T23:15:38Z"
+title: Kernel Fun
+---
+
+
+I posted a patch for the current kernel I'm using. You can grab it and my kernel config here. Please read the README before using the patches. I added a few more Xinerama fixes to the CVS version of
+feh, the new and improved diff against feh 1.2.1 is available here.
+
+
+
+I just switched my mail filtering over to SpamProbe. So far things have been working great.
+
+So I have some gallery code written now. The only pictures that are really ready for consumption are the pictures of Tom and Sue's wedding. The code is mine, but I borrowed a few ideas from Tom's gallery page. I think I might try to get comments working on them at some point as well.
+
+
+
+Here is an interesting interview of Tom Petty. This page has a whole bunch of funny stories. Here is an amusing article about frivelous lawsuits.
+
+
+
+A couple people have asked about various config files, so I thought I'd post them. Here is my current Mutt configuration (please remove my email address before using these), and here is my Screen config file.
+
+
diff --git a/content/posts/2002-10-27-no-love-from-2-5-44.html b/content/posts/2002-10-27-no-love-from-2-5-44.html
new file mode 100644
index 0000000..5b1be9f
--- /dev/null
+++ b/content/posts/2002-10-27-no-love-from-2-5-44.html
@@ -0,0 +1,19 @@
+---
+date: "2002-10-27T16:00:13Z"
+title: No Love From 2.5.44
+---
+
+
+I tried unsuccessfully to upgrade to kernel 2.5.44 this morning. The NVidia kernel patch I mentioned last night worked great, but now the kernel doesn't properly see my mouse (a PS/2 MS Intellimouse Explorer). I've scoured the LKML, and as far as I can tell it should be working. Oh well; I'll give it another shot sometime in the next few days.
+
+
+
+I finally got around to writing some gallery code. It's not finished yet, but you can see what I've got so far right here.
+
+
+
+John Bernard has been packaging FAM-Ruby and Imlib2-Ruby for a few months now. They're not in Debian (yet), but you can download the packages from his download page.
+
+
+
+
diff --git a/content/posts/2002-10-27-scripts-and-more.html b/content/posts/2002-10-27-scripts-and-more.html
new file mode 100644
index 0000000..5c01a17
--- /dev/null
+++ b/content/posts/2002-10-27-scripts-and-more.html
@@ -0,0 +1,53 @@
+---
+date: "2002-10-27T01:19:10Z"
+title: Scripts and More
+---
+
+
+I wrote a couple quick utilities this weekend. The first one is here; it allows you to write C as if it was a scripting language. Something like this, for example:
+
+It's a total hack, but it's still kind of entertaining. Anyway, the second utility is just a Procmail log colorizer. That's available here.
+
+
+
+Random stuff. Here's an
+article about the worst roommate in the world.
+Here is
+a huge list of card tricks (I just bought a deck of cards a few days
+ago, and Alonzo was showing me
+some magic tricks he knew). Here are patches for the NVidia kernel driver so it will work
+under the 2.5 kernel (I haven't tried them yet). Looks like Stephen had a change of faith. I got an
+early birthday present from my dad and stepmom: a Lian
+Li PC61 case! I haven't set it up yet, but here's
+a picture of Alonzo checking it out, and here
+is a picture of it on it's own. Finally, here's my random picture of
+the day (posted in #gah by JeopardE):
+
+I released version 0.4.2 of Imlib2-Ruby. The ruby-talk announcement is here, and a complete list of changes is available here.
+Oh yeah, Tom released version 1.2.2 of feh, which includes my Xinerama patches and a few other goodies.
+
+
+
+Finally, a few interesting links. I've been reading OC Forums almost daily now, there's lots of interesting computer hardware information there. John pointed me at Ozones, which is the craziest cross-platform JavaScript I've ever seen. He's also got a bunch of really cool hands-on graphics tutorials. Richard gave me this really interesting Paul Graham article on Lisp.
+
+I tried out Menuet this evening. It's really cool. Make sure to try the 2.0 prerelease if you decide to give it a shot; it's got a lot more cool stuff.
+
+
+
+I've been trying to write Ruby bindings for FreeType2. I've gotten pretty far, but the bindings aren't quite done yet. You can see what I've got so far right here.
+I'm also thinking about writing bindings for the image processing library DevIL, but I haven't started yet.
+
+
+
+I stumbled across a really cool graphics programming site called FlipCode. It's got lots of
+interesting graphics tutorials, engines, and demos. Finally, here's a really interesting interview with Janeane Garofalo.
+
+
diff --git a/content/posts/2003-01-06-big-freakin-update.html b/content/posts/2003-01-06-big-freakin-update.html
new file mode 100644
index 0000000..a1ae434
--- /dev/null
+++ b/content/posts/2003-01-06-big-freakin-update.html
@@ -0,0 +1,21 @@
+---
+date: "2003-01-06T23:37:34Z"
+title: BIG FREAKIN UPDATE
+---
+
+
+I got both cable modem and SDSL working together (ie multiple routes to internet, the same setup we had when Stephen lived here). This page explains how to get multiple routes working. Heard about the CD price fixing settlement? Get your refund at the Music CD Settlement page. If you're having trouble decyphering the legalize, maybe you're the 2% of the population that have better luck with this puzzle.
+
+
+
+Requisite geek links: Here are some picture sof the new tablet Zaurus. If they release one with a SD slot and a CF slot I'll definately buy one. This image shows the light on earth at night. This article from Ars Technica talks about bandwidth and latency, specifically regarding RAM, but applicable to networking and other technology as well. I found this Kuro5hin thread which talks about the ramifications of the Slashdot effect (and Farking) on content providers and hosting companies. From there I stumbled across these dedicated hosting deals (although Tom and I have already decided to give United Colo a try, since they don't have a setup fee, they offer more bandwidth per month, and they're willing to install Debian.
+
+
+
+I found a handful of interesting news articles. Here is one talking about bias in the media. This article talks about Google and morality. This article breaks down some interesting RIAA statistics regarding piracy. Here is an article talking about the drug war, and here is the Drug War Clock. Here is a really good editorial from AlterNet which discusses the problems with abstinence only education programs. Not a big Poindexter fan? This guy decided to give Poindexter some of his own medicine. I stumbled across this essay by Bertrand Russell. It was written in 1927, but it's still strangly relevant. If you liked that, then you'll like this interview with the late Douglas Adams even more. This essay isn't quite as eloquent as the previous two, but it's still an interesting read. Worried about living in a police state? Join the campaign for preemptive impeachment! Finally here's an amusing article about the current administration.
+
+
+
+Okay, that's it for today. I'll try and be less of a recluse this year.
+
+
diff --git a/content/posts/2003-01-07-maybe-posting-will-cure-my-insomnia.html b/content/posts/2003-01-07-maybe-posting-will-cure-my-insomnia.html
new file mode 100644
index 0000000..9a0cc80
--- /dev/null
+++ b/content/posts/2003-01-07-maybe-posting-will-cure-my-insomnia.html
@@ -0,0 +1,9 @@
+---
+date: "2003-01-07T04:03:10Z"
+title: Maybe Posting Will Cure My Insomnia
+---
+
+
+I just finished reading 1984 last week, and right now I'm reading Blowback. I stumbled across this picture of the new GBA and it looks really cool. I had a Game Boy years ago; maybe it's time to pick one up again. Also, here is an interesting article about the state of cell phone service in the US (it basically says Sprint sucks and Verizon is great). I don't really know how credible it is, since I have never owned a cell phone, but I think I've heard Stephen (Snow-Man) and Brian (bma) say basically the same thing.
+
+Tom and I finally got our box from United Colo. The connection seems pretty good; there was a minor snafu, but we're hoping that was just a one-time hiccup. The connection is fast as hell; 80ms ping from my house (that's east coast to west coast, not bad at all), and I downloaded a kernel from kernel.org at 7.4MB/sec (yes, that's megabytes). We'll give it a reliability test for a few more weeks, and if things work out okay, I'll be moving Pablotron and maybe some other stuff over.
+
+I don't have anything productive to say, so here are some interesting links instead.
+Who says kernel hackers don't have a sense of humor?
+Check out this KernelTrap article. I think I want this really small and light laptop. If you've got Flash, take a look at Kraftwerk's page.
+
+
diff --git a/content/posts/2003-01-12-bowling-for-columbine.html b/content/posts/2003-01-12-bowling-for-columbine.html
new file mode 100644
index 0000000..c39a3d8
--- /dev/null
+++ b/content/posts/2003-01-12-bowling-for-columbine.html
@@ -0,0 +1,23 @@
+---
+date: "2003-01-12T07:58:13Z"
+title: Bowling for Columbine
+---
+
+
+I finally saw Bowling for Columbine, the latest film by Michael Moore. It's the most interesting movie I've seen this year :)! Seriously though, it's amazingly good, and I'd recommend it to everyone, even gun nuts. Out of curiousity, I went to NRA's site and searched for "Bowling for Columbine", but apparently they have nothing to say. I also find it amusing that some of the most insightful comments in the film come from Marilyn Manson and three Canadian high school students cutting class at a Taco Bell.
+
+
+
+Tom and I have our colo box up, although I haven't moved site yet. I'd appreciate it if people could
+visit the mirror and tell me how things feel in terms of speed, reliability, etc. The gallery isn't up yet, but everything else should be about the same.
+
+
+
+I've heard a few people (including myself) complain about the non-random behavior of shuffle mode in XMMS, so I wrote a small patch to replace the calls to random() with calls to OpenSSL's crypto-grade random function. The patch is against XMMS 1.2.7, and you can download it here.
+Also, I wrote this short bit of Ruby for someone in #ruby-talk. It tests a string against a shell-style glob (it only supports wildcards though, not character ranges). A couple other interesting Ruby gems I wrote are Array#map_with_indices and String#to_class. At this rate I'll need a Ruby gems page ;-).
+
+
+
+A few random links before I go to sleep. Representative Bob Barr wrote a suprisingly intelligent editorial called "Crimes Before the Fact". Also, here is an interesting interview with Kurt Vonnegut. Oh yeah, I officially joined the ACLU. Okay, that's it for today.
+
+
diff --git a/content/posts/2003-01-12-riaa-defaced-again-yawn.html b/content/posts/2003-01-12-riaa-defaced-again-yawn.html
new file mode 100644
index 0000000..55bb8d2
--- /dev/null
+++ b/content/posts/2003-01-12-riaa-defaced-again-yawn.html
@@ -0,0 +1,9 @@
+---
+date: "2003-01-12T08:09:05Z"
+title: RIAA Defaced Again (yawn)
+---
+
+
+Not really news, but I thought this forged article on the RIAA site. In case they have it repaired by the time you get there, I mirrored the article here. Okay, I'm really going to bed now.
+
+
diff --git a/content/posts/2003-01-22-new-kid-tom-tomorrow-and-more.html b/content/posts/2003-01-22-new-kid-tom-tomorrow-and-more.html
new file mode 100644
index 0000000..bb284e9
--- /dev/null
+++ b/content/posts/2003-01-22-new-kid-tom-tomorrow-and-more.html
@@ -0,0 +1,20 @@
+---
+date: "2003-01-22T23:01:05Z"
+title: New Kid, Tom Tomorrow, and More
+---
+
+
+Other than Stephen and Megan having their baby, not a lot has been going on, but I do have a big pile of interesting links. I followed the link on Tom's sidebar to Boing Boing and it's got some cool stuff on it. Interesting news editorials are here, here, here,
+here,
+here, and here. Also, I found another good Bertrand Russell essay.
+
+
+
+Ever want to build your own emulation console? Here's how. Or maybe you just want to use SNES controllers for SNES9x? If so, then you'll want one of these. If you're looking for an audio device that works with your existing MP3 archive, then you should check out the AudioTron. Tom's Hardware has an in-depth article about the GeforceFX.
+Here is an interesting article about tunneling HTTP via TLS (eg the successor to SSL). The OpenSSL related links page also has a ton of interesting SSL and TLS info.
+
+It looks like Firefly might
+not be dead yet. The number two Firefly guy posted this comment,
+which says the guys in charge are still trying to save the show. Also,
+Firefly Support just
+updated yesterday. And here is a list of
+companies who have bought advertising time during Firefly. For those of
+you unfamiliar with the show, you can check out a good review right here.
+
+
+
+Michael Moore made an
+appearance on the Daily Show. Here's
+the downloadable version. Alternet has
+this
+positive review of Bowling for
+Columbine. A few editorials that are bound to piss people off are
+here
+and here
+(obviously I don't agree with the second one at all, but it's still an
+interesting read). Everyone who has an opinion about the RIAA should
+read this article.
+Finally, here is a big
+list of logical fallacies, and here is a Census
+Bureau population guestimator.
+
+
diff --git a/content/posts/2003-02-12-update-of-death.html b/content/posts/2003-02-12-update-of-death.html
new file mode 100644
index 0000000..03a2400
--- /dev/null
+++ b/content/posts/2003-02-12-update-of-death.html
@@ -0,0 +1,102 @@
+---
+date: "2003-02-12T21:50:54Z"
+title: Update of Death
+---
+
+
+I was going to procastinate for another week or so, but Galeon is using an obscene amount of RAM, running slow, and generally making web browsing an unpleasant experience. See, when I stumble across links I'm interested in, I usually just keep a tab open until I either bookmark it (effectively losing the URL forever) or add it to my page so other people can appreciate it. So, when I don't update my page for a while, I end up with a web browser that has 50 tabs open, eats 140 megs of RAM and takes 5 seconds to open an empty tab. Enough of the rant; on to the fun stuff.
+
+
+
Here's
+a funny article from a "Creationist", attempting to bend what the big
+bang to fit with some wacky ideas they got from a book. Here's
+the least comfortable seat I've ever seen in a truck (although it
+appears to have more room in the dashboard than Tom's entire car).
+Here's
+a really useful REpublican Speechmaking page. Here is the best page in the
+universe. For the computer geeks, this page has stats on
+virtually every IRC network out there, this
+page has more information than you could possibly ever want about
+bypassing a non-executable stack (a new feature in OpenBSD), and this page
+talks about time travel, paradoxes, and other cool physics stuff. Sequitur is a really
+cool text analysis engine. EPIC dissected the good old Patriot Act; you
+can read their analysis here. Prototype
+Optical Camouflage. If you're looking for a fun game in Linux,
+check out Racer and Racer-Xtreme. Here's a
+cool article (linked from KernelTrap) about the
+optimizations performed by Intel's compiler. Here
+is an interesting article on Intel's site which expands on the
+information presented in the article. Everyone should check out the Unofficial GUI
+Timeline; it's missing some stuff I think is relevant, but overall
+it's pretty well done. Here
+is an article by Seanbaby, and here
+is an awesome Ninja Turtles PSA review.
+
+
+
+Oh yeah, I almost forgot my list of inflammatory political articles. To keep things interesting, I've organized this list into convenient groups, so you know what you're getting yourself into.
+
+I finally added some new stuff to my sidebar! FreeType2-Ruby is out (sorta), and so is MusicBrainz-Ruby. The former is alpha (eg, it will crash), and the latter should be stable (eg, it will crash, but I won't be able to figure out why).
+
+Since I'm here, I might as well post a few links.
+This page is an interesting discussion about Groupthink, using the cast of Saturday Night Live as an example.
+I switched to framebuffer console on halcyon. Using Boot Splash, I have a cool looking console. I can also view images from the command-line with fbi, and watch movies with fbxine.
+
+Richard (richlowe) and I just unleashed our latest creation on the world: Raggle. Raggle is a console RSS aggregator, written in Ruby. Here's a screenshot, or you can skip straight to the version 0.1.0 download. This is the initial release, so there are still some bugs. In fact, Brian (bma) already reported a nasty one, and the patch for it is here (if patches scare you, this fix will be in version 0.1.1, which should be out within a couple of days).
+That said, any suggestions, criticism, etc can be sent to i_hate_raggle@pablotron.org.
+
+
+
+On a completely unrelated note ;), this site now has an RSS feed. Check out the "Syndicate (RSS)" link on the sidebar, or click here.
+
+I'm on a roll today! Version 0.1.1 of Raggle is available here. The changes include a couple of bug fixes, an important security fix, and support for the Home and End keys (assuming your terminal supports them). The full ChangeLog is available here.
+
+
diff --git a/content/posts/2003-06-27-apparently-i-m-a-total-msdn-whore.html b/content/posts/2003-06-27-apparently-i-m-a-total-msdn-whore.html
new file mode 100644
index 0000000..1f1063b
--- /dev/null
+++ b/content/posts/2003-06-27-apparently-i-m-a-total-msdn-whore.html
@@ -0,0 +1,39 @@
+---
+date: "2003-06-27T18:21:32Z"
+title: Apparently I'm a Total MSDN Whore
+---
+
+
+BITS is kind of interesting, although I think it poses some serious security and stability risks. It did get me thinking about a Net::Require::require implementation for Ruby again, though. So I guess it's not all bad.
+
+
+
+Here is a brief list of Web Services vying for the place of RSS. From the article:
+
+
+
+While these efforts are certainly worthwhile and promising, it will most likely take years before they pass the filters of real life use before they can claim widespread adoption. All of them ask for a thick infrastructure layer to support implementations. While possible, it is unlikely that mainstream deployment will be achieved instantly.
+
+
+
+Translation:"It's fun to work on this stuff, but we already know our implementation won't scale and will be difficult for developers to use."
+
+
+
+I love it when standards organizations find a simple format or protocol and say "Wow, that's a great idea. Let's create our own and tack on a bunch of unnecessary crap, making our standard complicated, slow, obtuse, and effectively irrelevant. HTTP perservered because it is simple. RSS is still kicking because it issimple.
+Is this concept difficult to grasp, or is the Committee Reality
+Distortion Vortex™ masking common sense again?
+
+
+
+# delete the RSS equivalent of New Coke
+rm -rf WS{XL,IL,RP}
+
+# keep the good stuff around
+chmod a-x RSS
+
+
+
+Okay, </rant> :-)...
+
+
diff --git a/content/posts/2003-06-27-firebird-makes-me-sad.html b/content/posts/2003-06-27-firebird-makes-me-sad.html
new file mode 100644
index 0000000..ef7888a
--- /dev/null
+++ b/content/posts/2003-06-27-firebird-makes-me-sad.html
@@ -0,0 +1,26 @@
+---
+date: "2003-06-27T17:25:14Z"
+title: Firebird Makes Me Sad
+---
+
+
+I had an awesome new post all ready to go, then a fuse blew in the house and killed the power on my workstation and file server. Oh well. I know I had some of the following URLs linked from it:
+
+
diff --git a/content/posts/2003-06-28-fresh-off-the-pablotron-grill.html b/content/posts/2003-06-28-fresh-off-the-pablotron-grill.html
new file mode 100644
index 0000000..0f768c9
--- /dev/null
+++ b/content/posts/2003-06-28-fresh-off-the-pablotron-grill.html
@@ -0,0 +1,10 @@
+---
+date: "2003-06-28T15:41:57Z"
+title: Fresh Off the Pablotron Grill
+---
+
+
+Raggle version 0.1.2. What's new? A handful of bug fixes and a few new features. Anyway, the download is
+here. Take a look at the post from yesterday if you'd like to see some of the stuff I have in mind for the future of Raggle.
+
+
diff --git a/content/posts/2003-06-30-cvs-fun.html b/content/posts/2003-06-30-cvs-fun.html
new file mode 100644
index 0000000..15e18a4
--- /dev/null
+++ b/content/posts/2003-06-30-cvs-fun.html
@@ -0,0 +1,57 @@
+---
+date: "2003-06-30T23:53:20Z"
+title: CVS Fun
+---
+
+
+After several months of using a private CVS repository, I finally have a publicly accessible CVS server again. The details are on the CVS page. There's also a ViewCVS interface to the repository at http://cvs.pablotron.org/.
+
+
+
+If you feel like playing with Raggle, you can grab the latest version (including Ville Aine's OPML import/export code and Richard's description window scrolling) with the following script:
+
+
+
+
+#!/bin/sh
+
+echo Press enter at the password prompt
+CVSROOT=:pserver:anonymous@cvs.pablotron.org:/var/lib/cvs login
+export CVSROOT
+# check out stable and development branches
+cvs -z3 co raggle
+cvs -z3 co -rRAGGLE-0-1 -d raggle-0.1 raggle
+
+
+
+
+
+I stumbled across a bunch of interesting stuff in the last few days.
+Here's a handful of the more interesting ones:
+
Dear Raed (actually, I think I linked to him before, but he's still updating, and it's still fascinating)
+
+
+
+
+I'll leave you with this quote from Dive Into Mark, which neatly summarizes my opinion on the future of technology:
+
+
+
+
+I will not be arguing the merits of web standards, CSS, accessibility, and open source. It is quite obvious to me that these are the future of the Internet and of the computing industry in general, and if you don’t see that by now, I can’t help you. Adapt or get left behind.
+
+
+
+
+Update: I screwed up on the CVS root. It's fixed now.
+
+
diff --git a/content/posts/2003-07-01-linuxbrit-without-email-say-it-ain-t-so.html b/content/posts/2003-07-01-linuxbrit-without-email-say-it-ain-t-so.html
new file mode 100644
index 0000000..aa07cee
--- /dev/null
+++ b/content/posts/2003-07-01-linuxbrit-without-email-say-it-ain-t-so.html
@@ -0,0 +1,9 @@
+---
+date: "2003-07-01T00:08:21Z"
+title: Linuxbrit Without Email? Say it Ain't So!
+---
+
+
+One more thing. Tom's email is temporarily broken. I've set up a temporary relay to his work address (which I don't want to give it out, for obvious reasons). Anyway, mail sent to tom.gilbert@pablotron.org will be relayed on to his work email address (until this fiasco is resolved, that is).
+
+
diff --git a/content/posts/2003-07-03-and-the-award-goes-to.html b/content/posts/2003-07-03-and-the-award-goes-to.html
new file mode 100644
index 0000000..3e9f729
--- /dev/null
+++ b/content/posts/2003-07-03-and-the-award-goes-to.html
@@ -0,0 +1,17 @@
+---
+date: "2003-07-03T21:31:35Z"
+title: And the Award Goes To...
+---
+
+
+Prior to my big dot-file to CVS module move [ala James (moss) and Richard (richlowe)], I decided to beef up my VIM configuration. While searching the script section vim.org, I stumbled across a special script. I feel as though this script deserves the coveted Cool But For the Love of God Why ™ award. This years winner?
+
+
+
+...drum roll...
+
+
+
+VIM XMMS. VIM XMMS allows you to control XMMS from VIM.
+
+Raggle version 0.1.3. Download. This is probably the last version of the 0.1 series. Version 0.2 seems to be relatively stable, so we'll probably be releasing it within the next week or so.
+
+Apparently I never linked it from here, but I've been exercising, eating well, and losing weight since the beginning of March. At the moment I weigh 205, down from 263 (a total of 58 pounds lost). My goal is 180 pounds. In true geek style, I've been keeping a log of my progress. You can check out the log and graphs of my progress on my weight page.
+
+
+
+On Friday I moved my Bash, Screen, and VIM settings into a Dotfiles CVS module. There's a directory for Mutt settings as well, but I haven't imported those yet.
+
+
+
+Did everyone enjoy their 4th of July (well, everyone in the U.S. at least)? I relaxed at home, and set off some fireworks with Jon-Anne (lilyj) and Richard (richlowe).
+
+
+
+Oh yeah, it's still a little rough, but I finally have some content on paulduncan.org. At the moment it's XHTML 1.1 Strict compliant, but it doesn't render at all in IE6, and it renders incorrectly in Konqueror. There's no real content at the moment, so I'm not too worried about fixing it just yet. Okay, well that's it for now...
+
+
+
+
diff --git a/content/posts/2003-07-07-gee-i-don-t-know-you-tell-me.html b/content/posts/2003-07-07-gee-i-don-t-know-you-tell-me.html
new file mode 100644
index 0000000..1c8b4e6
--- /dev/null
+++ b/content/posts/2003-07-07-gee-i-don-t-know-you-tell-me.html
@@ -0,0 +1,10 @@
+---
+date: "2003-07-07T19:19:52Z"
+title: GEE, I DON'T KNOW... YOU TELL ME
+---
+
+
+Hey guys, I'm having a hard time answering
+this question, maybe you can.help (from Pigdog).
+
+Title says it all. Raggle.org, at your service. Also the handy new raggle-dev mailing list should unclutter my inbox. Also, if you're looking for something fun to test, Ville Aine submitted (among a deluge of other things) an experimental HTML renderer for Raggle. It's not in the main trunk yet, but it looks promising.
+
+
diff --git a/content/posts/2003-07-15-guilty-state-of-mind.html b/content/posts/2003-07-15-guilty-state-of-mind.html
new file mode 100644
index 0000000..1b343f5
--- /dev/null
+++ b/content/posts/2003-07-15-guilty-state-of-mind.html
@@ -0,0 +1,9 @@
+---
+date: "2003-07-15T16:31:15Z"
+title: '"Guilty State of Mind"'
+---
+
+
+I stumbled across this Slashdot comment talking about the Aimster ruling. Doesn't bode well for the Freenet-style "I didn't know" defense.
+
+
diff --git a/content/posts/2003-07-25-read-this-get-a-visit-from-the-man.html b/content/posts/2003-07-25-read-this-get-a-visit-from-the-man.html
new file mode 100644
index 0000000..ddf6b42
--- /dev/null
+++ b/content/posts/2003-07-25-read-this-get-a-visit-from-the-man.html
@@ -0,0 +1,10 @@
+---
+date: "2003-07-25T08:53:13Z"
+title: Read This, Get a Visit From the Man
+---
+
+
TechFocus
+ has decided that
+the RIAA and
+MPAA violated
+their TOS and they're also
+unhappy with the RIAA/MPAA mass P2P litigation (courtesy of friend, the DMCA). As a result,
+TechFocus has banned the
+RIAA and MPAA.
+
+
diff --git a/content/posts/2003-08-02-w3c-html-recommendations.html b/content/posts/2003-08-02-w3c-html-recommendations.html
new file mode 100644
index 0000000..411fea6
--- /dev/null
+++ b/content/posts/2003-08-02-w3c-html-recommendations.html
@@ -0,0 +1,10 @@
+---
+date: "2003-08-02T19:04:44Z"
+title: W3C HTML Recommendations
+---
+
+
+While working on a web page, I stumbled across the
+W3C HTML Recommendations. Mostly obvious, but I did find a few tags I didn't know about.
+
+
diff --git a/content/posts/2003-08-10-squid-to-privoxy-proxy-o-rama.html b/content/posts/2003-08-10-squid-to-privoxy-proxy-o-rama.html
new file mode 100644
index 0000000..ea69b98
--- /dev/null
+++ b/content/posts/2003-08-10-squid-to-privoxy-proxy-o-rama.html
@@ -0,0 +1,27 @@
+---
+date: "2003-08-10T14:38:09Z"
+title: Squid to Privoxy, Proxy-O-Rama
+---
+
+
+I just finished setting Squid.
+It forwards to Privoxy. Things
+feel a little faster, but I'll have to play around with it a bit more
+before I know for sure. Also, I set up automatic
+browser proxy configuration based on this
+script. My internal machines can access the proxy configuration at
+the URL
+http://proxy/auto/. If you'd like to use it, you can
+grab it here.
+
+I've finally got some content on my other personal site. I think I'm going to be using it for non-tech material (writing, day to day stuff, etc). The backend is much smaller (and cleaner) than this site, and as a result it's easier to update and maintain.
+
+Grepmail is broken in Debian at the moment; one of the packages it depends on is MIA. If you want to install it, you can grab libmail-mbox-messageparser-perl (the missing package), in this repository.
+
+Three people have reported a bug in
+ Raggle that I just can't seem to
+reproduce. Basically, in the grab.log grabbing feeds fails
+with a "connection already set up" error; I can't seem to duplicate the
+bug in Ruby 1.68 or Ruby 1.8.0, and I don't see it in
+the Ruby HTTP source. The next
+step is to take a look at the source for the Ruby IO module source, and see if I can find
+it there. If anyone has any insight on that, or how to make Ncurses-Ruby ignore a
+user-defined SIGWINCH trap, I'd appreciate it.
+
+
+
+Other news of note: I imported the start of my Gcrypt-Ruby bindings into
+CVS; they won't
+compile or work for quite a while, but at least people can watch the
+progress (and contribute!) now.
+
+
+
+There's more fun stuff about what's going on over on paulduncan.org.
+
+
diff --git a/content/posts/2003-08-21-and-another-one.html b/content/posts/2003-08-21-and-another-one.html
new file mode 100644
index 0000000..a2f174f
--- /dev/null
+++ b/content/posts/2003-08-21-and-another-one.html
@@ -0,0 +1,39 @@
+---
+date: "2003-08-21T22:09:31Z"
+title: And Another One
+---
+
+
+ Fixed that other Raggle bug,
+now I'm stuck with some more. That's okay though. Brian made a Debian package for Raggle, so the chosen few can install
+via apt-get
+now. The repository information is available over at raggle.org. Anyone want to take a
+stab at a BSD
+port?
+
+
+
+ I set up WPAD here at home. For those of you who are
+curious, the RFC is here.
+Anyway, the problem is I don't have any Windows machines to test with.
+If anyone ever visits the house with a Windows machine, it'll be pretty
+cool for them: DHCP will give them an IP address and DNS server, and IE will automatically detect my Squid (and Privoxy) proxy. Oh well, guess I'll
+test the WPAD stuff
+with my trusty
+ VMWare
+installation.
+
+
diff --git a/content/posts/2003-08-21-everything-considered-harmful.html b/content/posts/2003-08-21-everything-considered-harmful.html
new file mode 100644
index 0000000..dfe1ea9
--- /dev/null
+++ b/content/posts/2003-08-21-everything-considered-harmful.html
@@ -0,0 +1,12 @@
+---
+date: "2003-08-21T22:52:41Z"
+title: Everything Considered Harmful
+---
+
+
+I wrote a preliminary web interface for Raggle. It's not in CVS yet, but here is a screenshot of what I have so far.
+
+
+
+Update:Brian just informed
+me that my spelling sucks.
+
+
diff --git a/content/posts/2003-08-29-fark-fun.html b/content/posts/2003-08-29-fark-fun.html
new file mode 100644
index 0000000..d0384fe
--- /dev/null
+++ b/content/posts/2003-08-29-fark-fun.html
@@ -0,0 +1,23 @@
+---
+date: "2003-08-29T22:52:39Z"
+title: Fark Fun
+---
+
+
+TotalFark (the pay version of Fark is great, but it's too damn slow. LocalFark to the rescue! It's a Fark and TotalFark screen-scraper. LocalFark saves to RSS, a MySQL database, or both.
+
+More fun with Raggle. The main trunk in CVS has HTTP Basic Authentication support, improved conditional HTTP GET, improved RSS parsing, and some other things I probably forgot. Most importantly though, the web interface in Raggle apparently runs in Windows (albeit with minor source modifications). Here's a shot from XP running under Ruby 1.8 (courtesy of Andy Hunt's Windows installer) in VMWare.
+
+
diff --git a/content/posts/2003-09-04-raggle-in-windows.html b/content/posts/2003-09-04-raggle-in-windows.html
new file mode 100644
index 0000000..973c0f9
--- /dev/null
+++ b/content/posts/2003-09-04-raggle-in-windows.html
@@ -0,0 +1,14 @@
+---
+date: "2003-09-04T03:07:22Z"
+title: Raggle in Windows
+---
+
+
+
diff --git a/content/posts/2003-09-05-damn-you-xml.html b/content/posts/2003-09-05-damn-you-xml.html
new file mode 100644
index 0000000..b9b2725
--- /dev/null
+++ b/content/posts/2003-09-05-damn-you-xml.html
@@ -0,0 +1,9 @@
+---
+date: "2003-09-05T11:07:58Z"
+title: Damn You XML!
+---
+
+
+This bug was a real pain in the ass to track down, document, and report. Now my head hurts, and I'm pretty sure I saw <!ENTITY %.*?> in my dreams last night.
+
+
diff --git a/content/posts/2003-09-13-new-version-of-raggle.html b/content/posts/2003-09-13-new-version-of-raggle.html
new file mode 100644
index 0000000..56fff2d
--- /dev/null
+++ b/content/posts/2003-09-13-new-version-of-raggle.html
@@ -0,0 +1,9 @@
+---
+date: "2003-09-13T14:39:38Z"
+title: New Version of Raggle
+---
+
+
+Version 0.2.3 of Raggle is out. Give it a try and let me know what you think.
+
+
diff --git a/content/posts/2003-09-18-isabel-can-t-stop-the-pablo-posting-machine.html b/content/posts/2003-09-18-isabel-can-t-stop-the-pablo-posting-machine.html
new file mode 100644
index 0000000..637a9a8
--- /dev/null
+++ b/content/posts/2003-09-18-isabel-can-t-stop-the-pablo-posting-machine.html
@@ -0,0 +1,21 @@
+---
+date: "2003-09-18T17:09:34Z"
+title: Isabel Can't Stop the Pablo Posting Machine!
+---
+
+
+Riding the power roller coaster here (because of Isabel). Details and the play-by-play over at my other (non-tech) site.
+
+
+
+I've been adding some cool stuff to Raggle. The CVS version has feed categories, adding feeds from the Ncurses interface, a faster Ncurses interface, the web interface (which is slowly getting better), Win32 support (web only at the moment), a Windows installer, HTTP basic authentication, better conditional HTTP GET support, and more.
+
+
+
+Got a couple of patches from Jon Bernard for gcrypt-ruby, FAM-Ruby, and DevIL-Ruby. Seems like he's maintaining my bindings for me ;-).
+
+
+
+PS. Sorry if there are any typos in this post, but I'm posting as quick as possible, since power has been getting increasingly uppety over the last hour.
+
+
diff --git a/content/posts/2003-09-20-i-ve-got-the-power.html b/content/posts/2003-09-20-i-ve-got-the-power.html
new file mode 100644
index 0000000..e844cf1
--- /dev/null
+++ b/content/posts/2003-09-20-i-ve-got-the-power.html
@@ -0,0 +1,10 @@
+---
+date: "2003-09-20T13:26:16Z"
+title: I've Got the Power!
+---
+
+
+Just stumbled across this: IP Relay, a user-space TCP/IP traffic shaper. The page doesn't load here, but it's available in Debian as iprelay.
+
+
+
+Anyone have any information on the IBlogThis and IBlogExtension specifications? I've been googling around for a bit now and I'm having trouble coming up with a solid spec. Does one exist? Do they not work the way I think they do? What I'm looking for is a SOAP or XML-RPC interface for submitting new blog entries (from RSS aggregators in particular). I assumed something this obvious existed, and that the specs above did exactly that, but... yeah. Anyway, if someone can point me at some documentation, I'd appreciate it (yes, I'm thinking about adding support to Raggle).
+
+feeds.yaml being eaten in Raggle? Is anyone else seeing this behavior? A quick reminder: for those of you wondering where all my non-tech posts went, please bookmark my non-tech page.
+
+
diff --git a/content/posts/2003-09-25-iana-fun.html b/content/posts/2003-09-25-iana-fun.html
new file mode 100644
index 0000000..4327377
--- /dev/null
+++ b/content/posts/2003-09-25-iana-fun.html
@@ -0,0 +1,10 @@
+---
+date: "2003-09-25T17:10:41Z"
+title: IANA Fun
+---
+
+
+Just filled out an IANA request for a user port (for the Raggle web interface). Let the two week wait commence.
+
+
+
diff --git a/content/posts/2003-09-25-weight-page-moved.html b/content/posts/2003-09-25-weight-page-moved.html
new file mode 100644
index 0000000..89dee82
--- /dev/null
+++ b/content/posts/2003-09-25-weight-page-moved.html
@@ -0,0 +1,9 @@
+---
+date: "2003-09-25T11:44:21Z"
+title: Weight Page Moved
+---
+
+
+The weight loss page has moved to http://www.paulduncan.org/weight/ (it's not tech related, so it belongs there now). There's a redirect in place at the old URL.
+
+
diff --git a/content/posts/2003-09-27-fam-ruby-other.html b/content/posts/2003-09-27-fam-ruby-other.html
new file mode 100644
index 0000000..169ff65
--- /dev/null
+++ b/content/posts/2003-09-27-fam-ruby-other.html
@@ -0,0 +1,63 @@
+---
+date: "2003-09-27T13:08:57Z"
+title: FAM-Ruby, Other
+---
+
+
+Released version 0.1.3 of FAM-Ruby. This release
+consists entirely of a small one line patch from Jon Bernard, so I took the
+opportunity to import FAM-Ruby into CVS under the module fam-ruby.
+
+
+
+Raggle now has a half-assed (but working!) implementation of parallel feed grabbing. Basically each feed grab is forked off in it's own thread, which means you can grab an arbitrary number of feeds in parallel (limited by CPU speed and bandwidth, of course). This implementation is in CVS, but don't rush to try it just yet; it seems to have dug up some intermittent concurrency issue in either REXML, Ruby, or Raggle. I've marked all the "destructive" regions of feed grabbing threads as critical regions, but I haven't narrowed down the problem just yet. My hunch is that it's either a subtle error in the Ruby GC, or a concurrency issue in REXML. The latter seems strange to me, since REXML is written in pure Ruby and, as far as I know, doesn't use threads internally. I guess we'll see.
+
+
+
+Richard (richlowe) and I were
+talking about passing events between machines, and he suggested that I
+use DRb.
+I've played around with DRb a bit before, but for some reason using RMI for mundane things — in this case, a /whatsPlaying alias in Irssi which queries the XMMS process on my workstation — never occurred to me. What I really love about this solution is how absurdly simple it is. Here's the code for the "server":
+
+In case anyone is wondering, this is one of the things I really like
+about Ruby; solutions tend to be
+simple, short, and legible. Okay, </advocacy>. I'm
+out for now.
+
+Saw a link in a Slashdot comment for the
+iRiver iHP-120. All I have to say is, "wow!" It's the best hard drive-based MP3 player I've seen to date, and it's got the interface I like so much from my iRiver SlimX iMP-350. Here's a ZDNet review of the iHP-120. Now all I need to do is scrounge up an extra $360 to buy it.
+
+
diff --git a/content/posts/2003-10-31-useless-use-of-cat-award.html b/content/posts/2003-10-31-useless-use-of-cat-award.html
new file mode 100644
index 0000000..860f9ad
--- /dev/null
+++ b/content/posts/2003-10-31-useless-use-of-cat-award.html
@@ -0,0 +1,9 @@
+---
+date: "2003-10-31T16:51:01Z"
+title: Useless Use of cat Award
+---
+
+
+
diff --git a/content/posts/2003-11-03-distcc-is-my-buddy.html b/content/posts/2003-11-03-distcc-is-my-buddy.html
new file mode 100644
index 0000000..4e55971
--- /dev/null
+++ b/content/posts/2003-11-03-distcc-is-my-buddy.html
@@ -0,0 +1,17 @@
+---
+date: "2003-11-03T10:25:31Z"
+title: distcc is My Buddy
+---
+
+
+After a conversation Richard (richlowe) and I had last night, I decided to actually try out distcc. It's neat, it works, and it appears to speed compiles up. I was a bit worried about having different versions of GCC, but so far it seems to be handling it just fine (the versions are 3.3, 3.3.1, and 3.3.2). The only quirk I've seen so far is it appears to get stuck at the end of a compile every once in a while. This is mentioned on the distcc Problems page, but I'm running 2.4 on both the machines, not 2.5. Also I wonder if I'm losing my Athlon optimizations, and if so, how that will affect performance. I'm going to try some tests with kylie in the mix as well, to see if it's still worth it with Internet latency thrown in the mix. I'll post them here when I'm finished.
+
+
+
+The other interesting thing Jon-Anne (lilyj), Richard (richlowe), and I talked about is was a learning information search tool (roughly comparable to the "agent" craze a few years back). I know there's a GNOME application that does something similar — it "knows" what your doing in GAIM and Nautilus, and constantly updates with information that might be relevant &mdash but we were thinking of something that was more standardized, abstracted, and modular. Some of the stuff we came up with: standard protocol for applications to pass metadata to the daemon (I was thinking something that looked as much like HTTP POST as possible), a pluggable daemon backend, so you could add additional search modules (that either queried different backends, or categorized, analyzed, and ranked the data in different ways), and a standardized output format for the aggregating the various search results (Richlowe suggested RDF, but I was thinking OPML might be more appropriate). For the modules, if you had various modules that queried things like Google, Syndic8, newsgroups, and some sort of filesystem database (Jon-Anne suggested that this should be some sort of associative mesh, rather than a simple keyword database), etc. The other thing is that results would be associated with related searches. It should be smart enough to realize that if you're looking at a cooking-related web site, and you start talking about cows in your IM program, you'd probably be interested in hamburger- and beef-related content.
+
+
+
+Interesting stuff. And technically do-able, I think. Does anyone remember the name of the existing GNOME application? I'd like to take another look at it and see what they've got so far.
+
+Okay, so I tossed distcc on kylie to see how it would affect things. It takes a little longer to transfer stuff, but it does seem to improve compiles a bit. I'll have to play around with it more before I know for sure. The bad news is distcc is still getting stuck on compiles every once in a while. I'll need to take a closer look at that.
+
+While doing a little research for the Dashboard-esque project idea, I
+tracked down a couple of learning algorithm libraries. The two that
+seem to be the most interesting so far are the Reinforcement
+Learning Toolbox and Torch. The
+latter is in Debian, so I'm going
+to try it out a bit. This stuff all ties in nicely with the
+book I've been reading.
+
+Richard (richlowe) and a few other people from #fu were talking about being able to do things like cdup 5 to jump up 5 directories. I thought it would be nicer if my existing .. alias took an optional argument to do the same thing. Here's the result (for bash):
+
+
+
+
+function cdup() {
+ if [ "x$1" = "x" ]; then max=1; else max=$1; fi
+ for ((i=0; i<$max; i++)); do cd ..; done
+}
+
+alias ..="cdup";
+
+
+
+
+So .. works the same as it did before, but now you can do stuff like this:
+
+This site is badly in need of a redesign. Not just a new theme either; I'd like to re-write the entire backend, and then port the themes. The problem is, I absolutely hate breaking links. Some of the content on this site going back to 1998, and I'd prefer not to break existing links if I can. The last couple redesigns I've gone out of my way to preserve links, but I think this time around it might be time to make a clean break. At the moment, I've cleaned up the sidebar and updated a few random pages, but I've noticed that maintaining this site is much more work than maintaining raggle.org and paulduncan.org (which is one of the reasons the latter gets updated so much more often). I'll have to think about it a bit before I make any major changes.
+
+Looks like CIPE has improved a lot since last year. They've added a protocol-level ping (I used to leave a ping -i 30 destination running in a screen session so the NetFilter stateful stuff didn't forget about the connection), public key encryption (uses it to resolve a dynamic shared secret, also handles dynamic IP addresses in a more graceful manner), and probably more stuff that I missed. I'm trying to think of an excuse to use it again; too bad I already run almost everything over SSH tunnels already. :(
+
+
diff --git a/content/posts/2003-11-07-email-indexing-with-zo-euml.html b/content/posts/2003-11-07-email-indexing-with-zo-euml.html
new file mode 100644
index 0000000..26fdfa6
--- /dev/null
+++ b/content/posts/2003-11-07-email-indexing-with-zo-euml.html
@@ -0,0 +1,9 @@
+---
+date: "2003-11-07T11:14:30Z"
+title: Email Indexing with Zoë
+---
+
+
+Zoë. Email client. Email server. Cross-references and indexes email. Relates to the whole information indexing idea.
+
+
diff --git a/content/posts/2003-11-07-faster-than-qsort.html b/content/posts/2003-11-07-faster-than-qsort.html
new file mode 100644
index 0000000..3792bde
--- /dev/null
+++ b/content/posts/2003-11-07-faster-than-qsort.html
@@ -0,0 +1,9 @@
+---
+date: "2003-11-07T10:15:06Z"
+title: Faster than qsort()?
+---
+
+
+I saw a link to Introspective Sorting over at Ruby Garden. According to the calculations, the author believes it's better than qsort(). Basically it is qsort(), except it switches to heapsort in worst-case scenarios for qsort(). Really interesting read.
+
+
diff --git a/content/posts/2003-11-08-drb-redux-what-s-playing.html b/content/posts/2003-11-08-drb-redux-what-s-playing.html
new file mode 100644
index 0000000..b1dc6de
--- /dev/null
+++ b/content/posts/2003-11-08-drb-redux-what-s-playing.html
@@ -0,0 +1,17 @@
+---
+date: "2003-11-08T15:09:16Z"
+title: Drb Redux, What's Playing
+---
+
+
+The DRb fun continues! I added a What's Playing page to Paul Duncan.org which bounces via DRb from kylie (the web server) to XMMS running on picard (my workstation). Since everyone likes diagrams, here's one:
+
+
+
+
+
+
+
+I discussed the DRb configuration in a previous post. The bounce through xor is just a source-specific DNAT.
+
+
diff --git a/content/posts/2003-11-08-have-you-hugged-your-spam-filter-today.html b/content/posts/2003-11-08-have-you-hugged-your-spam-filter-today.html
new file mode 100644
index 0000000..3150e6f
--- /dev/null
+++ b/content/posts/2003-11-08-have-you-hugged-your-spam-filter-today.html
@@ -0,0 +1,15 @@
+---
+date: "2003-11-08T01:58:13Z"
+title: Have You Hugged Your Spam Filter Today?
+---
+
+
+
diff --git a/content/posts/2003-11-13-new-screenshot-posted.html b/content/posts/2003-11-13-new-screenshot-posted.html
new file mode 100644
index 0000000..95f0e79
--- /dev/null
+++ b/content/posts/2003-11-13-new-screenshot-posted.html
@@ -0,0 +1,15 @@
+---
+date: "2003-11-13T07:35:36Z"
+title: New Screenshot Posted
+---
+
+
+I finally took a new screenshot last week, but I forgot to post it. Claes (pekdon) just reminded me, so I posted it to the Screenshots page. Here's what my desktop looks like now:
+
+
+
+
+
+
diff --git a/content/posts/2003-11-13-new-theme.html b/content/posts/2003-11-13-new-theme.html
new file mode 100644
index 0000000..e6626af
--- /dev/null
+++ b/content/posts/2003-11-13-new-theme.html
@@ -0,0 +1,9 @@
+---
+date: "2003-11-13T06:43:41Z"
+title: New Theme
+---
+
+
+Posted a new theme last night called Gnosis. It still needs a few tweaks, but I like it more than Chromatic, so I'm going to switch it to the default. Try it out and let me know what you think.
+
+Remember Raggle? Rumors of 0.3.0 begin to fly again. Ville just committed a fix for the obnoxious shell character expansion bug to the trunk in CVS, which leaves a relatively small set of things to fix for a release. Among them: a fix for the nasty GC sweep bug that has cropped up since we added parallel feed grabs (my hunch is that this is a bug in Ruby, not Raggle), getting the web interface to some state of completion (basically this means writing a config interface and a feed editor), and updating the documentation to describe all the new features. We could really use some eyes on the GC swseep/threading bug; I'm not sure where it's coming from (I thought I'd eliminated the concurrency issues), and it makes Raggle die at random. If you're interested in helping, here are instructions for checking Raggle out of CVS.
+
+And that should be it. Caveats: lufsumount seems to be a little picky, your LUFS mounts won't show up in df, and sshfs doesn't do any client-side caching, so things are a wee bit slow.
+
+I was looking for a good console address book, and I stumbled across HNB. It's an interesting app. I've imported my contacts, bookmarks, and some other information into it to see if it's something I feel like using on a regular basis.
+
diff --git a/content/posts/2003-11-17-id3-fun.html b/content/posts/2003-11-17-id3-fun.html
new file mode 100644
index 0000000..1f81921
--- /dev/null
+++ b/content/posts/2003-11-17-id3-fun.html
@@ -0,0 +1,9 @@
+---
+date: "2003-11-17T10:28:28Z"
+title: ID3 Fun
+---
+
+
+For some reason I always assumed ID3 tags were much harder to parse than they actually are. Using this reference (and the includedlinks), I was able to write a Ruby a basic ID3 parser with relative ease. Yes, I realize there are already a million ID3 parsers out there; this was just a mental exercise.
+
+Matz is awesome. I'm looking over the slides for his RubyConf 2003 presentation, and the third slide is titled "How Ruby Sucks." The fourth slide lists specific problems, and the rest of the presentation talks about what needs to be done.
+
+
+
+His slides also talk about starting from scratch with Ruby2 (the language) and Rite (the VM). I'm wary of the start from scratch by committee approach — Perl 6 and E17 are prime examples of how this approach can fail spectacularly.
+
+I just attempted to set up Bonsai on kylie. The Debian package requires more configuration than most source installs I've seen. Here's a brief list of things you have to do after installing the package:
+
+
+
+
+
Reconfigure CVS
+
Reconfigure your MTA
+
Configure LXR (note that this package has it's own long list of post-install manual configuration steps)
+
Do a rain dance
+
Edit configuration files in /etc/bonsai
+
Edit configuration options in web interface
+
Edit more configuration options in a different web
+interface
+
Hope the rain dance worked
+
+
+
+
+I think I've opted to stick with ViewCVS, for
+which I had to do essentially zero post-install configuration. Actually
+I changed one line in the config file, but that was optional.
+Perhaps I just need to work on my rain dance technique.
+
+I played with Panther a little earlier today at Microcenter. Exposé is pretty damn cool, although it's of negligible value to me, since I already avoid overlapping windows like the plague. There's something really gratifying about having MacOS, bash, and Ruby all on the same machine.
+
+
+
+Oh yeah, Laurence (ljlane) pointed me at this page: Retooling Slashdot with Web Standards. Making this change would save OSDN a lot of money on bandwidth, but Richard (richlowe) pointed out this will render Slashdot essentially unviewable in Lynx and Links. Personally, I'd say that's the price of progress. Lynx is crap anyway. Links , on the other hand, already supports tables and frames (some forks also support JavaScript), so there's no reason they couldn't add rudimentary CSS support as well.
+
+Apparently REXML::Encoding::ENCODING_CLAIMS has conveniently disappeared from REXML. This change broke both the stable and development versions of Raggle. For those of you who are curious, I wrote up this small blurb describing the problem and the solution.
+
+
diff --git a/content/posts/2003-11-23-debian-is-indecisive.html b/content/posts/2003-11-23-debian-is-indecisive.html
new file mode 100644
index 0000000..d7c5ea1
--- /dev/null
+++ b/content/posts/2003-11-23-debian-is-indecisive.html
@@ -0,0 +1,24 @@
+---
+date: "2003-11-23T16:31:43Z"
+title: Debian is Indecisive
+---
+
+
+dpkg: error processing .../python_2.3.2-6_all.deb (--unpack):
+ trying to overwrite `/usr/share/doc/python2.3/python-policy.html',
+ which is also in package python2.3
+dpkg: considering removing python in favour of python2.3 ...
+dpkg: no, cannot remove python (--auto-deconfigure will help):
+ mailman depends on python (>= 2.2.2.91-1)
+ python is to be removed.
+dpkg: regarding .../python2.3_2.3.2-6_i386.deb containing python2.3:
+ python2.3 conflicts with python (<= 2.3.2-5)
+ python (version 2.3.2-2) is installed.
+dpkg: error processing .../python2.3_2.3.2-6_i386.deb (--unpack):
+ conflicting packages - not installing python2.3
+
+I separated the Icecast streaming for Pablotron Radio from XMMS. I'm just using shout to queue files for the stream now. I also wrote a brief script which calls XOSD to notify me when a new song comes on. Here's the script:
+
+
+
+#!/usr/bin/env ruby
+
+# some XOSD settings
+ENV['DISPLAY'] = ':0'
+FONT = "-adobe-helvetica-bold-r-normal-*-20-*-*-*-p-*-iso8859-2"
+
+# fork and exit so shout doesn't block
+pid = fork
+if pid
+ Process::waitpid(pid, Process::WNOHANG)
+ exit 0
+end
+
+# make sure the cue file updates
+sleep 1
+
+# read the cue file and pipe it to xosd
+File::open('/var/log/icecast/.cue', 'r') { |cue|
+ name, size, rate, time, unknown, ofs = cue.readlines.map { |i| i.chomp }
+ IO::popen("osd_cat -p bottom -f #{FONT} -s 1 -c \\#ffcc00", 'w') { |osd|
+ osd.puts "#{time} - #{name}"
+ }
+}
+
+
+
+Why go through all this trouble? So I can use XMMS to search for and preview songs locally, without messing with the active stream. Plus it's neat to have XOSD notifications for stuff :).
+
+>$ cat ybug.rb
+>YAML.load( (0..1029).map {|n| { "x" => "z", "y" => n } } .to_yaml)
+>$ /usr/local/lib/ruby-cvs/bin/ruby -v -r yaml ybug.rb
+>ruby 1.8.1 (2003-12-01) [i686-linux]
+>/usr/local/lib/ruby-cvs/lib/ruby/1.8/yaml.rb:39:in `load': parse error
+>on line 666,
+
+ok...so this line number thing is freaking me out. Are you saying that
+YAML is the
+beast spoken of in Revelations ;-)
+
+
+
+
+Note: I fixed his mangled spelling of "Revelations".
+
+I just discovered that top now has colors and multiple
+windows. I guess I can see the point of multiple windows, but
+colors... Why oh why? Yet another tragic example of the Law
+of Software Development in action.
+
+I've been doing backups with Alonzo's (osiekhan) DVD burner. It's really nice to have 4 gigs of space, and I haven't coastered anything yet, but there's one minor (and annoying) snafu. Check out the permissions on /mnt/dvd:
+
+
+
+dr--r--r-- 5 4294967295 4294967295 292 Dec 4 2003 /mnt/dvd
+
+
+
+I've been sifting around the mount and fstab man pages and trying various options. No combination of uid=, gid=, or umask= seems to give me anything that's perusable by anyone other than root. Ah well, minor price to pay for having that much space at my finger tips.
+
+
diff --git a/content/posts/2003-12-06-keith-packard-and-32-bit-enlightenment.html b/content/posts/2003-12-06-keith-packard-and-32-bit-enlightenment.html
new file mode 100644
index 0000000..1cb1fe6
--- /dev/null
+++ b/content/posts/2003-12-06-keith-packard-and-32-bit-enlightenment.html
@@ -0,0 +1,39 @@
+---
+date: "2003-12-06T08:04:43Z"
+title: Keith Packard and 32-bit Enlightenment
+---
+
+
+Well, that's to be expected -- enlightenment happens to find the depth 32
+visual and get excited about it. Unfortunately, that depth 32 visual has
+alpha bits in the upper 8 bits that enlightenment doesn't understand.
+Leaving those zero makes for some pretty transparent windows, hence you
+see the background.
+
+
+
+xcompmgr did have a bug where enlightenment set the _XSETROOT_ID property
+to 0 which caused it to kinda lose when drawing the background. That was
+easy enough to fix though.
+
+
+
+I have a hacked up xlib which discards depth 32 visuals; using that makes
+enlightenment work reasonably well. Of course, the right fix is to make
+it understand those visuals and "do the right thing". It shouldn't take
+very much work to make Eterm really be translucent, and to fix the
+thumbnail window. Sample code for another thumbnail viewer can be found
+in /cvs/xapps/uncover. That crashes the server when E is running
+right now though. Time to go debug some more :-)
+
+I give up. I'm going to disable the parallel feed grabbing in Raggle so we can put out a new
+version. Claes (pekdon) suggested
+I try and rewrite it, but the implementation is already pretty simple.
+Here's a high-level view of how the old non-parallel and new parallel
+feed grabbing stuff works:
+
+Of course, looking at this code as I'm pasting it, it just occured to me
+that if you have two feeds with the same URL, you could have two threads trying to
+muck with the feed at the same time. Wonder if that's what's causing Ruby to freak out. By the way,
+this is why I really dislike threads. Not because I'm an
+ignoramus, but because they encourage subtle bugs like this. Anyway,
+let's see if that fixes our random crash woes.
+
+
+
+Oh, and before anyone asks, yes, I realize that's not the best
+way to implement the thread capping stuff. And yes, I realize thread
+pooling would be more efficient. Right now I'm just trying to get it to
+work reliably, then I'll focus on optimization.
+
+
diff --git a/content/posts/2003-12-10-welcome-to-kylie.html b/content/posts/2003-12-10-welcome-to-kylie.html
new file mode 100644
index 0000000..22d3b59
--- /dev/null
+++ b/content/posts/2003-12-10-welcome-to-kylie.html
@@ -0,0 +1,11 @@
+---
+date: "2003-12-10T10:04:02Z"
+title: Welcome to kylie
+---
+
+
+
+
diff --git a/content/posts/2003-12-15-free-secondary-dns.html b/content/posts/2003-12-15-free-secondary-dns.html
new file mode 100644
index 0000000..be14ed7
--- /dev/null
+++ b/content/posts/2003-12-15-free-secondary-dns.html
@@ -0,0 +1,17 @@
+---
+date: "2003-12-15T17:49:35Z"
+title: Free Secondary DNS
+---
+
+
+I'm setting up inept to be
+secondary DNS and MX for kylie, and I just
+stumbled across secondary.org,
+which provides free secondary DNS. I don't need it, but that might be useful for
+some someone.
+
+Tom (giblet) has been here less than 24 hours, and he's already broken something! I was sitting here innocently trying to DoS his machine over my LAN, and XMMS crashed. Now when I run it I get the following error:
+
+
diff --git a/content/posts/2003-12-18-okay-but-it-s-still-his-fault.html b/content/posts/2003-12-18-okay-but-it-s-still-his-fault.html
new file mode 100644
index 0000000..7ad98bd
--- /dev/null
+++ b/content/posts/2003-12-18-okay-but-it-s-still-his-fault.html
@@ -0,0 +1,13 @@
+---
+date: "2003-12-18T12:29:19Z"
+title: Okay, But it's Still His Fault
+---
+
+
+Alright, so the immediate cause may have been a symlink in my ~/bin directory pointing to an old XMMS binary, but the real cause was still Tom. I mean if you think about it, XMMS would have probably run for months. But since he's here I had to mess with his machine, which then caused the XMMS crash. Therefore, if he wasn't here, then this wouldn't have happened.
+
+(v) Utilize the Services to (A) forge the signature or other identifying
+mark or code of any other person, (B) impersonate or assume the identity
+or any other person, or (C) engage in any other activity (including
+"spoofing") to attempt to deceive or mislead other persons regarding the
+true identity of the User (excluding the use of anonymous remailer or
+Internet nicknames).
+
+
+
+...
+
+
+
+(viii) Utilize the Services to distribute, advertise or promote software
+or services that have the primary purpose of encouraging or facilitating
+unsolicited commercial e-mail or spam.
+
+
+
+(ix) Utilize the Services to solicit or collect, or distribute,
+advertise or promote, e-mail address lists for the purpose of
+encouraging or facilitating unsolicited commercial e-mail or spam.
+
+
+
+
+So, they don't explicitly prohibit mass-mailing, but they do prohibit
+spoofing, services and software that encourage spam, and using their
+servers to distribute addresses for spamming. Whether or not that's
+good enough to reduce the Spamhaus ban from a /24
+to a /32 remains to be seen.
+
+I stumbled across this
+page last night; it's got a bunch of good links for dealing with
+CSS positioning and
+CSS browser quirks.
+Here's
+another one; it's light on details but it's a good summary of the
+pros and cons of CSS.
+
+Tom (giblet) and I spent the afternoon working on image and profile caching in Feh. In the process we did some profiling and ran across a few bottlenecks. At the moment the image and pixmap caching isn't stable at all, but if you want to play with it, here's the diff. It's against the latest CVS (which has the other speed improvements already).
+
+
+
+Update:
+You'll also need to drop these
+files in feh/src in order to get the beast to compile.
+
+
diff --git a/content/posts/2004-01-11-gallery-on-paulduncan-org.html b/content/posts/2004-01-11-gallery-on-paulduncan-org.html
new file mode 100644
index 0000000..14aebad
--- /dev/null
+++ b/content/posts/2004-01-11-gallery-on-paulduncan-org.html
@@ -0,0 +1,47 @@
+---
+date: "2004-01-11T23:43:33Z"
+title: Gallery on paulduncan.org
+---
+
+
+I finally finished the new gallery page on paulduncan.org. Rather than port the Pablotron Gallery directly, I decided to start from scratch and see if I could do it better the second time around. I also had a bunch of pictures at home to work with and some slightly different requirements. All my camera pictures at home are in /store/camera, but I wanted to split the files up by gallery on the server-side. Also, I wanted a straightforward way to edit captions. Above all, I wanted the entire setup to be simple to maintain.
+
+
+
+Well, I think I've managed to accomplish all that. At home, I'm using the new caption mode in feh to caption images, and the server-side gallery code recognizes feh captions. A single config file, galleries.yaml, tells the web interface and gallery generating script the title, path, description and images associated with each gallery. The server-side gallery generation script reads galleries.yaml, creates the gallery directory structure, and populates it with symlinks to an rsynced copy of the camera directory. At home, camera_update.sh generates thumbnails (via ImageMagick) and rsyncs the camera directory to kylie.
+
+
+
+So, to create a new gallery, I do the following:
+
+
+
+
Add the images to /store/camera
+
Caption the images with feh -T camera
+
Run camera_update.sh
+
Add the description to galleries.yaml
+
Run generate_galleries.rb
+
+
+
+Note that I already put the pictures in /store/camera. And they have to captioned, scaled, and uploaded somehow. So steps 1, 2, and 3 are effectively NOOPs. That said, I'm trying to think of ways to make this process even dumber. I could cron the camera update and rsync process; that way thumbnails and data transfer are taken care of automatically. Thoughts, anyone?
+
+
+
+Oh yeah, if you want any of this code, let me know and I'll post it.
+It's written with my setup in mind, but you might be able to salvage or
+modify it for your setup. Here's the first review of the code:
+
+
+
+17:52 <giblet> dammit, that's cool
+17:53 <giblet> well I'm pissed off now :D
+17:53 <pabs> alright!
+17:53 <giblet> cos I can't do that without copying images :D
+17:53 <pabs> just call me master of symlinks
+17:53 <pabs> pabs@kylie:~/paulduncan.org/gallery> du -sh .
+17:53 <pabs> 496K .
+17:54 <giblet> hehehe
+17:54 <giblet> I should've thought of that :)
+
+I just posted version 0.2.0 of LocalFark. Changes include a slightly nicer (albeit incompatible) config setup for the web interface, and some Ruby 1.8 bugfixes. Here's the tarball, change log, and signature.
+
+
diff --git a/content/posts/2004-01-11-mozilla-s-c-portability-guide.html b/content/posts/2004-01-11-mozilla-s-c-portability-guide.html
new file mode 100644
index 0000000..e998a2e
--- /dev/null
+++ b/content/posts/2004-01-11-mozilla-s-c-portability-guide.html
@@ -0,0 +1,9 @@
+---
+date: "2004-01-11T01:35:50Z"
+title: Mozilla's C++ Portability Guide
+---
+
+
+Mozilla's C++ Portability Guide. Brief summary: Don't use anything in C++. No templates, no RTTI, no namespaces. Good read though.
+
+
diff --git a/content/posts/2004-01-11-snooty-pc-hardware.html b/content/posts/2004-01-11-snooty-pc-hardware.html
new file mode 100644
index 0000000..828ed96
--- /dev/null
+++ b/content/posts/2004-01-11-snooty-pc-hardware.html
@@ -0,0 +1,9 @@
+---
+date: "2004-01-11T20:04:20Z"
+title: Snooty PC Hardware
+---
+
+
+I found about the free bit when Richard (richlowe) got his copies.
+All I need now is an Opteron box to play with. Hmm.... might be time
+for a CPU/mobo upgrade.
+
+
diff --git a/content/posts/2004-01-12-tarpitting-in-iptables.html b/content/posts/2004-01-12-tarpitting-in-iptables.html
new file mode 100644
index 0000000..5210868
--- /dev/null
+++ b/content/posts/2004-01-12-tarpitting-in-iptables.html
@@ -0,0 +1,33 @@
+---
+date: "2004-01-12T00:10:53Z"
+title: tarpitting in iptables
+---
+
+
+The incredible lurking
+Pablo strikes again! I saw this bit on IRC an hour ago:
+
+
+
+23:09 <ljlane> wow, read some really evil tarpitting stuff
+23:10 <radsaq> really?
+23:11 <ljlane> yeah, http://www.securityfocus.com/infocus/1723
+23:11 <ljlane> tarpit just before your drop rule. tarpit all ports, tarpit
+ unused nets, etc
+
+
+
+Interesting stuff. That said, I still prefer Stephen's (Snow-Man) more draconian
+approach; hitting an invalid port tosses you in an ipt_recent
+list, which drops all of your traffic for a few minutes. The
+tarpitting approach, while effective at slowing down and confusing a
+probe, still leaves you vulnerable. The ipt_recent
+approach kills automated port scans almost completely, without using as
+many resources on the firewall.
+
+Bleep music has no DRM or copy protection built in. We believe that most people like to be treated as customers and not potential criminals - DRM is easily circumvented and just puts obstacles in the way of enjoying music.
+
+Hot on the heels of that announcement, comes this interview with Richard D. James (aka Mr Aphex Twin):
+
+
+
+
+Despite the rushed release of Drukqs and the reasons behind that, he thinks "having music for free is a good thing, because I don't think music should be a commodity. I've changed my opinion to and fro over the years, but I really do think there shouldn't be any copyright on art.
+
+
+
+"But the thing is, some kid somewhere might be really poor and think, 'If I make the best music in the world, I can get some money and buy a house and some equipment', which is what I thought. So that is a good motivation, as well. You would lose that."
+
+
diff --git a/content/posts/2004-01-15-parsedate-is-my-friend.html b/content/posts/2004-01-15-parsedate-is-my-friend.html
new file mode 100644
index 0000000..4d4325f
--- /dev/null
+++ b/content/posts/2004-01-15-parsedate-is-my-friend.html
@@ -0,0 +1,9 @@
+---
+date: "2004-01-15T21:54:01Z"
+title: ParseDate is My Friend
+---
+
+
+I really like it when stuff just works ™. Case in point: the ParseDate module in Ruby. I'm updating LocalFark to account for the change in date syntax on Fark and TotalFark. On a hunch, I just passed the entire date string scraped from {,Total}Fark into ParseDate::parsedate, and it worked exactly as advertised, simplifying the code in LocalFark. I'm testing the changes now; if everything works okay a new version will be out in less than an hour.
+
+13:17 <pabs> richlowe: i'm actually not up on teh kiddie cs speak
+13:17 <pabs> richlowe: but i can do the q3 speak
+13:17 <richlowe> pabs: me neither.
+13:17 <richlowe> it's pretty much the same.
+13:17 <pug-uni> richlowe: to be an pwns0r rules
+13:17 <pabs> it's basically different dialects of hte same language though
+13:18 <richlowe> you need exactly 3 phrases "OMG!!!! HAX!!!", "CAMPING PUSSY!",
+ and "Fuking n00b"
+13:18 <richlowe> and you fit right in.
+13:18 <richlowe> of course, there's CS specifics like "Lose the fucking shield,
+ dipshit"
+13:19 <richlowe> and my personal favorite "'cover me' does not mean 'Throw a
+ grenade in after me' donkey fucker'"
+13:21 <pabs> hmm i should write this stuff down
+
+
diff --git a/content/posts/2004-01-15-tap-tap-tap.html b/content/posts/2004-01-15-tap-tap-tap.html
new file mode 100644
index 0000000..89dba15
--- /dev/null
+++ b/content/posts/2004-01-15-tap-tap-tap.html
@@ -0,0 +1,9 @@
+---
+date: "2004-01-15T22:57:57Z"
+title: Tap Tap Tap
+---
+
+
+Everything didn't work okay. But I fixed it! Now I'm just waiting for this test to run. In the mean time, take a look at my newly-rewritten and vastly-simplified Download page (shamelessly stolen from Tom's Download page).
+
+
diff --git a/content/posts/2004-01-15-the-year-of-the-lan.html b/content/posts/2004-01-15-the-year-of-the-lan.html
new file mode 100644
index 0000000..756405e
--- /dev/null
+++ b/content/posts/2004-01-15-the-year-of-the-lan.html
@@ -0,0 +1,21 @@
+---
+date: "2004-01-15T20:14:30Z"
+title: The Year of the LAN
+---
+
+
+Why am I so hars? Because Java hasn't lived up to its potential - yet. Yes, it may be important, but when it becomes important, you won't notice because it will blend into the landscape. Another history lesson: For years people were talking about "198X will be the Year of the LAN," but when it finally happened, no one noticed because it was accepted. Does anyone remember exactly what year was the year of the CD-ROM? No. It just happened. The same thing will happen to Java.
+
+
+- Vincent Flanders in "Web Pages That Suck" book (and the website), 1998
+
+
+
+(Okay, Java seems to be all over the place now, all right. What was the Year of Java? I think I missed it.)
+
+
+
diff --git a/content/posts/2004-01-17-cry-me-a-river-adobe.html b/content/posts/2004-01-17-cry-me-a-river-adobe.html
new file mode 100644
index 0000000..1e67afe
--- /dev/null
+++ b/content/posts/2004-01-17-cry-me-a-river-adobe.html
@@ -0,0 +1,10 @@
+---
+date: "2004-01-17T14:09:47Z"
+title: Cry Me a River, Adobe
+---
+
+
+Adobe is apparently unhappy about their trademark, Photoshop™™™ being used as a verb.
+Check it out.
+
+
diff --git a/content/posts/2004-01-18-big-rigs-review.html b/content/posts/2004-01-18-big-rigs-review.html
new file mode 100644
index 0000000..3a6ddb9
--- /dev/null
+++ b/content/posts/2004-01-18-big-rigs-review.html
@@ -0,0 +1,13 @@
+---
+date: "2004-01-18T00:30:14Z"
+title: Big Rigs Review
+---
+
+
+From this review of "Big Rigs: Over the Top Racing":
+
+
+
+Just how bad is Big Rigs: Over the Road Racing? It's as bad as your mind will allow you to comprehend. It is so disturbingly bad that even its budget price tag seems like a slap in the face. It really makes you wonder if the company that put out this dreck even took so much as a half minute to glance at the game that it was releasing. The game's readme file does assert that the game was thoroughly tested on various PCs, but the end result seems to suggest otherwise. The fact is, even if you tried, you couldn't play Big Rigs: Over the Road Racing the way it was seemingly intended to be played, and even if you could, you wouldn't want to.
+
+I know this was on Slashdot, but I feel it bears repeating. Thief 3!!!! I need to get the first two and play them again. The second one is one of my favorite games of all-time.
+
+
diff --git a/content/posts/2004-01-24-inferring-and-visualizing-social-networks-on-irc.html b/content/posts/2004-01-24-inferring-and-visualizing-social-networks-on-irc.html
new file mode 100644
index 0000000..fe3a0b8
--- /dev/null
+++ b/content/posts/2004-01-24-inferring-and-visualizing-social-networks-on-irc.html
@@ -0,0 +1,9 @@
+---
+date: "2004-01-24T15:18:07Z"
+title: Inferring and Visualizing Social Networks on IRC
+---
+
+
+Richard (richlowe) pointed me towards this cool article on graphing relationships between individuals on IRC. Finally, something useful to do with the years of IRC logs I've accumulated!
+
+
diff --git a/content/posts/2004-01-24-prime-number-shitting-bear.html b/content/posts/2004-01-24-prime-number-shitting-bear.html
new file mode 100644
index 0000000..a5292f8
--- /dev/null
+++ b/content/posts/2004-01-24-prime-number-shitting-bear.html
@@ -0,0 +1,59 @@
+---
+date: "2004-01-24T13:18:27Z"
+title: Prime Number Shitting Bear
+---
+
+
+Okay, this is officially the funniest site I've seen all week!
+
+
+
+13:05 <astaroth> http://members.surfeu.fi/kklaine/primebear.html
+13:05 <astaroth> i'm not at all sure why....
+13:09 <ljlane> poor bear
+13:10 <ljlane> Man. I broke a nail.
+13:13 <pabs> okay that site is awesome
+13:15 <ljlane> astaroth is about to get pablotronned
+13:15 <pabs> you know it!
+
+
+
+Then again, it could also be a sign that I have no sense of humor :(
+
+
+
+Update:
+
+ PRIMESTATS
+
+ Prime now:
+ 57073
+ Prime count:
+ 5786
+ Prime density:
+ 10.1%
+ Uptime:
+ 01:38
+
+:)
+
+
+
+Update 2:
+
+ PRIMESTATS
+
+ Prime now:
+ 418939
+ Prime count:
+ 35309
+ Prime density:
+ 8.4%
+ Uptime:
+ 10:02
+
+
+10 hours and I'm still going strong!
+
+
diff --git a/content/posts/2004-01-28-time-to-shut-the-poor-bear-down.html b/content/posts/2004-01-28-time-to-shut-the-poor-bear-down.html
new file mode 100644
index 0000000..254344b
--- /dev/null
+++ b/content/posts/2004-01-28-time-to-shut-the-poor-bear-down.html
@@ -0,0 +1,22 @@
+---
+date: "2004-01-28T10:31:46Z"
+title: Time to Shut the Poor Bear Down
+---
+
+
+
diff --git a/content/posts/2004-01-29-dns-snafu-prime-number-bear.html b/content/posts/2004-01-29-dns-snafu-prime-number-bear.html
new file mode 100644
index 0000000..58a5fb6
--- /dev/null
+++ b/content/posts/2004-01-29-dns-snafu-prime-number-bear.html
@@ -0,0 +1,27 @@
+---
+date: "2004-01-29T12:17:20Z"
+title: DNS SNAFU, Prime Number Bear
+---
+
+
+I had a minor DNS hitch with paulduncan.org; specifically, I accidentally let it expire on Tuesday. It's fixed now, and back in service. I'm just glad noone snatched it up and turned it into a porn site or anything :).
+
+
+
diff --git a/content/posts/2004-01-29-mail-woes.html b/content/posts/2004-01-29-mail-woes.html
new file mode 100644
index 0000000..990c6cc
--- /dev/null
+++ b/content/posts/2004-01-29-mail-woes.html
@@ -0,0 +1,20 @@
+---
+date: "2004-01-29T17:06:17Z"
+title: Mail Woes
+---
+
+
+
+
+
+
+Stephen's (Snow-Man) network is
+down until Saturday, which means no email for poor, poor Pablo. I a
+mail backup from roughly five days ago, and I have redirected mail
+elsewhere as an interim (soon to be permanent) solution, but if you've
+sent me mail within the last 24 hours and I haven't responded, I can't
+get at the message and probably haven't seen it, so you'll need to
+resend it.
+
+I think I finally fixed the threading bug in Raggle. The results are sitting in CVS right now. There's a bunch of little bugs that have cropped up now, but if that is working like I think it is, then we're a lot closer to an 0.3.0 release.
+
+<Snow-Man> 3/1/4 15:9:26
+<moss> that will happen this year
+<Snow-Man> I want to be eating pie at that time. :)
+<moss> as will 2/3/4 5:6:7
+<bma> there's 70 seconds in a minute? sweet
+<moss> although it's pretty arbitrary
+<Snow-Man> That's the 7th second. :P
+<bma> damn :)
+<Snow-Man> Today is 2/3/4. :)
+
+FHS 2.3 has been released. It's got stuff like /media and a clarification of the meaning of /etc. Here's the announcement.
+
+
diff --git a/content/posts/2004-02-09-not-quite-so-evil.html b/content/posts/2004-02-09-not-quite-so-evil.html
new file mode 100644
index 0000000..8fcbed3
--- /dev/null
+++ b/content/posts/2004-02-09-not-quite-so-evil.html
@@ -0,0 +1,23 @@
+---
+date: "2004-02-09T17:35:59Z"
+title: Not Quite So Evil
+---
+
+
So I've been using MSCAPI and CAPICOM
+here at work, and I have to say that I'm impressed. I've used
+OpenSSL for crypto stuff in the
+past, and both
+the API and
+documentation for OpenSSL
+suck ass. Specifically, the API is counter-intuitive, and the
+documentation is terse or non-existent. Of course, there are other options, but
+they're not as popular (and they lack language bindings, at least for the time being).
+
+
diff --git a/content/posts/2004-02-10-10-4-good-buddy.html b/content/posts/2004-02-10-10-4-good-buddy.html
new file mode 100644
index 0000000..4af2dcc
--- /dev/null
+++ b/content/posts/2004-02-10-10-4-good-buddy.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-10T08:57:47Z"
+title: 10-4, Good Buddy!
+---
+
+
+The changes I made to the parallel feed grabbing in Raggle have been running smoothly for several days now, so I think it's just about ready for release. Now I just need to fix the other outstanding bugs...
+
+
diff --git a/content/posts/2004-02-20-about-friggin-time.html b/content/posts/2004-02-20-about-friggin-time.html
new file mode 100644
index 0000000..5c48d74
--- /dev/null
+++ b/content/posts/2004-02-20-about-friggin-time.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-20T17:53:19Z"
+title: ABOUT FRIGGIN TIME
+---
+
+
+I finally released version 0.3.0 of Raggle. Here's the ruby-talk announcement, and here's the announcement on raggle.org. All this documentation and release note typing is making my fingers hurt. Anyway, give 0.3.0 a shot and let me know what you think :).
+
+
diff --git a/content/posts/2004-02-20-intelligent-comments-on-slashdot.html b/content/posts/2004-02-20-intelligent-comments-on-slashdot.html
new file mode 100644
index 0000000..5e1bc78
--- /dev/null
+++ b/content/posts/2004-02-20-intelligent-comments-on-slashdot.html
@@ -0,0 +1,10 @@
+---
+date: "2004-02-20T19:36:26Z"
+title: Intelligent Comments on Slashdot?
+---
+
+
+Who says there's no intelligence left in the Slashdot comments? Here's one that explains the dispersion of a magnetic field. Neat stuff.
+
+
+
diff --git a/content/posts/2004-02-25-bootsplash-in-2-6-3.html b/content/posts/2004-02-25-bootsplash-in-2-6-3.html
new file mode 100644
index 0000000..4146e04
--- /dev/null
+++ b/content/posts/2004-02-25-bootsplash-in-2-6-3.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-25T17:48:45Z"
+title: Bootsplash in 2.6.3
+---
+
+
+In case anyone else gets burned by this, Bootsplash doe s not work with 2.6.3. It patches in with one rejection (that's easy to fix), but if you compile and reboot the kernel hard locks almost immediately.
+
+
diff --git a/content/posts/2004-02-25-ccache-and-distcc.html b/content/posts/2004-02-25-ccache-and-distcc.html
new file mode 100644
index 0000000..95501c7
--- /dev/null
+++ b/content/posts/2004-02-25-ccache-and-distcc.html
@@ -0,0 +1,8 @@
+---
+date: "2004-02-25T22:34:48Z"
+title: ccache and distcc
+---
+
+
+I wrote a quick wrapper program for Richard (richlowe); it passes ccache and distcc on the command-line, along with whatever arguments you specify. It's written in C to minimize shell invocation overhead. Here's the source. Call it as shorthand for the usual ccache, distcc, cc chain, like so: gmake -j8 CC=ccdc.
+
diff --git a/content/posts/2004-02-26-2-6-3-so-far-so-good.html b/content/posts/2004-02-26-2-6-3-so-far-so-good.html
new file mode 100644
index 0000000..bb98f0f
--- /dev/null
+++ b/content/posts/2004-02-26-2-6-3-so-far-so-good.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-26T07:16:38Z"
+title: '2.6.3: So Far, So Good'
+---
+
+
+My ~12 hour experience with 2.6.3 has been positive so far. Everything seems to be working properly, and things feel a bit more responsive. I do miss my Bootsplash though :(.
+
+
diff --git a/content/posts/2004-02-26-raggle-on-raa-and-freshmeat.html b/content/posts/2004-02-26-raggle-on-raa-and-freshmeat.html
new file mode 100644
index 0000000..b993b66
--- /dev/null
+++ b/content/posts/2004-02-26-raggle-on-raa-and-freshmeat.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-26T09:04:17Z"
+title: Raggle on RAA and Freshmeat
+---
+
+
+
diff --git a/content/posts/2004-02-27-knoppix-and-sumo.html b/content/posts/2004-02-27-knoppix-and-sumo.html
new file mode 100644
index 0000000..6a2bfed
--- /dev/null
+++ b/content/posts/2004-02-27-knoppix-and-sumo.html
@@ -0,0 +1,17 @@
+---
+date: "2004-02-27T19:46:53Z"
+title: Knoppix and Sumo
+---
+
+
+So I got this hand-me-down machine from Ken, a 600MHz P3, 1.5G of RAM; So far I've used it for distcc fun, but otherwise I'm still looking for fun stuff to do with it. Suggestions are welcome!
+
+
+
+I burned 4 copies of Knoppix; I'm
+going to keep one at the house, give one away to a friend at work, and
+leave a couple laying around in the lab in the hopes that it catches on.
+I'm also going to show it off to my coworkers and manager; I think
+they'll be impressed. Viva la revolution!! :)
+
+
diff --git a/content/posts/2004-02-27-knoppix-is-cool.html b/content/posts/2004-02-27-knoppix-is-cool.html
new file mode 100644
index 0000000..082c2c3
--- /dev/null
+++ b/content/posts/2004-02-27-knoppix-is-cool.html
@@ -0,0 +1,9 @@
+---
+date: "2004-02-27T08:58:35Z"
+title: Knoppix is Cool!
+---
+
+
+I finally tried out Knoppix last night. Wow, it's really cool! It auto-detected everything, then started up X and KDE. If you want to show of Linux to your friends, this is what you should be showing them :).
+
+There's an updated Bootsplash patch that works with 2.6.3. I've got it on the laptop now and everything seems to be working properly.
+
+
diff --git a/content/posts/2004-03-01-another-rss-article.html b/content/posts/2004-03-01-another-rss-article.html
new file mode 100644
index 0000000..fb87b3b
--- /dev/null
+++ b/content/posts/2004-03-01-another-rss-article.html
@@ -0,0 +1,9 @@
+---
+date: "2004-03-01T09:00:39Z"
+title: Another /. RSS Article
+---
+
+
+Here's yet another Slashdot article on RSS. I don't generally mention Slashdot articles here, since I figure most people who read Pablotron also read Slashdot, but I figured since people are coming here for Raggle-related news, RSS-related news is probably welcome as well.
+
+
diff --git a/content/posts/2004-03-02-how-many-subscriptions-plot.html b/content/posts/2004-03-02-how-many-subscriptions-plot.html
new file mode 100644
index 0000000..bb11445
--- /dev/null
+++ b/content/posts/2004-03-02-how-many-subscriptions-plot.html
@@ -0,0 +1,9 @@
+---
+date: "2004-03-02T21:53:26Z"
+title: '"How Many Subscriptions" Plot'
+---
+
+
+Continuing our all-RSS news day, here's a plot of the current results from "Share your OPML".
+
+
diff --git a/content/posts/2004-03-02-huge-list-of-rss-feed-directories.html b/content/posts/2004-03-02-huge-list-of-rss-feed-directories.html
new file mode 100644
index 0000000..8293ec7
--- /dev/null
+++ b/content/posts/2004-03-02-huge-list-of-rss-feed-directories.html
@@ -0,0 +1,9 @@
+---
+date: "2004-03-02T17:11:17Z"
+title: Huge List of RSS Feed Directories
+---
+
+
+Title says it all. Here's a gigantic list of RSS feed directories.
+
+Looking for a good way to explain or understand RSS? This NewsMax article is one of the best real-world summaries I've seen lately. From the article:
+
+
+
+
+ "For an average Internet user who regularly visits about 50 Web sites, rather than have to go visit those 50 sites wouldn't it be cool if those sites could somehow visit you? And not only that, but if they could also tell you when they've changed?" said Greg Reinacker, head of NewsGator, which sells an add-on for Microsoft's Outlook e-mail client that offers one leading way to read feeds.
+
+
+
...
+
+
+Anyone who builds a Web site can incorporate Web feeds. If it lives on the Web, it can be brought to your desktop - or to your wireless device, for that matter.
+
+
+
+Human Rights Watch keeps activists current with feeds sorted by region. The U.S. Geological Survey's feeds let seismologists immediately know where the world is shaking.
+
+
+
+The U.S. Product Safety Commission just began providing recall notices via RSS. General Motors offers feeds on topics including safety and automotive tech. And a growing number of companies use feeds to disseminate info internally.
+
+
+
...
+
+
+Yahoo and Google recently embraced Web feeds, and Microsoft is expected to incorporate tools for managing them in its next-generation operating system, code-named Longhorn.
+
+
+
+
+The article briefly touches on some of the various RSS turf wars (Winer vs. mark, etc). Overall, a good summary of where RSS is at, how it's being used now, and where it's going.
+
+
diff --git a/content/posts/2004-03-20-man-down-man-down.html b/content/posts/2004-03-20-man-down-man-down.html
new file mode 100644
index 0000000..a0e6f17
--- /dev/null
+++ b/content/posts/2004-03-20-man-down-man-down.html
@@ -0,0 +1,9 @@
+---
+date: "2004-03-20T18:56:47Z"
+title: Man Down, Man Down!
+---
+
+
+The hard drive in picard is dying! Fortunately I've been living upstairs on halcyon since the weather got cold, so it's really more of an inconvenience (and a blow to my distcc farm) than a serious catastrophe. I've shut it down for now; I'll power it back up again when I get a new drive so I can do a mass transfer.
+
+I've been looking for a couple of other XML-RPC- or SOAP-aware RSS directories to query from the new feed search in Raggle. There seems to be a plethora of ping APIs exposed, but virtually no query interfaces. At the moment, the best one by far is the Syndic8 API, followed closely by Meerkat (both are XML-RPC. Ah well, c'est la vie. Speaking of the new find feeds feature in Raggle, here's what it looks like:
+
+
+
+
+
+
+
+It's even less functional than the Categories code at the moment, but the basic framework is there. Anyway, here's a couple of interesting links:
+
+Last night I added categories to the console interface of the CVS version of Raggle. They're still a bit buggy,
+but here's what the dialog looks like:
+
+I just stumbled across this list
+of MSDN-related
+blogs on MSDN.
+
+
diff --git a/content/posts/2004-03-22-xmms-ruby-and-m3u.html b/content/posts/2004-03-22-xmms-ruby-and-m3u.html
new file mode 100644
index 0000000..69f5aac
--- /dev/null
+++ b/content/posts/2004-03-22-xmms-ruby-and-m3u.html
@@ -0,0 +1,59 @@
+---
+date: "2004-03-22T12:40:09Z"
+title: XMMS-Ruby and M3U
+---
+
+
+I wrote this little snippet of code in response to an email, and I thought it might be useful for other people.
+
+
+
+
+Basically, I'm trying to write some code that will connect to a running
+XMMS session, grab the playlist and write out a .pls or a .m3u file.
+Unfortunately, while XMMS can do this in a single operation, their API
+doesn't seem to have a simple hook to do this.
+
+
+
+Unfortunately, there's nothing in the remote API that lets you do that
+in a single call. But it should be pretty easy to write; just iterate
+over the list and print out the necessary lines for each entry.
+Something like this:
+
+
+
+ module Xmms
+ class Remote
+ #
+ # get playlist contents as m3u-encoded string
+ #
+ def to_m3u
+ "#EXTM3U\n" + playlist.map { |title, file, time|
+ "#EXTINF:#{time / 1000},#{title}\n#{file}"
+ }.join("\n")
+ end
+ end
+ end
+
+
+
+Then, to save a playlist, you can just do the following:
+
+
+ A text system cannot by definition display graphics.
+
+
+
+(Just to be pedantic... Actually, not really trying to 'correct' anything you said; I just wanna show off what an old geezer I am.)
+
+
+
+Tell that to VIC20 programmers. Unlike the C64, the VIC20 didn't have a graphics mode. But you could display a 16x16 grid showing the whole character set, and then tell the video hardware to look up the character definitions somewhere in RAM instead of using the ROM. This effectively gave you a 128 pixel by 128 pixel bitmap display, on a "text-only" system.
+
+
+
+... and we liked it! (Well, ok, not really.)
+
+
+
+Oh, and speaking of the fact that text mode is faster than graphics, there was a "joke" later in the mid 80s, having to do with that. If you wrote a BASIC program on the C64 that, say, computed and printed the first 100 prime numbers, and then did the same thing on the Amiga, the C64 was faster. People would say, "Huh? How can that be? The Amiga's blazing 7 MHz 16-bit 68000 runs rings around the 6510!" But then you'd do it, and the C64 would really win. It had nothing to do with the how fast the processors could compute primes, though. It was just that the C64 could copy 2k of RAM (the amount of work to "scroll" the text display) faster than the Amiga blitter could copy several hundred k to "scroll" a graphic display. (The Amiga didn't have a text mode. ;-)
+
+
+
diff --git a/content/posts/2004-03-23-pickaxe-ii-feedback.html b/content/posts/2004-03-23-pickaxe-ii-feedback.html
new file mode 100644
index 0000000..1df7241
--- /dev/null
+++ b/content/posts/2004-03-23-pickaxe-ii-feedback.html
@@ -0,0 +1,57 @@
+---
+date: "2004-03-23T14:11:00Z"
+title: PickAxe II Feedback
+---
+
+
+So, this is what I'm thinking. Rather than document all the methods in
+all the lib/ and ext/ classes and modules, I'd like to have a one-page
+summary for each. Each page would contain a synopsis of the function of
+the library, along with a small number of samples of use. The idea is
+that you can read through this to find libraries that would be useful,
+and then consult the RDoc for details. Think of it as a kind of
+exhaustive library cookbook. I've posted sample pages at
+
+
+(These are rough, and contain typesetting problems and other errors---I
+just wanted to give folks a feel for what I was talking about).
+
+
+
+So, here's the question: is this the way to go? Are folks happy seeing
+this kind of synoptic information in the book, and then referring to
+the online or local documentation for the details? (Don't worry about
+the built-in stuff: I'm keeping the existing format for all of that, so
+you'll still have the complete method listing for String, Array, and
+friends).
+
+
+
+
+The full message (and thread) is available here.
+
+
+
+Update: Apparently the ruby-talk archive code is a bit
+behind; the link is correct, but the message isn't archived yet. At the
+moment, there's nothing on the ruby-talk archive page dated past
+March 19th.
+
+
diff --git a/content/posts/2004-04-07-party-like-it-s-1992.html b/content/posts/2004-04-07-party-like-it-s-1992.html
new file mode 100644
index 0000000..427202b
--- /dev/null
+++ b/content/posts/2004-04-07-party-like-it-s-1992.html
@@ -0,0 +1,87 @@
+---
+date: "2004-04-07T21:41:10Z"
+title: Party Like It's 1992
+---
+
+
+I've been using CAPICOM
+at work. Since most COM objects are supposed to
+work with VB, the string values returned by
+COM functions (in my
+case CAPICOM::Certificate.Export())
+have some bizarre and baroque semantics when called from C++. One quirk
+I found particularly amusing was the memory allocation behind BSTRs; here's what "Eric's
+Complete Guide to BSTR Semantics" has to say about what's
+happening under the hood for BSTRs:
+
+
+
+
+COM code uses the BSTR to store a Unicode string, short for "Basic
+String". (So called because this method of storing strings was developed
+for OLE Automation, which was at the time motivated by the development
+ of the Visual Basic language engine.)
+
+
+
...
+
+
+
+
If you write a function which takes an argument of type BSTR then
+you are required to accept NULL as a valid BSTR and treat it the same as
+a pointer to a zero-length BSTR. COM uses this convention, as does
+Visual Basic and VBScript, so if you want to play well with others you
+have to obey this convention. If a string variable in VB happens to be
+an empty string then VB might pass it as NULL or as a zero-length buffer
+-- it is entirely dependent on the internal workings of the VB
+program.
+
BSTRs are always allocated and freed with SysAllocString, SysAllocStringLen, SysFreeString and so on. The underlying memory is cached by the operating system and it is a serious, heap-corrupting error to call "free" or "delete" on a BSTR. Similarly it is also an error to allocate a buffer with "malloc" or "new" and cast it to a BSTR. Internal operating system code makes assumptions about the layout in memory of a BSTR which you should not attempt to simulate.
+
The number of characters in a BSTR is fixed. A ten-byte BSTR contains five Unicode characters, end of story.
+
+
A BSTR always points to the first valid character in the buffer.
+This is not legal:
+When you call SysAllocString(L"ABCDE") the operating system actually allocates sixteen bytes. The first four bytes are a 32 bit integer representing the number of valid bytes in the string -- initialized to ten in this case. The next ten bytes belong to the caller and are filled in with the data passed in to the allocator. The final two bytes are filled in with zeros. You are then given a pointer to the data, not to the header.
+
+
+
+
(Emphasis is mine)
+
+
+Strings with a length prefix and a double-NULL suffix. Now
+that's what I call efficient use of memory! Seriously though,
+this is like some sort of programming time warp; it reminds me of both
+the Pascal-induced single-byte length prefix strings the
+Mac Toolbox
+calls used and the associated (and equally wacky) string-conversion
+functions.
+ Ah, history.
+
+I just found out about BlueCloth, which is a Ruby implementation of Markdown. Markdown allows you to transform specially formatted plain-text documents into HTML. What's cool is it's a nice, human-readable format. Here's some sample text from BlueCloth page:
+
+
+
+
+The Ant-Sugar Tales
+===================
+
+By Candice Yellowflower
+
+The _Ant-Sugar Tales_ is a collection of short stories told from the
+perspective of a fine young lady from [Venice][1], who has some run-ins
+with a few [inquisitive insects][2]. Each tale presents a moral quandry,
+which the ants are quick to solve with their antly wisdom and
+know-how. Some of the moral lessons presented are:
+
+* Laundry: How not to get caught in soiled knickers.
+* Used Ticket Stubs and Their Impact on the Universe
+* I'm Keeping a Birdhouse in my Attic
+
+
+Use of Metaphor
+---------------
+The author's splended use of metaphor can be attributed to her growing
+up in a art-supply store. Her characters are richly outlined, but her
+unusual descriptions can sometimes be a bit jarring in places, such as
+her description of the old caretaker that lives inside a hollow tree in
+her yard:
+
+> His skin was smooth like Magnani Pescia 100% acid-free cold pressed
+> 22x30" Soft White Paper, with fine hair like the bristles of a Habico
+> Lasur Superb Oil Glazing Brush Size 10.
+
+
+ [1]: http://www.azureva.com/gb/italie/mags/grand-canal.php3
+ (Venice: The Grand Canal)
+ [2]: http://www.fortunecity.com/emachines/e11/86/tourist4d.html
+
+
+
+
+And that gets transformed into the following:
+
+
+
+
+
+
The Ant-Sugar Tales
+
+
By Candice Yellowflower
+
+
The Ant-Sugar Tales is a collection of short stories told from the
+perspective of a fine young lady from Venice, who has some run-ins
+with a few inquisitive insects. Each tale presents a moral quandry,
+which the ants are quick to solve with their antly wisdom and
+know-how. Some of the moral lessons presented are:
+
+
+
Laundry: How not to get caught in soiled knickers.
+
Used Ticket Stubs and Their Impact on the Universe
+
I'm Keeping a Birdhouse in my Attic
+
+
+
Use of Metaphor
+
+
The author's splended use of metaphor can be attributed to her growing
+up in a art-supply store. Her characters are richly outlined, but her
+unusual descriptions can sometimes be a bit jarring in places, such as
+her description of the old caretaker that lives inside a hollow tree in
+her yard:
+
+
+
His skin was smooth like Magnani Pescia 100% acid-free cold pressed
+ 22x30" Soft White Paper, with fine hair like the bristles of a Habico
+ Lasur Superb Oil Glazing Brush Size 10.
+Your post advocates a
+
+( ) technical (x) legislative ( ) market-based ( ) vigilante
+
+approach to fighting spam. Your idea will not work. Here is why it won't
+work. (One or more of the following may apply to your particular idea,
+and it may have other flaws which used to vary from state to state
+before a bad federal law was passed.)
+
+( ) Spammers can easily use it to harvest email addresses
+( ) Mailing lists and other legitimate email uses would be affected
+(x) No one will be able to find the guy or collect the money
+(x) It is defenseless against brute force attacks
+( ) It will stop spam for two weeks and then we'll be stuck with it
+( ) Users of email will not put up with it
+( ) Microsoft will not put up with it
+( ) The police will not put up with it
+(x) Requires too much cooperation from spammers
+( ) Requires immediate total cooperation from everybody at once
+( ) Many email users cannot afford to lose business or alienate
+ potential employers
+( ) Spammers don't care about invalid addresses in their lists
+( ) Anyone could anonymously destroy anyone else's career or
+ business
+
+Specifically, your plan fails to account for
+
+( ) Laws expressly prohibiting it
+(x) Lack of centrally controlling authority for email
+(x) Open relays in foreign countries
+( ) Ease of searching tiny alphanumeric address space of all email
+ addresses
+(x) Asshats
+( ) Jurisdictional problems
+( ) Unpopularity of weird new taxes
+( ) Public reluctance to accept weird new forms of money
+( ) Huge existing software investment in SMTP
+( ) Susceptibility of protocols other than SMTP to attack
+( ) Willingness of users to install OS patches received by email
+(x) Armies of worm riddled broadband-connected Windows boxes
+(x) Eternal arms race involved in all filtering approaches
+( ) Extreme profitability of spam
+( ) Joe jobs and/or identity theft
+(x) Technically illiterate politicians
+(x) Extreme stupidity on the part of people who do business with
+ spammers
+(x) Dishonesty on the part of spammers themselves
+( ) Bandwidth costs that are unaffected by client filtering
+(x) Outlook
+
+and the following philosophical objections may also apply:
+
+(x) Ideas similar to yours are easy to come up with, yet none have
+ ever been shown practical
+( ) Any scheme based on opt-out is unacceptable
+( ) SMTP headers should not be the subject of legislation
+( ) Blacklists suck
+( ) Whitelists suck
+(x) We should be able to talk about Viagra without being censored
+( ) Countermeasures should not involve wire fraud or credit card
+ fraud
+( ) Countermeasures should not involve sabotage of public networks
+( ) Countermeasures must work if phased in gradually
+( ) Sending email should be free
+( ) Why should we have to trust you and your servers?
+( ) Incompatiblity with open source or open source licenses
+(x) Feel-good measures do nothing to solve the problem
+( ) Temporary/one-time email addresses are cumbersome
+( ) I don't want the government reading my email
+(x) Killing them that way is not slow and painful enough
+
+Furthermore, this is what I think about you:
+
+( ) Sorry dude, but I don't think it would work.
+( ) This is a stupid idea, and you're a stupid person for suggesting it.
+(x) Nice try, assh0le! I'm going to find out where you live and burn
+ your house down!
+
+GMail is officially a meme. I see conversations about it in three different IRC windows, it's all over the place on TotalFark and the Something Awful Forums, and I've had two conversations about it within the last 48 hours. Congratulations to the Google marketing department.
+
+
+
+Update: Just stumbled across this
+page. The poor bastard got a Gmail invite from his mom.
+
+Another release for the day. FAM-Ruby
+version 0.1.4. This release includes documentation updates (also
+available online) and a couple of
+patches from Nobu Nakada which improve Ruby 1.8 behavior and make FAM-Ruby work correctly with Ruby threads. A full list of
+changes is availabe in the ChangeLog. Download FAM-Ruby 0.1.4 (Signature).
+
+I just released Xmms-Ruby version 0.1.2. This release fixes a number of outstanding bugs, includes updated API documentation (also available online), and adds a block mode for the Xmms::Remote#playlist method. Download Xmms-Ruby 0.1.2 (Signature, ChangeLog).
+
+
diff --git a/content/posts/2004-07-11-cvs-raggle-is-broken.html b/content/posts/2004-07-11-cvs-raggle-is-broken.html
new file mode 100644
index 0000000..3c947ef
--- /dev/null
+++ b/content/posts/2004-07-11-cvs-raggle-is-broken.html
@@ -0,0 +1,9 @@
+---
+date: "2004-07-11T04:42:25Z"
+title: CVS Raggle is Broken
+---
+
+
+Just a heads-up to those of you who use the CVS version of Raggle: don't upgrade for a couple of days. I'm reorganizing the internals, so it's broken until further notice.
+
+I just released Imlib2-Ruby version
+0.4.3. This version includes a fix for Imlib2::Image#data
+and Imlib2::Image#data! from Alvin Schur and an updated
+API
+reference (also available online). Download Imlib2-Ruby 0.4.3
+(Signature, ChangeLog).
+
+
diff --git a/content/posts/2004-07-13-ldap-should-be-beaten-shot-twice-then-beaten-again.html b/content/posts/2004-07-13-ldap-should-be-beaten-shot-twice-then-beaten-again.html
new file mode 100644
index 0000000..81e40d6
--- /dev/null
+++ b/content/posts/2004-07-13-ldap-should-be-beaten-shot-twice-then-beaten-again.html
@@ -0,0 +1,74 @@
+---
+date: "2004-07-13T05:05:04Z"
+title: LDAP Should Be Beaten, Shot Twice, then Beaten Again
+---
+
+
+I'm trying to set up an address book that's accessible from arbitrary
+clients. The logical way to do that is set up an LDAP server (in
+my case, OpenLDAP), then populate
+it with contact information. That's all fine and good. I can add
+entries with Directory
+Assistant and GQ. I can even
+query the LDAP server with Thunderbird (and
+presumably Evolution as well,
+although I haven't tried). Here's the snag: I'd like to be able to
+store modern attributes, such as IRC nicknames, AIM and ICQ
+screen names, web sites, etc. Thunderbird
+allows you to enter in those attributes, and you can export entries in
+LDIF
+format, but when I try and import them into OpenLDAP, it complains about missing
+attributes (obviously). Well, this page
+talks about the exact same problem. The author references the mozillaOrgPerson
+schema and mozilla_op20.schema,
+but when I include those in my slapd.conf, I get the
+following error:
+
+
+
+
+/etc/ldap/schema/mozillaorgperson.schema: line 135: AttributeType not found: "nsAIMid"
+
+
+
+
+Huh? The schema is supposed to be defining attributes, not
+referencing them. I guess I'll keep plugging away. One other problem:
+Thunderbird
+can only query LDAP servers, not add entries to them. That means
+I'll have to create entries locally, export them as LDIF files, tweak
+them slightly for my DN, then import them by hand. Ugh. I'd like
+something as simple as Directory
+Assistant that supports the extra attributes (an extra bonus would
+be a console interface; I do believe I might be writing another console
+application ;-)).
+
+
+
+This seems like a simple problem. I'm sure lots of other
+people have tried to do what I'm doing right now. So where's the simple
+solution? I just want to set up a modern address book that's accessible
+via LDAP, and I'd prefer not to have to reinvent the wheel, electricity,
+indoor plumbing, and nuclear fusion in the process. Suggestions?
+
+
+
+Edit: The grammar police detained me for questioning.
+
+
diff --git a/content/posts/2004-07-27-too-geeky.html b/content/posts/2004-07-27-too-geeky.html
new file mode 100644
index 0000000..6e5a1f4
--- /dev/null
+++ b/content/posts/2004-07-27-too-geeky.html
@@ -0,0 +1,9 @@
+---
+date: "2004-07-27T04:17:43Z"
+title: Too Geeky
+---
+
+
+I had to write a short Perl script at work today; it only reminded me exactly why I like Ruby so much. In other news I'm apparently too geeky.
+
+
diff --git a/content/posts/2004-07-28-free-nat-in-windows-almost.html b/content/posts/2004-07-28-free-nat-in-windows-almost.html
new file mode 100644
index 0000000..1b568cf
--- /dev/null
+++ b/content/posts/2004-07-28-free-nat-in-windows-almost.html
@@ -0,0 +1,9 @@
+---
+date: "2004-07-28T01:31:15Z"
+title: Free NAT in Windows (almost)
+---
+
+
+I'm preparing for my trip tomorrow, and I stumbled across PIPMasq, which does partial NATing in Windows. Might be useful for someone else out there.
+
+
diff --git a/content/posts/2004-08-04-big-friggin-files.html b/content/posts/2004-08-04-big-friggin-files.html
new file mode 100644
index 0000000..de374e9
--- /dev/null
+++ b/content/posts/2004-08-04-big-friggin-files.html
@@ -0,0 +1,29 @@
+---
+date: "2004-08-04T17:47:48Z"
+title: Big Friggin Files
+---
+
+
+Here's a handy list of maximum file sizes for various filesystems:
+
+
+
+
+
ext2/3: Filesystem up to 16 TB, individual files to 2 TB
+
Reiserfs: Filesystem up to 17 TB, individual files to 2 TB.
+
JFS: Filesystem up to 32 PB, individual files to 4 PB.
+
XFS: Filesystem up to 16 EB, individual files to 8 EB.
+
NTFS: Varies, but with default block size the maximum filesystem size is 16 TB. Files are limited only by the size of the volume.
+
+
+
+Note: The 2.4 Linux kernel has a 2 TB limitation on the size of a block device, so the very large limits above are, for the moment, theoretical. 2.5/2.6 should fix this limitation.
+
+I also stumbled across MDBTools. It's a set of tools for reading Access files in real operating systems. Seems to be buggy at the moment, but it looks promising.
+
+
diff --git a/content/posts/2004-08-06-easytag-and-openvpn.html b/content/posts/2004-08-06-easytag-and-openvpn.html
new file mode 100644
index 0000000..7e6e934
--- /dev/null
+++ b/content/posts/2004-08-06-easytag-and-openvpn.html
@@ -0,0 +1,21 @@
+---
+date: "2004-08-06T09:10:05Z"
+title: Easytag and OpenVPN
+---
+
+
+Haven't been doing any development lately (mainly because of all the traveling, but I have had a chance to play with a couple of applications. Here's what I've been messing with:
+
+
+
+
EasyTAG: If you run Linux and have more than 5 MP3 files you should be using
+EasyTAG. It's the coolest MP3 and Ogg Vorbis tagging program I've ever seen.
+
OpenVPN: OpenSSL-based VPN software. I haven't actually got it working yet, but it looks promising!
+
+While playing around with GQView, I
+noticed that there are several pretty useful EXIF tags defined in the
+pictures taken by my camera (and most other digital cameras too). I
+also noticed that PHP has built-in support for EXIF data. I'd like to
+tweak my Gallery page
+on paulduncan.org
+to read the date, aperture, exposure time, and other goodies.
+
+
diff --git a/content/posts/2004-08-13-printing-to-a-windows-printer-in-linux.html b/content/posts/2004-08-13-printing-to-a-windows-printer-in-linux.html
new file mode 100644
index 0000000..2ca1453
--- /dev/null
+++ b/content/posts/2004-08-13-printing-to-a-windows-printer-in-linux.html
@@ -0,0 +1,19 @@
+---
+date: "2004-08-13T02:53:37Z"
+title: Printing to a Windows Printer in Linux
+---
+
+
+I've been printing on Alonzo's machine a lot lately, and I finally decided to just go through the hassle of setting up printing in Linux again (it's been years). Well, things have gotten a bit easier since the last time I tried; this page makes it dirt simple.
+
+
+
+I also set up Xprint and
+mp so I can print from Firefox and Mutt, respectively. Oh, Debian users, be sure to install
+xprt-xprintorg, notxprt, as the
+latter is horribly broken.
+
+So that's all I can think of off the top of my head. Feel free to
+harass me via email, IM, or
+ominous threats of bodily harm until I get whatever is most important to
+you checked off!
+
Easy to use: once you get the hang of things it only takes a few minutes to create a gem for a package. There's a guide called "Create a Gem in 10 Minutes", but it looks like it's about 20 minutes too old; some of the command-line flags have changed since the guide was written.
+
Seems to be popular: A lot of popular projects seem to be creating gems (check out the list so far).
+
No build-in signing! Or at least it's not in the documentation I sifted through. There should be either a built-in way of attaching signatures (you're already loading the files and encoding them; MD5 or SHA-1 the contents, then sign that with GnuPG). I home they address this soon, because I think a package management system without some sort of end-to-end security is dead in the water.
+
Funky YAML storage format that's "not much larger than tar". That's nice, why don't you just use tar instead? RPA-Base does. To be fair, according to the RPA FAQ, RubyGems is adopting the RPA file format in the next release.
+
I want mirrors of the main gem distribution site. It's easy enough to create and maintain one, someone just needs to step up to the plate.
+
The --ri-site option should work for RDoc inside the gemspec files. Right now it doesn't seem to.
+
Gem Server is neat!
+
Should have some sort of dependency removal on uninstall feature, ala RPA-Base and aptitude.
+
Generating Ruby code inside the gem worries me, especially without any sort of developer signing going on.
+
+
+
+I'll keep fiddling and let everyone know what I come up with.
+
+
diff --git a/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html b/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html
new file mode 100644
index 0000000..73db4ae
--- /dev/null
+++ b/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html
@@ -0,0 +1,89 @@
+---
+date: "2004-08-25T14:44:12Z"
+title: Thoughts on RubyForge/RubyGems
+---
+
+
+In order to post a RubyGem
+at the moment, you have to create an account on RubyForge, then create a project,
+then upload the gem. RubyForge gives the same things
+that SourceForge does; a web
+site, a CVS
+repository, a file area, forums, mailing lists, kitchen sink, etc.
+Pros: RubyForge is prettier,
+simpler, and more stable than SourceForge (although I've seen
+Windows 95 machines that are more stable than SourceForge, so that's not saying
+much). Also RubyForge doesn't
+have 8 gadzillion dead projects on it, so it's significantly faster than
+SourceForge. Cons: No
+automated interface (XML-RPC, SOAP, email, smoke signals, etc... Freshmeat has an XML-RPC interface, so this isn't an unrealistic
+request), no quick way of creating a minimalist project (for example, a
+project that just classifies itself in the Trove and posts a gem..ie, what I want to do),
+and no integration with RAA or Freshmeat.
+
+
+
+I want to elaborate on the last one a bit, because that's a problem with
+both RubyForge and RubyGems. Let's look at the
+steps I take when I release the latest version of a Ruby binding:
+
+
+
+
Sanity check, make sure the thing still compiles
+
Run whatever testing script I have written, make sure I haven't broken anything crucial
+
Update the documentation (README, TODO, BUGS, etc)
+
Tag the release in CVS. If I'm incrementing the major or minor number, then I create a new branch as well.
+
Export the specified tag to anohter directory (I've got one called releases/ on my workstation).
+
Double-check everything again to make sure things are where they should be (I catch a lot of stupid mistakes here, by the way).
+Well, if there was some interaction between RubyForge, RAA, and Freshmeat, a lot of redundant steps could be eliminated. I'm picking on RubyForge here because it's the new kid on the block; Freshmeat has been around since the dawn of time, and RAA has Ruby's semi-answer to Perl'sCPAN since I started using Ruby. For example, let's say RubyForge had an XML-RPC interface, and it could communicate with RAA (via some RPC interface) and Freshmeat. Now write a script that creates a gem and does the necessary updates to my personal page, then connects to RubyForge via XML-RPC and uploads my tarball, gem, tarball signature, and gem signature, which are then automagically propogated to both Freshmeat and the RAA.
+
+
+
+In short, an automated update interface combined with the ability to
+interact with the other existing software indices would allow me to
+eliminate half of the steps on my software release checklist and make RubyForge incredibly useful to
+developers, even if they don't need web hosting, a mailing list, or a
+CVS repository.
+
+
diff --git a/content/posts/2004-08-31-handy-list-o-apps.html b/content/posts/2004-08-31-handy-list-o-apps.html
new file mode 100644
index 0000000..81a7b9f
--- /dev/null
+++ b/content/posts/2004-08-31-handy-list-o-apps.html
@@ -0,0 +1,13 @@
+---
+date: "2004-08-31T16:47:21Z"
+title: Handy List o' Apps
+---
+
+
+I keep a short list of applications (console, win32, etc) handy for when
+I either forget the name of a utility or I'm sitting down at someone
+else's machine and trying to remember how to do something. I thought it
+might be useful for other people, so here ya
+go. Suggestions are welcome!
+
+solarce has been raving about del.icio.us in #gah for
+several days now, so I finally created an account and whipped up a quick
+Linkblog. I had the Linkblog on the sidebar for about 20 minutes, but
+it looked funny, so I removed it until I get the layout issues worked
+ironed out. I really dig del.icio.us; it just solved
+my bookmark synchronization and categorization crisis, and gave me a new
+toy to play with.
+
+Here's a couple of ideas I had for the next version of Raggle: searching for RSS feeds via Syndic8 (actually the CVS version of Raggle already does this via an embedded
+copy of the old version of Syndic8-Ruby),
+saving your Raggle feed list as a Syndic8 subscription list (free
+portability, also you could share your blogroll with other people, etc),
+one-click (or buttonpress, whatever) posting of interesting links to Delicious, and Atom
+support. It's actually relatively easy to do most of these as add-ons
+to the existing version of Raggle, but I'd like
+to finish the internal cleanup before adding them. The next version
+will have complete interface abstraction and an opaque engine class,
+allowing other people to come along and do things like write wacky
+backend support (e.g. save feed list to MySQL or Syndic8), custom interfaces (native Win32
+or GTK+ interface, anyone?), rewriting the
+Raggle engine in C. I'm also
+considering using Ruby/RSS for the next
+version of Raggle; the current RSS parsing in Raggle is a bit more haphazard than I'd
+like, so deferring to another library saves me the trouble of writing
+yet another library.
+
+
+
+On the binding front, I've still got two other sets of Ruby bindings pending completion, TunePimp-Ruby and
+Devil-Ruby
+(although I've been sitting on the latter for like a year now, so who
+knows when I'll get to it :D). Also, FT2-Rubybadly needs the rest of the FreeType2 API implemented.
+
+(He'll be pissed because he was pushing or that forever, and I kept
+saying I wanted Raggle to be all one
+file, simple to install and use). Well, it's getting bigger and bigger,
+and I don't see any other way to keep the code manageable and to do some
+of the things I plan to do other than splitting it up into separate
+files.
+
+Just a minor bugfix release. The initial release of Rubilicious was querying Delicious twice as much as it needed to. This release fixes that.
+Download (signature) and enjoy.
+
+
+
+Oh, speaking of Delicious, check out Extispicious; it's an entertaining spacial representation of your Delicious links. If you don't have an account, try it with my links and Tom's.
+
+
diff --git a/content/posts/2004-10-01-live-from-rubyconf-2004.html b/content/posts/2004-10-01-live-from-rubyconf-2004.html
new file mode 100644
index 0000000..2c0f0c5
--- /dev/null
+++ b/content/posts/2004-10-01-live-from-rubyconf-2004.html
@@ -0,0 +1,16 @@
+---
+date: "2004-10-01T14:29:48Z"
+title: Live from RubyConf 2004
+---
+
+
+This year they've got wireless, so here's some notes so far:
+
+
+
+
talked to Chad Fowler, thanking him for uploading all my bindings to gems.rubyforge.org/. Also talked to him about a Ruby binding to Live Journal
+
Talked to Rich Kilmer about signing Gems. I'm goign to join the development mailing list so we can talk more about that. He also showed me a Windows GUI for RubyGems that he's working on. I said I'd be willing to do a GTK+ version. His presentation was really entertaining.
There's a guy here from Rubyist Magazine. I've been harassing him on IRC all morning.
+
+
diff --git a/content/posts/2004-10-01-more-rubyconf-notes.html b/content/posts/2004-10-01-more-rubyconf-notes.html
new file mode 100644
index 0000000..b193dd4
--- /dev/null
+++ b/content/posts/2004-10-01-more-rubyconf-notes.html
@@ -0,0 +1,9 @@
+---
+date: "2004-10-01T21:17:09Z"
+title: More RubyConf Notes
+---
+
+
+Right now Richard Kilmer is giving a really interesting speech on Alph, which is a platform agnostic Flash/Ruby binding and more. Good stuff.
+
+
diff --git a/content/posts/2004-10-01-okay-so-they-re-kicking-us-out.html b/content/posts/2004-10-01-okay-so-they-re-kicking-us-out.html
new file mode 100644
index 0000000..08bf85e
--- /dev/null
+++ b/content/posts/2004-10-01-okay-so-they-re-kicking-us-out.html
@@ -0,0 +1,9 @@
+---
+date: "2004-10-01T21:49:34Z"
+title: Okay So They're Kicking Us Out
+---
+
+
+Well, not exactly, but our time here is up. I'm going to try and whip up a GTK+ GUI for RubyGems. I've already got a Glade interface whipped up; I'll plug in the rest when I get home.
+
+There were presentations today on Ruby on Rails, a cool web application development framework, YARV, and one on Test::Unit (or test/unit, as he likes to call it now). Up next is the keynote addres with the creator of Objective C. Also, my little GUI for RubyGems is coming along, here's a screenshot:
+
+
+
+
+
+
+
+The green items are installed gems, and the nested entries are for
+packages with more than one version in the RubyGems repository.
+
+
diff --git a/content/posts/2004-10-03-final-day-of-rubyconf.html b/content/posts/2004-10-03-final-day-of-rubyconf.html
new file mode 100644
index 0000000..7ca4e61
--- /dev/null
+++ b/content/posts/2004-10-03-final-day-of-rubyconf.html
@@ -0,0 +1,9 @@
+---
+date: "2004-10-03T13:49:13Z"
+title: Final Day of RubyConf
+---
+
+
+RubyConf is officially over. The final presentations today were on code generation and Copland. At the moment, people are roaming around, chatting, and working on random projects together. I've got a bunch of pictures and a handful of new project ideas, both of which will be posted later this afternoon.
+
+
diff --git a/content/posts/2004-10-04-misc-new-goodies.html b/content/posts/2004-10-04-misc-new-goodies.html
new file mode 100644
index 0000000..d84591e
--- /dev/null
+++ b/content/posts/2004-10-04-misc-new-goodies.html
@@ -0,0 +1,25 @@
+---
+date: "2004-10-04T05:26:04Z"
+title: Misc New Goodies
+---
+
+
+I whipped up some quick Ruby bindings for the Freshmeat XML-RPC API. They're functional, but I still need to write documentation, do a little testing, and package them up. In the mean time, if you want to use them, you can grab them from CVS.
+
+
+
+I've got two pockets full of business cards and scraps of paper with email addresses and project ideas from RubyConf to go through. There are also couple of small Ruby bindings I'll be releasing within the next couple of weeks.
+
+
+
+I've got to get up in a few hours, so here's my parting finale; a couple of new screenshots from my graphical RubyGems package manager:
+
+
+
+
+
+
+
+
+
+
diff --git a/content/posts/2004-10-06-localfark-gemini-bbc-wikipedia-link.html b/content/posts/2004-10-06-localfark-gemini-bbc-wikipedia-link.html
new file mode 100644
index 0000000..4d09ec1
--- /dev/null
+++ b/content/posts/2004-10-06-localfark-gemini-bbc-wikipedia-link.html
@@ -0,0 +1,17 @@
+---
+date: "2004-10-06T08:31:51Z"
+title: LocalFark, Gemini, BBC-Wikipedia Link
+---
+
+
+ This guy wrote a BBC News scraper that links with key phrases on Wikipedia and tracks references in the blogosphere (that term really rubs me the wrong way) via Technorati.
+
+
+
+My RubyGems GUI is coming along. Last night I actually installed a couple of packages with it. I still need to write the uninstall code and fix some dependency resolution issues, then it will be ready for public consumption.
+
+
+
+For those of you using LocalFark, they made a small change to the HTML on the front page which broke the LocalFark scraping. I've fixed it here at home, but I'll need a little time to package up a new release.
+
+
diff --git a/content/posts/2004-10-09-sqlite-db-locking-a-problem.html b/content/posts/2004-10-09-sqlite-db-locking-a-problem.html
new file mode 100644
index 0000000..5c15e44
--- /dev/null
+++ b/content/posts/2004-10-09-sqlite-db-locking-a-problem.html
@@ -0,0 +1,24 @@
+---
+date: "2004-10-09T22:22:38Z"
+title: SQLite DB-Locking a Problem?
+---
+
+
+I've been playing with SQLite for the last couple of days. I'm trying to figure out if it's a suitable replacement for the ad-hoc storage format I've got for Raggle. SQLite has a lot of benefits: it's fast, small (the , and free (public domain). It supports sub-selects, atomic transactions, and there's a complete set of Ruby bindings (which are available as a Gem, but not as a Debian package... go figure). Of course all this goodness doesn't come without caveats. Specifically, here's the one that might be a problem for me:
+
+
+
+
+Locking in SQLite is very course-grained. SQLite locks the entire database. Big database servers (PostgreSQL, Oracle, etc.) generally have finer grained locking, such as locking on a single table or a single row within a table. If you have a massively parallel database application, you should consider using a big database server instead of SQLite.
+
+Raggle isn't a "massively parallel database application", but it can have up to N threads (where N is the number of feeds a user is subscribed to) attempting to write to the feed list simultaneously. I can probably queue database inserts and limit the threads to SELECTing from their respective tables, but that smacks of hackery, which is what I was trying to avoid in the first place. I guess it's still a better solution than what Raggle does right now. Ah well, C'est la vie.
+
+
diff --git a/content/posts/2004-10-10-gemini-in-cvs.html b/content/posts/2004-10-10-gemini-in-cvs.html
new file mode 100644
index 0000000..ef658d5
--- /dev/null
+++ b/content/posts/2004-10-10-gemini-in-cvs.html
@@ -0,0 +1,9 @@
+---
+date: "2004-10-10T13:05:08Z"
+title: Gemini in CVS
+---
+
+
+I just added Gemini, my graphical RubyGems package manager, to CVS. Install should be working correctly now, and remove needs a bit of tweaking.
+
+
diff --git a/content/posts/2004-10-10-response-to-wp-article.html b/content/posts/2004-10-10-response-to-wp-article.html
new file mode 100644
index 0000000..06ff422
--- /dev/null
+++ b/content/posts/2004-10-10-response-to-wp-article.html
@@ -0,0 +1,96 @@
+---
+date: "2004-10-10T12:47:04Z"
+title: Response to WP Article
+---
+
+Here's an email I just sent in response to this Washington Post article.
+
+
+
+
+Hi Rob,
+
+
+
+I just read "Internet Providers Should Find Their Way to IMAP" [1], your
+article on migrating email from POP3 to IMAP. I'm a UNIX system
+administrator and programmer by day, and, as a hobby, I provide email
+and web site hosting for a handful of family members, friends, and small
+businesses. I'd like to share my experience configuring various mail
+servers (also referred to as daemons), and offer some advice for readers
+asking about IMAP or looking for a decent email client, and for ISPs
+touting the high cost of providing IMAP service.
+
+
+
+For readers looking for a decent email client, I recommend Mozilla
+Thunderbird [2]. Thunderbird is free, easy to use, and available for
+several operating systems. Thunderbird is also small (about the size
+of a decent quality MP3 file), and easy to install; my parents were able
+to switch from Outlook to Thunderbird without any assistance from me or
+their ISP. Best of all, Thunderbird is immune to existing email worms
+and viruses, has powerful built-in spam filtering, supports signed and
+encrypted email, and can communicate with secure email servers (POP3s
+and IMAPs). Oh, Mac users might want to try Mail [3], which comes
+pre-installed in recent versions of MacOS and supports many of the
+features I mentioned above.
+
+
+
+As for ISPs, offering IMAP can be a real pain. Three of the most
+popular IMAP daemons are Cyrus IMAPd, Courier IMAPd, and UW-IMAP [4].
+The problem with all of them is essentially the same: each requires
+complicated and haphazard configuration, and none integrate gracefully
+with existing server configurations. For example, the IMAP daemons
+listed above store email messages on the server in MH or Maildir format,
+while most UNIX systems and POP3 daemons store email messages in mbox
+format.
+
+
+
+The solution? An IMAP daemon called Dovecot [5]. Dovecot is a free
+POP3 and IMAP daemon which supports mbox and Maildir mail spool formats,
+supports IMAPs and POP3s, and is incredibly easy to set up. In Debian
+Linux [6], Dovecot basically configures itself. Dovecot also supports
+the most common user authentication schemes out of the box: PAM,
+/etc/passwd, and LDAP. Dovecot works great in Linux and Solaris (the
+two most common UNIX variants used by ISPs), and also in other operating
+systems such as FreeBSD and MacOS.
+
+
+
+I'm available to answer questions from readers about IMAP and IMAP
+daemons. I can be reached via email at pabs@pablotron.org or
+paul@paulduncan.org.
+
+
diff --git a/content/posts/2004-10-19-comment-spam-on-my-other-page.html b/content/posts/2004-10-19-comment-spam-on-my-other-page.html
new file mode 100644
index 0000000..5b1d6f1
--- /dev/null
+++ b/content/posts/2004-10-19-comment-spam-on-my-other-page.html
@@ -0,0 +1,13 @@
+---
+date: "2004-10-19T23:16:42Z"
+title: Comment Spam on my Other Page :(
+---
+
+
+Some dickhead spammed paulduncan.org. The thing is, my backend is custom, so either someone took the time to sift through my source code (unlikely), or there's a spam bot out there that's smart about posting comments.
+
+
+
+Either way, I added a ban list to the page, so the problem is fixed now. Everyone should add the IP address 193.226.188.200 to their ban lists.
+
+
diff --git a/content/posts/2004-10-25-new-raggle-engine-in-cvs.html b/content/posts/2004-10-25-new-raggle-engine-in-cvs.html
new file mode 100644
index 0000000..c637093
--- /dev/null
+++ b/content/posts/2004-10-25-new-raggle-engine-in-cvs.html
@@ -0,0 +1,56 @@
+---
+date: "2004-10-25T02:29:48Z"
+title: New Raggle Engine in CVS
+---
+
+
+What will probably become the new Raggle engine is now in CVS, under the module name squaggle. Here's what I've got so far:
+
HTTP proxy support (via the http_proxy env variable or the config hash; there's a stub for win32 proxy support at the moment)
+
HTTP 1.0 basic authentication support
+
Simple adding and listing feeds (via the Squaggle#feeds and Squaggle#feed_items methods
+
Engine should be Ruby thread safe, but at the moment there's some quirk with the SQLite behavior.
+
Significantly better memory consumption (memory use will ultimately depend on the interface implementation, but the engine is designed so the interface can query as much or as little information about feeds and feed items as it wants)
+
Basic RSS 0.91-0.92 (Userland), 1.0, and 2.0 support (presumably it'll work with Netscape 0.90-0.91 and Userland 0.93-0.94 feeds as well, although I haven't tested with those). There are stubs for RSS 1.0 modules (via the feed_attrs table, for elements I haven't implemented yet, and for Atom support as well. I have more to say about this one below
+
+
+
+I spent a bunch of time in the last month reading through as many RSS specs as could get my hands on. I read through the Atom spec as well. The three biggest problems users have had with Raggle are speed, memory use, and supported feeds. I'm attempting to address the speed issue in a couple of ways: by deferring as much of the internal searching and sorting to SQLite (aside: this also has a side benefit of dramatically simplifying the code, since all the funky array indexing, time conversions, ID hashing, etc goes away and becomes SQL queries :D). The memory use has also been addressed with a caveat (see my note above about the end-user interfaces and memory requirements). Paradoxically, the Ncurses interface may end up using more memory than the web interface, because the Ncurses interface has more speed and caching requirements than the web interface. As for proper feed support, that one is a little bit trickier.
+
+
+
+Supporting RSS properly is actually
+kind of a bitch, because there is no official standard (although there
+are plenty
+of specifications). Even worse, a lot of feeds play fast
+an loose with requirements, so strict RSS parsers (like the undocumented one included with Ruby 1.8, or Chad Fowler'sRuby/RSS module) are nice
+pieces of code, but useless for writing an RSS aggregator, in the same way that strict HTML parsers are useless for web browsers.
+
+
+
+The way I dealt with this problem in previous versions of Raggle was to simply ignore the specs that
+were out there and look for specific elements in feeds. This has worked
+so well I'm going to keep doing it, with a twist. My goal with Squaggle
+is to keep Raggle aware of as much of
+the RSS spectrum as I can, but have the engine (Squaggle) only pay attention to what it absolutely has to. For example, if a feed has mixed RSS 0.92/1.0 elements, Raggle will parse it blindly and save what it can.
+
+
+
+What I've got so far is available in CVS under the module squaggle. Play around with it and let me know what you think.
+
+Why am I posting this here? Because I had a hell of a time finding it. The old raa-xml.xml and raa-rdf.rdf links were broken, the RAA sample code included with Ruby 1.8 wasn't undocumented (and didn't work for me the first time around), and googling for the answer didn't turn up squat. Here's a brief example of how to use the WSDL URI above with the WSDLDriverFactory class included with Ruby 1.8:
+
+
+
+
+require 'soap/wsdlDriver'
+
+WSDL_URI = 'http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/'
+
+# connect to RAA and create SOAP proxy object
+raa = SOAP::WSDLDriverFactory.new(WSDL_URI).create_driver
+
+# get a list of packages
+pkg_list = raa.names
+
+# get a tree of packages grouped by major/minor category
+pkg_tree = raa.tree_by_category
+
+# get information about a specific package (gem)
+info = raa.gem('rubilicious')
+
+
+
+
+
+If you're interested, this post to the RubyGems Developers mailing list has a more detailed summary of the problems I had tracking down this simple bit of information.
+
+Here's a spreadsheet of the elements for each of the "common" (Userland 0.91, 0.92, 2.0, and RSS 1.0) RSS formats out there. This spreadsheet is my personal reference for the squaggle schemas and element lists. At the moment it's an evil Microsoft Excel file (generated with OpenOffice; I'll convert it to something a bit more sane later on. At the moment only the RSS 0.91 and 0.92 (again, Userland) are complete.
+
+
diff --git a/content/posts/2004-11-09-objective-review-of-windows.html b/content/posts/2004-11-09-objective-review-of-windows.html
new file mode 100644
index 0000000..8c651c5
--- /dev/null
+++ b/content/posts/2004-11-09-objective-review-of-windows.html
@@ -0,0 +1,21 @@
+---
+date: "2004-11-09T22:31:42Z"
+title: Objective Review of Windows!
+---
+
+
+I just found this comment in the REXML documentation:
+
+
+
+Internet Explorer is the worst piece of crap to have ever been written,
+with the possible exception of Windows itself. Since IE is unable to
+parse proper XML, we have to provide a hack to generate XML that IE's
+limited abilities can handle. This hack inserts a space before the /> on
+empty tags. Defaults to false
+
+Here's a patch against Enlightenment 0.16.7.1 that adds better transparency support under the CVS version of X.org. It's a little rough, but th patch basically makes windows partially transparent during an opaque move (real transparency, not the faked nonsense built-in to E16), and it adds a "Transparency" menu to the window operations menu (eg, the menu you get in most themes when you right-click on the title bar, or when you ALT+right-click anywhere in the window). You'll need to clear your cached version of menus.cfg in order for the new menu to show up. Here's a screenshot:
+
+
+
+
+
+
+
+For those of you who haven't seen X.org transparency in action yet,
+here's the first screenshot I
+took once I got it set up:
+
+
+
+
+
+
+
+Finally, if you're planning on setting up X.org, but don't know where to start,
+you might try reading my setup notes.
+
+Here's
+an interesting thread on ruby-talk talking about
+the RSS module — which I'm not a big fan of —
+built-in to Ruby 1.8.x. The thread
+nicely illustrates the mess that is RSS, and why consistency (and coherency) in standards
+are extremely important. Interesting read.
+
+I just posted a new version of MB-Ruby, my Ruby bindings for MusicBrainz. The only major change is a patch from Ed Summers, which removes the bitzi-related code so MB-Ruby will compile against newer versions of MusicBrainz.
+
+Two new releases today: Raggle 0.3.2 and Rubilicious 0.1.3. Visit the Raggle page for a list of changes and download information. Here's what's new with Rubilicious:
+
+
+
+
HTTP proxy support (based roughly on a patch from Guillaume Bisch)
+Last night I finished working on #Gah People, a page for the
+IRC channel #gah. Stop by and check it out. If you're a channel regular, create an account and add your own information!
+Hopefully I'm going to get to talk to crypticreign about either collaberating or merging with Planet Gah. Stay tuned.
+
+The blog post hiatus has ended! Here's what's new in the world o' Pablotron. First of all, the main hard drive on
+vault — my file/database/LDAP/email
+server — bit the dust last Wednesday. Fortunately the drive
+just started to fail (instead of dying outright). I had ample
+room to do immediate backups, and I had an unused 160G drive laying
+around. I spent most of Sunday afternoon and all of Monday evening,
+partitioning the new drive and copying stuff back to it. As far as I
+can tell, the only thing I actually lost was the words file for spamprobe. I don't really consider that much of a
+loss, since I
+save all my email (even the cursed spam), so I can easily toss the
+requisite good and bad corpora at spamprobe to get things
+going again. Even though I'm short a 100G drive now, the experience
+overall has been a positive one. Here's some thoughts I had; maybe
+they'll prevent a week of stress for someone else:
+
+
+
+
Regular backups are just something you do. The ad-hoc
+backups I've been doing are better than nothing, but they wouldn't have
+done me any good if the my drive had died outright. Had the
+circumstances been different, I would have lost weeks, possibly even a
+month of email. My solution is (rather, will be, once everything is up
+and running again) an
+NFS-mounted backup
+directory on every machine (obviously not for peope who don't like NFS)). Each machine will be responsible for it's
+own daily and weekly backups, via cron. Depending on how large this data set is,
+I'll be burning DVDs of
+the backup directory contents on a weekly or bi-weekly basis.
+Aside: Richard (richlowe) has been
+advocating revision controlled config files for quite a while (eg.
+cvs -d pabs@cvs:/cvs co etc-files/vault); maybe
+I'll give that for a spin, too.
+
Distribute services across machines. I've got 4 other machines
+sitting around twiddling their thumbs at the moment. Any of them coud
+easily be an authentication, database, email,
+LDAP,
+or CVS server,
+but instead they're all sitting around twiddling their thumbs (to be
+fair, sumo is my IRC
+/PostGres machine, but that hardly
+qualifies as a crippling load).
+
Keep extra hardware laying around. As a true geek you're already
+doing this, of course :). The drive in vault started
+failing at 1:30 in the morning on a Wendesday morning. I was able to
+start making backups and moving stuff around right then. If I
+didn't have the extra hard drive, I would have been
+SOL for several
+platter-scraping hours.
+
Losing your spam filter settings means you get to say cool words
+like "corpora" on your web page.
+
+
+
+On the non-catastrophic hardware failure front, I upgraded
+halcyon to the latest Xorg, then
+promptly downgraded to the latest stable release. Here's the
+approximate order of events:
+
+
+
+
Spent an hour or two configuring, compiling, and installing the
+latest Xorg.
+
Ran X, and found out that the proprietary NVidia driver isn't compatible with the latest
+CVS snapshot of Xorg.
+
Discovered just how painful the composite
+extension is without hardware acceleration by foolishly attempting
+to run X using the nv driver. Hint: Imagine using
+Netscape Navigator 3.0 on your old Commodore 64 with Photoshop doing an
+RLE Gaussian Blur on a 100 meg image in the background.
+
Promptly downgraded to the stable release, cursing both NVidia for their proprietary sillyness,
+and the bastards at freedesktop.org for having the
+audacity to make source code changes that inconvenienced me. I spent
+plenty of time on this step, so go ahead and re-read that last paragraph
+a couple of times.
+
+
+
+Since I spent the majority of a Sunday afternoon recompiling X no less
+than 3 times, I also took the opportunity to try out the latest Enlightenment DR16 from CVS (yes Kim, I'm one of
+the few
+people still using e16). It's got it's own built-in, mostly (semi?)
+working composite manager, so the neither the patch nor the
+xcompmgr hackery I describe in this post are necessary any
+more). The new default theme looks great, too!
+
+
+
+Why use other peoples' broken software when you can write your own?
+Here's the latest on the Pablotron
+coding front:
+
+
+
+
I've converted the
+RSS
+feeds on pablotron.org, paulduncan.org, and raggle.org from steaming loads of
+standards-incompliant crap to pedantically-correct
+RSS 2.0.
+If your RSS
+aggregator couldn't read my pages before, it probably can now (unless
+your aggregator is based on the
+RSS library
+built-in to Ruby 1.8, but I'll get
+to that part of the story in a few minutes...)
+
Lots and lots and lots of updates to the next version of Raggle. Some of the changes are even by me! Thomas Kirchner (redshift) has been
+doing an unbelievable amount of work on the CVS version of
+Raggle. So much so, in fact, that I feel kind of embarassed calling
+this latest version mine at all. So I think when it's ready for
+release, we'll call it kirchneraggle or something more
+suitable ;).
+
This
+patch for Ruby which
+adds wcolor_set support to the built-in Curses interface.
+Ville suggested it eons ago, and that was the last thing stopping me
+from porting Raggle from Ncurses-Ruby.
+
+
A partially working Curses windowing library for Ruby. This isn't in CVS just yet, but don't worry, I've got some new
+stuff for you to play with. Keep reading...
+
+
+
+The big stuff I've been working on lately is core of the future Raggle. Before I begin, here's a
+high-level overview of how the components interact with one another
+(yup, a diagram!):
+
+
+
+
+
+
+
+I've mentioned Squaggle previously,
+but for those of you sleeping in the back of the class (you know who you
+are), here's a brief
+recap. Squaggle is
+the SQLite-Ruby-based
+engine for Raggle. It's cleaner, faster, it
+uses less memory, and it lets me do all sorts of cool things I can't
+really do with the current engine (fancty delicious-style tagging, fast cross-feed
+searching, smart/auto categorization, and more). The version of Squaggle in CVS
+is functional (it even includes a usable WEBrick-based interface.
+
+
+
+So what's this new stuff on ye olde diagram? libptime is a
+C-based
+RFC822 datetime and W3C datetime parsing library. It's
+BSD licensed, so you can download
+version 0.1.0 (signature),
+and use it to your heart's content. The other new library on the
+diagram is libfeed, an
+Expat-based RSS
+(0.9x, 1.0, and
+2.0)/Atom
+feed parser. Why bother writing an RSS
+parser in C? The existing Raggle engine is
+slow, partly from being DOM-based, and partly from being
+written in Ruby. Don't get me wrong, REXML is a
+great XML parser,
+but RSS
+aggregators deal in volume, and I want to be sure the volume isn't
+constrained by parsing. I also noticed there wasn't a nice C-based RSS/Atom
+parsing library. Now there is (well, almost!). If that doesn't convince you, then maybe this will:
+
+The Perl times were so bad I had to run
+them twice to be sure. 60 times faster than Ruby and over 100 times faster than Perl; I'd say that's a pretty good start :).
+
+
+
+Unfortunately, I have to be awake in three hours, so I'll have
+to save the rest of the next-gen Raggle
+description for another day...
+
+The last week or so I've been working on Profanity, a Ruby windowing library for Curses. It's features include relative window geometry, a include an HTML-like markup for styled text, and proper terminal resizes support. I've whipped up a couple of example movies to demonstrate the geometry engine and styled text:
+
profanity-2050228.mpg: An example of window constraints, window gravity, and styled text (notice how styles can be applied to window titles as well as contents).
+
+
+
+By the way, if you're having trouble with these movies, try them in MPlayer (I'm usually an Xine guy myself, but it seems to mangle these too). In the interest of staving of the torch- and pitchfork-wielding mob of people who can't get either movie to play, here are a few still shots from each (click the thumbnails for the full image):
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Finally, here is a simple example from CVS) which demonstrates what Profanity code looks like:
+
+
+
+
+
+require 'profanity'
+
+# create a basic window class
+class HelloWorldWindow < Profanity::Window
+ # contents of this window
+ LINES = [
+ "<center>Welcome to <u>Profanity</u>!</center>",
+ '<center>Press <b>Q</b> or <b>ESC</b> to quit.</center>',
+ ]
+
+ # override Window#draw_contents for our own devious purposes
+ def draw_contents
+ clear
+ puts LINES
+ end
+end
+
+# create the profanity window manager
+wm = Profanity::WindowManager.new
+
+# create geometry, and fix height to 4 lines
+geom = Profanity::Geometry.new(0.5, 0.5, 0.7, 0.0)
+geom.height_absolute = 4
+
+# set gravity to center of the screen
+geom.gravity.x = geom.gravity.y = 0.5
+
+# create our window, show and refresh it
+win = HelloWorldWindow.new(wm, geom, 'Hello World')
+win.show; win.refresh
+
+# run until the user presses q, ctrl-c, or escape
+wm.run { |key| break if [?q, 27, Curses::KEY_CTRL_C].include?(key) }
+
+
+
+
diff --git a/content/posts/2005-03-04-rockbox-on-my-iriver-h120.html b/content/posts/2005-03-04-rockbox-on-my-iriver-h120.html
new file mode 100644
index 0000000..b40f749
--- /dev/null
+++ b/content/posts/2005-03-04-rockbox-on-my-iriver-h120.html
@@ -0,0 +1,45 @@
+---
+date: "2005-03-04T04:10:18Z"
+title: Rockbox on my iRiver H120
+---
+
+
+This was already reported on Engadget
+and Slashdot, but in case you missed
+it; Rockbox has been ported to the iRiver
+H100 series! The bad news: No realtime MP3 playback (yet). The good news: Rockboy,
+a port of the gnuboy gameboy
+emulator! It's still a little rough around the edges, so I've
+started submitting
+patches. The first
+patch — which has already been accepted to CVS — adds a menu
+to Rockboy, and the second patch adds load
+and save state support (via the menu).
+
+
+
+Anyway, Rockbox is great. It boots up
+about 3 times faster than the stock iRiver interface, and it has a lot
+more features, too! If you're an H120 owner who's unfazed by flashing
+firmware and cross compiling, then I highly recommend you give Rockbox a try (once the MP3 playback is ironed out, that
+is). As my parting gift, here's Bionic Commando running on my H120 (and
+a couple shots of my menu system as well):
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/posts/2005-03-11-new-versions-of-imlib2-ruby-and-rubilicious.html b/content/posts/2005-03-11-new-versions-of-imlib2-ruby-and-rubilicious.html
new file mode 100644
index 0000000..cd6d4b0
--- /dev/null
+++ b/content/posts/2005-03-11-new-versions-of-imlib2-ruby-and-rubilicious.html
@@ -0,0 +1,16 @@
+---
+date: "2005-03-11T03:45:06Z"
+title: New Versions of Imlib2-Ruby and Rubilicious
+---
+
+
+I just released new versions of Imlib2-Ruby and Rubilicious. I'm lazy and I don't feel like re-typing (or even copying... did I mention lazy?) the list of changes, so if you're interested you can read the ruby-talk posts here and here (respectively). And here's the download information:
+
+
diff --git a/content/posts/2005-03-11-three-language-showdown.html b/content/posts/2005-03-11-three-language-showdown.html
new file mode 100644
index 0000000..f374d64
--- /dev/null
+++ b/content/posts/2005-03-11-three-language-showdown.html
@@ -0,0 +1,251 @@
+---
+date: "2005-03-11T04:13:57Z"
+title: Three Language Showdown
+---
+
+
+Earlier this evening I wrote an example of how to read a list of field values to delete from an input file. That's not particularly interesting. The fact that I wrote it in three different languages is, though. So, without any further ado, the world's simplest database application, written in Ruby, Perl, and PHP, for your viewing (comparing, contrasting, commenting, etc) pleasure:
+
+
+
+Ruby:
+
+
+
+
#!/usr/bin/env ruby
+
+ # load the mysql library
+ require 'mysql'
+
+ # all our options go here
+ opt = {
+ :host => 'localhost', # server to connect to (usually localhost)
+ :user => 'USER', # replace USER with username
+ :pass => 'PASSWORD', # replace PASSWORD with password
+ :db => 'DATABASE', # replace DATABASE with database name
+ :tbl => 'TABLE', # replace TABLE with table name
+ :fld => 'FIELD', # name of field to match against
+ }
+
+ # check first command-line argument for the filename
+ unless path = ARGV.shift
+ $stderr.puts "ERROR: missing filename"
+ exit -1
+ end
+
+ # check to make sure the specified file exists and is readable
+ unless File.exists?(path) && File.readable?(path)
+ $stderr.puts "ERROR: missing file or unreadable file: #{path}"
+ exit -1
+ end
+
+ # read a list of IDs from the file, excluding blank lines
+ ids = File.readlines(path).map { |id| id.strip }.grep(/[^\s]/)
+
+ # connect to server, select database
+ db = Mysql::connect(opt[:host], opt[:user], opt[:pass])
+ db.select_db(opt[:db])
+
+ # build a big friggin list of ids for the query below
+ ids_str = ids.map { |id| "'#{id.gsub(/'/, "''")}'" }.join(',')
+
+ # build query
+ query = "DELETE FROM #{opt[:tbl]} WHERE #{opt[:fld]} IN (#{id_str})"
+
+ # print the query out on the screen
+ puts query
+
+ # check to make sure this really what we want to do
+ puts "Execute this query? (y/N)"
+ if gets =~ /^y/
+ # user entered "y" or "Y", so execute the query
+ db.query(query)
+ puts "Done."
+ else
+ puts "Cancelled."
+ end
+
+
+
+Perl:
+
+
+
+
#!/usr/bin/perl
+
+ # turn on warnings and strict interpretation
+ use warnings;
+ use strict;
+
+ # load DBI module (see [2] below)
+ use DBI;
+
+ my %opt = {
+ 'host' => 'localhost', # server to connect to (in our case, localhost)
+ 'user' => 'USER', # replace USER with username
+ 'pass' => 'PASSWORD', # replace PASSWORD with password
+ 'db' => 'DATABASE', # replace DATABASE with database
+ 'tbl' => 'TABLE', # replace TABLE with table name
+ 'fld' => 'FIELD', # replace FIELD with name of field
+ };
+
+ # declare vars
+ my ($path, $fh, @ids, $id_str, $dsn, $db, $query, $response, $a);
+
+ # get filename
+ $path = shift @ARGV;
+
+ # check path to make sure it's legit
+ die "ERROR: Missing filename\n" unless $path;
+ die "Missing or unreadable file: '$path'\n" unless (-e $path && -r $path);
+
+ # read ids from file, stripping out blank lines
+ open $fh, $path or die "Couldn't open file: $!\n";
+ @ids = grep { /[^\s]/ } <$fh>;
+ close $fh;
+ chomp @ids;
+
+ # build DSN string, connect to database
+ $dsn = "dbi:mysql:database=" . $opt{'db'} . ";host=" . $opt{'host'};
+ $db = DBI->connect($dsn, $opt{'user'}, $opt{'pass'});
+
+ # build id list string
+ $id_str = join(',', map { $a = $_; $a =~ s/'/''/g; "'$a'" } @ids);
+
+ # build query string
+ $query = "DELETE FROM " . $opt{'tbl'} .
+ " WHERE " . $opt{'fld'} . " IN ($id_str)";
+
+ # print query out on screen
+ print "$query\n";
+
+ # check to make sure user really wants to execute query
+ print "Execute this query? (y/N)";
+ $response = <STDIN>;
+
+ # check response
+ if ($response =~ /^y/i) {
+ # user said 'y' or 'Y', execute query
+ $db->do($query);
+ print "Done.\n";
+ } else {
+ print "Cancelled...\n";
+ }
+
+
+
+PHP:
+
+
+
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
+ <?php
+ require_once 'DB.php';
+
+ echo "<?xml version='1.0' encoding='iso-8859-1'?>\n";
+
+ # options
+ $opt = array(
+ 'host' => 'localhost', # database server (in our case, localhost)
+ 'user' => 'USERNAME', # replace USERNAME with user
+ 'pass' => 'PASSWORD', # replace PASSWORD with password
+ 'db' => 'DATABASE', # replace DATABASE with database
+ 'tbl' => 'TABLE', # replace TABLE with table name
+ 'fld' => 'FIELD', # replace FIELD with match field
+ );
+
+ # set page title
+ $page_title = 'PHP MySQL Sample Code';
+ ?>
+ <html lang='en'>
+ <head>
+ <title><?php echo $page_title; ?></title>
+ </head>
+
+ <body>
+ <form method='post' action='<?php echo $PHP_SELF; ?>'
+ enctype='multipart/form-data'>
+ <!-- PHP needs this nonsense :/ -->
+ <input type='hidden' name='MAX_FILE_SIZE' value='30000' />
+ File: <input type='file' name='csvfile' />
+ <input type='submit' value='Delete IDs from file' />
+ </form>
+
+ <?php
+ # check to see if the file was uploaded
+ if ($file = $_FILES['csvfile']) {
+ echo "<hr />\nResults:<br />";
+ handle_file($file);
+ }
+ ?>
+ </body>
+ </html>
+ <?php
+
+ #####################
+ # UTILITY FUNCTIONS #
+ #####################
+
+ #
+ # handle file upload
+ #
+ function handle_file($file) {
+ global $opt;
+
+ # check to see if there was an error:
+ if ($file['error'])
+ die(__LINE__ . ": Error handling file upload: {$file['error']}");
+
+ # no error, go ahead and read the list of IDs
+ $ids = array_map('trim', file($file['tmp_name']));
+
+ # build ID string
+ $id_str = join(',', array_map('quote_str_cb', $ids));
+
+ # build DSN string
+ $dsn = "mysql://{$opt['user']}:{$opt['pass']}@{$opt['host']}/{$opt['db']}";
+
+ # connect to database
+ $db = DB::connect($dsn);
+ if (DB::isError($db))
+ die(__LINE__ . ": Couldn't connect to database: " . $db->getMessage());
+
+ # build/print query string
+ $query = "DELETE FROM {$opt['tbl']} WHERE {$opt['fld']} IN ($id_str)";
+ echo "$query";
+
+ # execute query
+ $err = $db->query($query);
+ if (DB::isError($err))
+ die(__LINE__ . ": Couldn't query database: " . $err->getMessage());
+ }
+
+ #
+ # escape quotes in string, and return quoted version of string
+ #
+ function quote_str_cb($str) {
+ return "'" . str_replace("'", "''", $str) . "'";
+ }
+
+ ?>
+
+
+
+Now before the pedant geek armada nails me to the wall: Yes, I know the
+new way of calling DBI->connect includes passing {
+AutoCommit => 1 } as a fourth parameter, and yes, I know that I should be
+passing the DSN an
+array to DB::connect, and yes, I know that Ruby has DBI too! And finally, yes, I
+know a dependency on MySQL is totally
+2001, but I wrote these examples to address a specific problem. The
+original email includes all sorts of extra stuff, including explanations
+of differences between MySQL and Postgres, and the nuances of their
+respective regex engines. So bugger off :D.
+
+I just posted Raggle 0.4.0. The post
+on ruby-talk is here,
+and some screenshots are here. A
+full list of changes is in both the ruby-talk post, and
+the announcement on the Raggle page.
+
+I got another PDA. A friend of mine from Wednesday night poker sells PDAs for Microsoft, and he had a bunch of older demo models just laying around, so he perma-loaned me an HP iPaq 5455. On Friday I went out and picked up a 1 gig SD card, then spent the rest of the weekend setting things up. I've scoured FreewarePPC and installed just about everything I need — emulators (NES, SNES, and Gameboy) and their associated ROMs, an MP3 player, and (of course) and eBook reader. Anyway, I've been out of the PocketPC game for over a year, so I'm open to suggestions. Are there any killer apps I should be using?
+
+
diff --git a/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html b/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html
new file mode 100644
index 0000000..ab24c37
--- /dev/null
+++ b/content/posts/2005-05-12-raggle-article-rubygems-signing-gah-people-xml-rpc-and-more.html
@@ -0,0 +1,230 @@
+---
+date: "2005-05-12T04:42:59Z"
+title: Raggle Article, RubyGems Signing, Gah People XML-RPC, and More...
+---
+
+
+Linux Format, Alonzo's Linux magazine of choice, has a
+brief article about Raggle in issue 65
+(April 2005). They seemed to like it. Guess I'd better fix the UTF-8
+munging bug before anyone notices (actually, it's fixed in CVS). I scanned the
+review — if you're intereste, you can check it out here.
+
+
+
+Side projects, side projects. A couple weeks ago, I submitted a patch
+which adds OpenSSL-based package signing for
+RubyGems. A patch against RubyGems 0.8.10 is available here (signature). I also
+wrote up some fairly detailed documentation. It's included in the
+patch, and also here.
+
+
+
+Overall I like the OpenSSL support in
+Ruby, although I've managed to
+uncover a couple of gremlins along the way, most notably missing methods
+in the PKCS12 and ASN1 modules. The single
+biggest problem though, is the lack of documentation; it's even more
+sparse than the OpenSSL documentation.
+I've done enough crypto stuff that I was able to slog through it, but
+this is just ridiculous. It's 2005. RDoc exists for a reason —
+use it. I'll resist the urge to comment on the lack of decent RDoc documentation, because I
+think pragdave has earned a few gold
+stars. You know, for that whole Pickaxe thing.
+
+
+
+The #gah people page now has an
+XML-RPC
+interface, which allows you to (say), quickly build a blogroll of
+IRC people, find people
+in your state, or whatever other pathological idea you can come up with.
+Full API
+documentation (including the XML-RPC
+endpoint) is available here.
+
+
+
+Speaking of web pages, I really really like the final designs
+on the Ruby-Lang 2005
+Redesign Blog. The current ruby-lang.org is kind of
+an eye-sore, so the sooner they replace it, the better.
+
+
+
+On the nifty software front, I've been playing with OpenVPN and Monotone. The former is
+absolutely incredible; it's easy as piss to configure, completely
+customizable, fast, uses OpenSSL-based
+X509 certs for identification (both client and server), and as Windows
+support. Did I mention it's easy to configure, too? I've been using an
+OpenVPN to tunnel from my laptop to my file server for the last couple
+of weeks so I can mount my NFS exports read-write over wireless.
+
+
+
+As for Monotone, it looks
+really promising, but it's unbelievably slow. Actually, "ridiculously,
+horribly, unbearably slow" might be more apt. I know they're working on
+speed, so in a couple of months, I'm sure things will be bearable. Once
+that happens, I may seriously consider switching over...
+
+
+
+Oh yeah, Raggle. Work continues on the
+0.4 branch. the next stable release (0.4.1) will have the Unicode
+munging behaving properly (hopefully), and a configurable bookmark
+system. If I get harassed enough, that might be within the next few
+weeks :).
+
+
+
+As for the development version of Raggle... Well, that's where all the fun
+is. Here's a high-level diagram of the various components:
+
+
+
+
+
+
+
Next-Gen Raggle
+
+
Engine (Squaggle)
+
Interface
+
+
+
Synapse (libsynapse)
+
SQLite3-Ruby
+
Console
+
Web
+
+
+
libfeed
+
Curl
+
SQLite
+
SQLite
+
Profanity
+
WEBrick
+
+
+
libptime
+
expat
+
+
+
+
Curses
+
+
+
+
+ Legend
+
+
Written in Ruby
+
Written in C
+
External Dependency
+
+
+
+
+
+
+What's new? Profanity has been
+added to the diagram, and Squaggle has a new
+dependency, Synapse. Synapse
+is a C-level library that wraps Curl
+and libfeed. This
+arrangement has a whole lot of advantages; here's a handful of them:
+
+
+
+
Speed. C is faster than Ruby,
+and the Synapse
+API actually
+passes commands to a child process, so we also avoid the overhead of Ruby's green threads (and threads in
+general).
+
Smaller memory footprint.
+
All sorts of great new Curl-related
+HTTP features:
+Digest authentication, GSS-Negotiate authentication (eg, Kerberos), NTLM
+authentication (Microsoft), SOCKS5 proxy support, tunnelled proxy
+support, SSL peer-verification control, cookie support (including Mozilla cookie jars), and more.
+
A complete language-agnostic RSS/Atom parsing, fetching, and saving
+interface. Write your own interface in whatever language you want!
+
+
+
+I could keep going, but I just saw the time. I've got to take a look at
+picard's busted hard drive (yeah, another one), and check
+on kylie's fancy new off-site backups (thanks, Alonzo!). Be sure to check out Sean's article, "How I Implemented
+Tags".
+
+
+
diff --git a/content/posts/2005-05-12-the-coveted-pablotron-gold-star.html b/content/posts/2005-05-12-the-coveted-pablotron-gold-star.html
new file mode 100644
index 0000000..9ee22ab
--- /dev/null
+++ b/content/posts/2005-05-12-the-coveted-pablotron-gold-star.html
@@ -0,0 +1,14 @@
+---
+date: "2005-05-12T19:59:32Z"
+title: The Coveted Pablotron Gold Star
+---
+
+
+Ubuntu Linux gets the coveted Pablotron gold star for the week. It's Debian-based, really easy to install, and includes the latest and greatest GNOME.
+Ubuntu also has fantastic documentation, and it detected most of the hardware on my new laptop correctly (Knoppix didn't).
+
+
+
+If Gentoo and Ubuntu are the future of Linux, then I'd say we're in pretty good hands...
+
+
diff --git a/content/posts/2005-05-28-bugs-you-got-em-i-fix-em.html b/content/posts/2005-05-28-bugs-you-got-em-i-fix-em.html
new file mode 100644
index 0000000..c2be5b9
--- /dev/null
+++ b/content/posts/2005-05-28-bugs-you-got-em-i-fix-em.html
@@ -0,0 +1,9 @@
+---
+date: "2005-05-28T19:37:08Z"
+title: 'Bugs: You Got ''Em, I Fix ''Em'
+---
+
+
+I've tried to keep track of bug reports and feature requests via email, and it's just not working. So I gave up and set up a bug tracking page at http://bugs.pablotron.org/. Thomas (redshift) and I went through a handful of them, including Bugzilla (too much of a hassle to configure, pain in the ass to use), Flyspray (klunky user interface), Mantis (no easy anonymous view), CVSTrac (only one project per repository? gee, that's useful), and finally settled on PHPBugTracker, which does what I need and annoys me less than the rest. I also read this semi-dated article on bug trackers; I didn't pay much attention to the rank he gave each tracker, but it is a nice list of bug trackers out there.
+
+
diff --git a/content/posts/2005-05-28-the-hizouse.html b/content/posts/2005-05-28-the-hizouse.html
new file mode 100644
index 0000000..c3888c6
--- /dev/null
+++ b/content/posts/2005-05-28-the-hizouse.html
@@ -0,0 +1,18 @@
+---
+date: "2005-05-28T04:14:26Z"
+title: The Hizouse
+---
+
+
+It's been years since I took a picture of my home setup. so here's an update.
+This is my server setup at home (click for a larger image):
+
+
+
+
+
+
+
+Last week we had a power outage and the UPS freaked out, so I had to shut everything down to reset it. I took the opportunity to install my 4-port NIC in xor, move the DSL router into the rack, upgrade xor to a 2.6 kernel, and take this nifty picture. Upgrades!
+
+
diff --git a/content/posts/2005-07-14-power-outages-context-free-span-and-rubygems.html b/content/posts/2005-07-14-power-outages-context-free-span-and-rubygems.html
new file mode 100644
index 0000000..f89f04c
--- /dev/null
+++ b/content/posts/2005-07-14-power-outages-context-free-span-and-rubygems.html
@@ -0,0 +1,35 @@
+---
+date: "2005-07-14T02:20:46Z"
+title: Power Outages, Context Free, Span, and RubyGems
+---
+
+
+I finally got a decent UPS for the server rack, so I should be able to weather these wacky northern Virginia summer showers (no pun intended). I also set up a secondary DNS and a secondary MX for virtually everyone hosted on kylie. I think Tom (giblet) is going to do the same, and Richard (richlowe) was scouting around for more people willing to play the DNS/MX swap game, so eventually we might have triple or even quadruple redundancy on those services. Coupled with the nightly off-site backups and the hopefully pending weekly hard backups, I'm starting to feel reasonably comfortable about any unexpected disasters. At home, I set up redundant internal DNS and mail handling, and I'm looking at secondary DHCP as well, although it requires upgrading to version 3 of the ISC DHCPd.
+
+
+
+I stumbled across the horribly addictive program Context Free, via Tom's linkblog. Context Free is, in the authors' terse words, a small language for "design grammars", or sets of non-deterministic rules to produce images. I got hooked and spent several hours designing my own pictures. Here are a couple of the results:
+
+
+
+
+
+
+
+
+
+All of the images I've created so far and their respective grammar files are available here. Speaking of graphics, I've been playing Span, Thomas's (redshift) shameless multi-player Connect 4 clone, quite a bit. It's a console-only game, and it's written in Ruby, so I shamelessly tacked on SDL-based graphics, sound effects, and music, creating the following monstrosity:
+
+
+
+
+
+
+
+You can download the tarball here. At the moment it's a total hack; Ncurses calls haphazardly replaced by SDL calls, music and sound effects grafted on, cats and dogs sleeping together, apocalypse, that sort of thing. It also won't work with the version of Ruby/SDL in Debian; you'll have to download the latest version (0.9.5) and slog through the busted Ruby/SDL extconf.rb in order to get things up and running.
+
+
+
+Finally, security pedants rejoice! My RubyGems package signing patch (described here) has been integrated into RubyGems, and should be in the next stable release (version 0.8.11, for those of you counting). We still need some niceties like CRL and OCSP support, and some sort of trust hierarchy, but at least we can get started signing gems. Rubyists, fire up your copy of TinyCA, have a beer, and take a look at my overly verbose Gem Signing README.
+
+I've been thinking about building a Gumstix or Soekris-based embedded system. I don't have a particular reason; I'm not even sure what I want to build yet. Anyway, here's some of the neat stuff I've stumbled across:
+
+
+
+
CrystalFontz LCDs: Actually these guys aren't really for embedded stuff per-se; they're useful for desktop PCs
+
Dirt cheap old-school LCD: THere isn't much in the way of documentation on this guy, but I did find this post which explains (roughly) how to interface with it.
+If that wasn't geeky enough, I've also been aggregating all the Star Trek information I can found online into a SQLite database. It's far from complete, but at the moment I've got a list of episodes from every Star Trek show ever (including the oft maligned "Star Trek: The Animated Series"), a fairly expansive list of species and planets encountered or referenced in the Star Trek universe, and a list of Trek particles defined and organized by category.
+
+Last night I learned how to solder. Today I'm off to buy a soldering iron and some parts. Next week, who knows?
+
+
diff --git a/content/posts/2005-08-01-tommy-boy-discovers-rubygems-hurts-toe-again.html b/content/posts/2005-08-01-tommy-boy-discovers-rubygems-hurts-toe-again.html
new file mode 100644
index 0000000..ce155b6
--- /dev/null
+++ b/content/posts/2005-08-01-tommy-boy-discovers-rubygems-hurts-toe-again.html
@@ -0,0 +1,19 @@
+---
+date: "2005-08-01T16:45:22Z"
+title: Tommy Boy Discovers RubyGems, Hurts Toe Again!
+---
+
+
+From IRC, just a few minutes ago:
+
+
16:36 <giblet> godammit
+16:36 <giblet> there I was happily reading the gems book
+16:36 <giblet> http://docs.rubygems.org/read/chapter/21
+16:36 <giblet> and you bloody turn up
+16:36 <giblet> wanker
+16:36 * giblet skips that page
+16:37 <pabs> i do?
+16:37 <giblet> yep, second to last chapter
+16:39 <pabs> READ EM AND WEEP, SUCKER
+16:39 <pabs> :)
+
diff --git a/content/posts/2005-08-06-curse-you-foul-demons-of-the-underworld-fcc.html b/content/posts/2005-08-06-curse-you-foul-demons-of-the-underworld-fcc.html
new file mode 100644
index 0000000..81de0ae
--- /dev/null
+++ b/content/posts/2005-08-06-curse-you-foul-demons-of-the-underworld-fcc.html
@@ -0,0 +1,13 @@
+---
+date: "2005-08-06T16:24:47Z"
+title: Curse You, Foul Demons of the Underworld (FCC)
+---
+
+
+This sucks. I really doubt Verizon will provide a service remotely comparable to Speakeasy, and if they do I'm sure they'll charge a bazillion dollars a month for it. Especially since they don't have any competition now. Cripes.
+
+
+
+Thank you Bush administration for sucking up to large corporations and sticking it to the little guys.
+
+Looks like the Gumstix stuff just got a whole lot more interesting. They're releasing a series of expansion boards called the Netstix, which do pretty much what you'd expect; they're Ethernet 10/100 interfaces, combined with other useful things like another NIC (hello Gumstix firewall), Compact Flash, and MMC (eg SD without the DRM crud).
+
+Just posted a new version of Raggle. Among the usual bug fixes, I managed to mix in RSS enclosure support and preliminary Atom support. The enclosure support won't win any usability awards (it's just a hook to an external command), but it's enough to roll your own simple podcast or bittorrent/RSS support.
+
+
diff --git a/content/posts/2005-08-11-how-to-make-delicious-not-suck.html b/content/posts/2005-08-11-how-to-make-delicious-not-suck.html
new file mode 100644
index 0000000..0ca168f
--- /dev/null
+++ b/content/posts/2005-08-11-how-to-make-delicious-not-suck.html
@@ -0,0 +1,34 @@
+---
+date: "2005-08-11T02:16:49Z"
+title: How to Make Delicious Not Suck
+---
+
+
+A couple of days ago Richard (richlowe) discovered Scuttle. Scuttle is an open clone of Delicious. It has private posts, looks fairly decent, doesn't have a gadzillion dependencies (unlike Rubric), and works reasonably well.
+
+
+
+I went ahead and set it up, and made a few changes. And so tasty.pablotron.org was born. Scuttle has an option to import all your old Delicious URLs, but I didn't want to give up on Delicious just yet — I just wanted something that wasn't ass-slow. So I patched Scuttle so users can optionally cross-post to Delicious. I used some of that Pablotron magic, so Delicious-chaining doesn't slow down posting links at all, which makes it much more pleasant than waiting up to a minute for a post to Delicious. I also added an option for users to switch between comma- and space-delimiting for tags when posting new links (Scuttle uses the former and Delicious uses the latter), and fixed the after-post behavior to mirror Delicious (specifically, close the pop-up after a post, and switch the browser back to the original URI after a non-pop-up post).
+
+
+
+Anyway, You can see all the changes described above by creating an account on Tasty. Here's all the changes I've made against Scuttle 0.4.1, as individual patches:
+
+I'm sending all of these patches upstream as soon as I finish this post, so hopefully we'll see these in the next release.
+
+
+
+Update: I inadvertently broke comma-delimiting. The following
+patch fixes it (you'll need to apply this one after all of the others scuttle-0.4.1-fix_comma_delim.diff.
+
+One of my favorite examples: Some years ago, I worked on a series of projects at a company where the development teams were more or less divided between those that used Sun workstations and those that used Apollos. There was an ongoing discussion of the merits of both. The main argument of the Apollo developers was that you got roughly twice the computing power for a given price with Apollo. Sun was "overpriced and underpowered".
+
+
+
+But Sun slowly won out. What would happen on any project is that you'd be debugging your stuff, and inevitably you'd be led into a system library routine that didn't behave like you expected. With Apollo, when you called Customer Support, the answer was usually "That's proprietary. We can't tell you." Brick wall. You're on your own, and all you can do is start guessing.
+
+
+
+When this happened with Sun, we usually didn't even contact Sun's CS. We asked on one or more of the Sun newsgroups and mailing lists. Within a few hours, we'd usually have an answer. More often than not, the answer came from a Sun engineer. It often came with a chunk of the source, with an offer to send more source if we needed.
+
+
+
+As a result, the Sun developers had working, sellable products much sooner than the Apollo developers. Having a product that works is always better than having a product that doesn't work, even if the price is a bit higher. The company slowly scaled down its use of Apollos. This may have had something to do with why Apollo no longer exists (though www.apollo.com still exists - try it ;-).
+
+
+
+Since then, of course, Sun has slowly taken its systems more and more proprietary. But that's OK, because linux has since arisen to fill Sun's old niche. Same argument: With Sun, you inevitably hit the "We can't tell you - it's proprietary" brick wall. With linux, you have all the source you want, plus a world-wide flock of linux hackers who love to show off their expertise by answering your dumb questions.
+
+
+
+The fun thing in this case is that linux and other open-source software now comes with a license that pretty much prevents anyone from ever closing off access. So it's a lot safer bet for a platform than anything proprietary, no matter how open a company may appear right now.
+
+
+
+Of course, the *BSD systems are about as good in this respect. One might argue that linux is now sufficiently successful that it could use a bit more competition. Maybe we should be pushing the BSDs a bit more loudly. Those people who don't like choice might object, but we'd probably all be better off for it.
+
+
+
+And I wonder how OS X fits into all this? I have a Mac Powerbook, but I've found it much more difficult and time consuming to find reliable low-level information about its innards than with linux. It's only partly for proprietary reasons. Usually it's the "Don't worry your little head about it; it Just Works" attitude. This is very frustrating when you have decades of C hacking behind you, and you're trying to get some low-level code to just work the way you want it to. Instead of a brick wall, you're beating your head against a very soft, fuzzy wall.
+
+
+
+In any case, I'd think that a reasonable software rule now would be: Don't build your product on any platform unless you have all the source. This is now feasible; you get full source with linux and the *BSD systems. So why use a platform that doesn't provide full source?
+
+
+
+And if you don't understand why you need full source, you aren't competent to make business decisions about software development. Hand the decision over to someone who understands. Hire them if you need to. Otherwise, you're risking your business on a foundation of quicksand.
+
+
+
diff --git a/content/posts/2005-08-14-new-version-o-raggle.html b/content/posts/2005-08-14-new-version-o-raggle.html
new file mode 100644
index 0000000..3b77188
--- /dev/null
+++ b/content/posts/2005-08-14-new-version-o-raggle.html
@@ -0,0 +1,9 @@
+---
+date: "2005-08-14T23:46:06Z"
+title: New Version o' Raggle
+---
+
+
+It's a slow Sunday evening. I know, I think I'll find decent news site about embedded stuff. You know,
+Soekris boards, Gumstix-based systems, that sort of thing:
+
+
+
+
+
+
+
+Drat.
+
+
diff --git a/content/posts/2005-08-19-sometimes-that-s-how-i-feel-about-debugging-too.html b/content/posts/2005-08-19-sometimes-that-s-how-i-feel-about-debugging-too.html
new file mode 100644
index 0000000..577d6e1
--- /dev/null
+++ b/content/posts/2005-08-19-sometimes-that-s-how-i-feel-about-debugging-too.html
@@ -0,0 +1,28 @@
+---
+date: "2005-08-19T05:34:10Z"
+title: Sometimes That's How I Feel About Debugging Too...
+---
+
+
+I stumbled across this image while looking for some microcontroller documentation:
+
+Hmm, something about that picture looks a little odd. Let's take a closer look:
+
+
+
+
+
+
+
+Yeah, sometimes that's how I feel about debugging too.
+
+
diff --git a/content/posts/2005-08-27-leo-s-back.html b/content/posts/2005-08-27-leo-s-back.html
new file mode 100644
index 0000000..1464780
--- /dev/null
+++ b/content/posts/2005-08-27-leo-s-back.html
@@ -0,0 +1,9 @@
+---
+date: "2005-08-27T17:01:19Z"
+title: Leo's Back
+---
+
+
+Leo Laporte"The Screen Savers" has a new podcast titled "This Week in Tech" (or TWiT). I'm not usually a big fan of podcasts, but I listened to this one and really enjoyed it. All their episodes are available as torrents; check it out if you get a chance.
+
+
diff --git a/content/posts/2005-08-27-one-monitor-to-bind-them.html b/content/posts/2005-08-27-one-monitor-to-bind-them.html
new file mode 100644
index 0000000..02dff21
--- /dev/null
+++ b/content/posts/2005-08-27-one-monitor-to-bind-them.html
@@ -0,0 +1,13 @@
+---
+date: "2005-08-27T16:41:21Z"
+title: One Monitor to Bind Them!
+---
+
+
+I stumbled across this eBay auction on Engadget. The computer isn't particularly interesting, but check out the monitor (click for the full-sized image):
+
+
+
+
+
+
diff --git a/content/posts/2005-10-12-generating-pdfs-with-ruby.html b/content/posts/2005-10-12-generating-pdfs-with-ruby.html
new file mode 100644
index 0000000..691512a
--- /dev/null
+++ b/content/posts/2005-10-12-generating-pdfs-with-ruby.html
@@ -0,0 +1,13 @@
+---
+date: "2005-10-12T04:41:45Z"
+title: Generating PDFs with Ruby
+---
+
+
+I'm wondering how long it'll take before someone writes a PDF target for RI, or, even better, RDoc. In the mean time, I have something that'll give me an excuse to use more Ruby at work.
+
+So what's the deal with the Xara demo, anyway? Slashdot made a big stink about their demo, how it would revolutionize vector drawing programs for Linux, and all that jazz. I've been using Inkscape quite a bit lately, so I was anxious to see what the Xara demo had to offer. As far as I can tell, the demo is sourceforge-ware — it looks like about 2 hours of work in Glade, plus a page that promises all sorts of cool features, eventually.
+
+
+
+I ported the awesome Delicious plugin for Firefox to work with Tasty. You can download the XPI here (most features seem to work okay, but my port consisted basically of a massive 's/del.icio.us/tasty.pablotron.org/ig', so caveat emptor).
+
+
diff --git a/content/posts/2006-01-12-charming-ruby-compiler-not-so-charming.html b/content/posts/2006-01-12-charming-ruby-compiler-not-so-charming.html
new file mode 100644
index 0000000..f1f3f7a
--- /dev/null
+++ b/content/posts/2006-01-12-charming-ruby-compiler-not-so-charming.html
@@ -0,0 +1,37 @@
+---
+date: "2006-01-12T21:10:33Z"
+title: Charming Ruby Compiler, Not So Charming
+---
+
+
Earlier this month on the ruby-core mailing list there was a post
+about the Charming Ruby Compiler (CRC), which looks promising.
+It's a preliminary Ruby to C-- compiler. Unfortunately, it's
+also got GNOME-style dependencies (i.e. from hell). You can grab a
+pre-compiled binary for CRC, but the C-- compiler itself depends
+on both Objective CAML and Lua.
+
+
For some reason, I just don't feel like installing the runtime and
+development libraries for three separate programming languages just to
+try out a preliminary compiler for one programming language.
+
+
The thread wasn't a total loss, however. I learned about both Neko
+and LLVM, and they both look interesting. Neko is a lightweight
+VM for dynamic languages
+(like Ruby and Python) written in ANSI C. Instead of targeting
+assembly, and compiling that to bytecode, Neko provides it's own
+low-level programming language with primitives for things like strings,
+numbers, and objects. Seems like Neko has a lower barrier to entry
+than Parrot, although the lack of an encoding attribute for string
+elements kind of bothers me -- maybe that's something higher-level
+languages are supposed to take care of?
+
+
On another note, I've generated the
+HTML for
+this post using BlueCloth, a Markdown processor for Ruby.
+If you can get over the funky bracket syntax for links, Markdown
+does seem to make writing posts a whole lot easier. All I need now is a
+decent post-processor for acronyms and I'd be set. Maybe I'll come up
+with something for my new page backend, if it ever gets completed.
I've submitted a couple of patches to Ruby in the last month or so.
+The first patch, which has been accepted for Ruby 1.9, and
+possibly 1.8, adds several missing
+HTTP
+headers to Ruby
+CGI, including
+the ever-important If-Modified-Since and If-None-Match headers.
+
+
The second patch, which (as of today) is still floating on
+ruby-core, improves the
+HTML output of
+RDoc by adding proper encoding and language declarations, closing
+dangling <img> and <br/> elements, and fixing a handful of other
+annoyances.
+
+
Without any further ado, each of the patches and their respective
+descriptions from ruby-core:
Partnered with AOL, and agreed to give AOL
+advertising and content some sort of preferential treatment
+
Released Google Video, a proprietary,
+DRM-encumbered
+video store and client
+
+
+
Even if we ignore the first two as silliness and attribute the third as
+a hedge bet against Microsoft, that still leaves us with a company
+— who's by-line, incidentally, is "do no evil" — releasing yet another bloody
+DRM-crippled media
+player. Which means more vendor lock-in, and more media in a format
+which can't be easily — or, in some places, legally —
+transferred between
+programs.
+
+
Then again, maybe they're just having an off month. I guess we'll just
+have to wait and see.
+
+
diff --git a/content/posts/2006-01-14-sweep-gruff-under-the-rug.html b/content/posts/2006-01-14-sweep-gruff-under-the-rug.html
new file mode 100644
index 0000000..16b9bb2
--- /dev/null
+++ b/content/posts/2006-01-14-sweep-gruff-under-the-rug.html
@@ -0,0 +1,37 @@
+---
+date: "2006-01-14T17:45:26Z"
+title: Sweep Gruff Under the RUG
+---
+
+
Finally, a NoVA Ruby users group! Here's the brief post from
+ruby-talk:
I will be posting an itinerary soon, but we will be showing the app
+ were are working on at InfoEther (Ruby + Flash).
+
+
+
I'll be there, although that means forfeiting my previously sacrosanct
+poker night.
+
+
As you know, a user group meetup, regardless of the topic, isn't
+complete without a nutty guy waving his arms and ranting about some
+petty grievance, I'm already prepared with my crazy pedant rant.
+
+
Why the hell, and I'm looking at you, Gruff, would you ship a
+library that doesn't even work? It's got a bit of documentation, some
+sample code, and examples of pretty output. Except it doesn't work. At
+all. Why?
+
+
Anyway, "novarug" — or is it written "NOVARUG" — has to be
+one of the less sexy names I've heard recently. Hopefully
+Rich Kilmer's presentation in a couple weeks is as interesting as it
+was at RubyConf 2004.
+
+
Update: Apparently the Gruff
+library isn't broken, but the Gruff
+gem is. It doesn't check for or require the RMagick gem.
+
Lyle (term) pointed me at a local computer show this weekend, so
+I headed over there and picked up some new toys. I got a cheap 4-port
+KVM, several touch lamps, the world's cutest (and crappiest) webcam
+(see below), and a neat programmable LED nametag.
+
+
The webcam is a OneZero PCC-ST3. A bit of googling told me it's a
+sn9c102-based camera, which is supported by recent (2.6.10+) versions of
+the kernel. I compiled and loaded the modules for V4L and the
+sn9c102 driver, then discovered none of the usual webcam apps
+(xawtv, camE, and streamer) supported the damn thing. A bit
+more digging turned up this list of sn9c102 apps. After a
+bit of hacking (and a lot of cleaning) on Christophe Lucas's SDL
+SN9c102 webcam tool, and I came up with my own
+Imlib2 webcam tool, which you can download below:
A final self-referrential twist that would make David Lynch proud:
+apparently Lyle recently purchased the same webcam, and hadn't
+bothered to slog through the Linux muckery to get it working.
+Everyone's a winner when I get new toys!
+
+
diff --git a/content/posts/2006-01-18-my-mythtv-scripts-for-mostly-automated-divx-encoding.html b/content/posts/2006-01-18-my-mythtv-scripts-for-mostly-automated-divx-encoding.html
new file mode 100644
index 0000000..f05eb9b
--- /dev/null
+++ b/content/posts/2006-01-18-my-mythtv-scripts-for-mostly-automated-divx-encoding.html
@@ -0,0 +1,63 @@
+---
+date: "2006-01-18T02:48:06Z"
+title: My MythTV Scripts for Mostly-Automated DivX Encoding
+---
+
+
Did I mention that I set up a MythTV machine several months ago?
+Anyway, I don't use the MythTV front-end; A recording server in my
+rack downstairs (spud) records scheduled programs. Afterwards, I
+re-encode recorded episodes as DivX5-compatible MPEG4 files (in an
+AVI wrapper) on a faster machine (picard, go ahead, laugh at the
+hostname — you know you want to), then burn related shows off to
+DVD.
+
+
I realize it's a slightly convoluted configuration, but it works
+well given my hardware constraints, and the fact that my DVD player
+(a Philips DVP642), is DivX5-aware. That said, I'm posting
+my scripts on the off-chance that pieces of them are useful to someone
+who wants to set up a similar system. Here's what's included in the
+tarball below:
+
+
+
myth_convert.sh: convert MythTV NUV files to DivX5-compatible
+MPEG4 files.
+
mi: A Ruby script to create filesystem-friendly names for AVI
+files encoded with myth_convert.sh.
+
mim: quick shell script to create hard links based on an egrep-style
+regular expression.
+
+
+
A typical session is as follows:
+
+
# (after running myth_convert.sh)
+# see what's encoded
+mi | less
+
+mkdir dvd && cd dvd
+
+# create hard links to encoded episodes of that 70s show, the
+# colbert report, and the daily show,
+mim 70s_ colbert daily_show
+
+# remove the original cryptically-named AVI files
+mimrm 70s_ colbert daily_show
+
+# create an iso of the AVI files in the current directory,
+mkisofs -r -R -J -o 70s-colbert-daily.iso *.avi
+
+# burn a DVD of the episodes in question
+sudo dvdrecord -dao -v -speed=8 dev=/dev/hdc 70s-colbert-daily.iso
+
+# remove the AVI and ISO files
+rm *.avi *.iso && cd .. && rmdir dvd
+
+
+
If you decide to use these scripts, please look through them and edit
+the paths (most have my shared NFS paths hard-coded), and double-check
+to make sure they won't do anything wacky with your systems. With that
+in mind, here's the tarball:
+I just peeked at our bandwidth usage for kylie and used the data set as an excuse to
+give Gruff another shot. Here's what I got:
+
+
+
+
+
+
+
+I know the big spike came from Jon-Anne's (lily) insanely popular kitty pictures, but overall there is an upward trend. Also, graphs produced by Gruff look pretty good!
+
+
diff --git a/content/posts/2006-01-23-wordpress-en-masse-and-akismet.html b/content/posts/2006-01-23-wordpress-en-masse-and-akismet.html
new file mode 100644
index 0000000..69b7a60
--- /dev/null
+++ b/content/posts/2006-01-23-wordpress-en-masse-and-akismet.html
@@ -0,0 +1,66 @@
+---
+date: "2006-01-23T08:39:11Z"
+title: WordPress En Masse and Akismet
+---
+
+
Saturday evening I spent several hours upgrading erinmduncan.com,
+saraduncan.com, richandrobynn.com, and drotedogg.com to the
+latest and greatest versions of Wordpress and Gallery. The
+upgrades themselves were relatively painless (especially the Gallery
+one, which I won't even mention here), but I did jot down some
+notes that might be useful to anyone else who has to do this kind of
+upgrade.
I also switched all of the pages to a much simpler form of comment
+spam filtering. Previously, the spam filtering was of a
+convoluted combination of a phrase blacklist ("penis", "poker",
+"viagra", etc), hacked in AuthImage support, and a tweaked
+xmlrpc.php. In fact, one of the reasons I was hesitant about
+upgrading to WordPress 1.5 was that I wasn't too optimistic about
+duplicating all that nonsense.
+
+
As of WordPress 2.0, all that hackery has been replaced by the
+built-in WordPress 2.0 plugin for Akismet. I haven't tested
+it, I have a feeling it's something blog spammers can circumvent,
+and I don't see how the company can stay afloat providing this as a free
+service. But hey, I'm lazy.
+Akismet requires zero administration, zero
+tweaking, and, most importantly, zero patching, so I'm willing to give it a try and see what happens. Plus, the API is
+relatively straightforward, so if there are any hijinks on the their part, then
+it's easy enough to switch to a comparable open system. There
+are even Akismet bindings for Ruby, although my initial perusal
+of the source code tells me they won't work in Linux without a bit
+of tweaking (hint: case-sensitive filesystems mean case-sensitive file
+names). The only real Akismet annoyance is that in order to get an
+API key, you have to sign up for a WordPress.com account. It's
+free, but it means I have yet another throw-away account, not to mention
+a blog that I'll never update (everyone say hello to
+http://pablotron.wordpress.com/!).
+
+
Overall though, I have to hand it to the WordPress developers. It looks
+like there are a fair number of changes under the hood, and I'm
+impressed by how seamless they made the both of the upgrades. Or
+maybe I'm just excited about not spending Sunday afternoons sitting at
+the MySQL console deleting comment spam any more. Either way, I'm
+happy.
+
diff --git a/content/posts/2006-01-26-notes-from-the-first-novarug-meetup.html b/content/posts/2006-01-26-notes-from-the-first-novarug-meetup.html
new file mode 100644
index 0000000..59ded17
--- /dev/null
+++ b/content/posts/2006-01-26-notes-from-the-first-novarug-meetup.html
@@ -0,0 +1,190 @@
+---
+date: "2006-01-26T03:55:35Z"
+title: Notes from the First NovaRug Meetup
+---
+
+
Tonight I went to the first Northern Virginia Ruby Users Group
+(NOVARUG). Here are my semi-distilled notes and commentary on the
+evening:
+
+
+
Rich Kilmer spent most of the time giving a presentation on
+Alph, and talking about his experience doing a functional
+prototype interface for mid-air plane refueling. He also talked about
+bridging Ruby and ActionScript. The Ruby-related content
+was similar to the presentation he gave at RubyConf 2004, so I
+didn't bother taking too many notes on the actual application.
+
~44 people. There were roughly 60 people at RubyConf 2002, and
+maybe 100 at RubyConf 2004. 40+ people in for a straight
+NOVA/DC meetup kind of puts the recent exponential growth of
+Ruby in perspective. David Black (dblack) and I talked about
+that a few months ago on IRC, but I didn't appreciate the magnitude
+of the increase until this evening.
+
While fiddling around on my laptop without Internet, I just discovered
+that the never-released Gemini still works :D. Gemini is a
+GTK package management GUI for RubyGems, written in
+(suprise!) Ruby. Is anyone interested in this thing? I could
+probably touch it up and have it release-ready in about a week if
+there's still a desire.
+
Rich mentioned MTASC, which is a fast, open source,
+ActionScript to SWF compiler written in OCaml. Apparently
+it's noticably better than Macromedia's (now Adobe) tools
Rich noted that he's using camelCase instead of underscores
+for method names in Alph because the methods are actually
+RMI calls from Ruby to ActionScript. He noted that
+underscores are generally the Ruby way, and that people outside
+the US (especially Japanese people) have a lot of trouble reading
+camelCase code because they don't recognize the case and, by
+extension, can't distinguish the words. If you think about it, it
+makes sense. Can you tell two similar Kanji glyphs apart?
+
Rich's presentation uses code like 60.days and 24.hours.
+He mentioned that that's an extension to Integer, but I hope he
+misspoke, because that makes a whole lot more sense as an extension to
+Numeric, because that way it gets picked up by Bignum, Fixnum,
+and Float for free.
Apparently the current Flash runtime doesn't do JIT
+internally (I asked about this, apparently it parses, then walks
+the AST, similar to Ruby 1.8. If they're doing that, then
+they really shouldn't be calling SWF files bytecode). According
+to Rich, the upcoming runtime willJIT, which means an
+approximate 10x speed boost at the cost of an upgrade and increased
+disk footprint of roughly 200k. Not too shabby.
+
Thought: Indi for Linux could use the evil shell script stuff
+to build an all-in-one equivalent to a OSX.app (they'd need
+to statically compile stuff to make it truly portable).
+
Some group conversation about OpenLaszlo), an XML-based platform
+(IDL, IDE, etc), and how it compares to Alph. The
+difference between Alph and OpenLaszlo is that the former
+parses XML at runtime (similar to Mozilla's XUL and
+Microsoft's XAML (Avalon)), while the latter compiles
+the XML IDL to a Flash SWF.
Question about why not Alph isn't using SVG for the runtime,
+especially since it has the advantage of being open. Rich
+explained that SVG requires a plugin (which isn't quite true,
+Firefox 1.5 doesn't require a plugin to display SVG, but
+it's implementation needs some work). Regarding
+licensing, Macromedia/Adobe aren't likely to make any major
+licensing changes, since that would screw their established user base.
+
Last year Adobe open-sourced Adam and Eve, the C++-based core
+interface framework for Photoshop and several other Adobe
+applications
+
+
+
And that's all I've got for Rich Kilmer's presentation. Afterwards
+he gave the group an opportunity to talk about their projects. I didn't
+catch anyones' names, and Google failed me, so I couldn't find
+references to these projects online.
+
+
+
Guy who works at NIST, demoing app to model PCB standards,
+in 3D. You can zoom in and out and rotate the PCB around.
+Got oohs and aahs from the crowd :).
+
"Pippen" apparently marshals data to XML, and there was another
+app called "Genie", but I didn't catch what it did.
+
He made several references to fiducials, which I
+thought sounded neat, so I looked it up on Wikipedia.
+
Everything his group at NIST does is public domain, so
+people are more than welcome to try this stuff out.
+
Someone asked about the state of Ruby OpenGL, since it's listed
+as a prerequisite for his demo application. Apparently it's working
+just fine for everything he's tried, except for tesselation.
+
+
+
Someone else (again, no name, although he made a passing reference to
+the DC XP users group) talked briefly about a Rails-based
+social networking tool:
+
+
+
Allows animal rescue people to coordinate on a national level.
+
Someone suggested that he use Google Maps, and he said he
+is thinking about it, but the more important aspect of the application
+is route-planning and commentary (he doesn't want to stop at the wrong
+McDonalds and meet up with Ted Bundy).
+
+
+
Finally, one person to the right of me (hiding in the back, along with
+all the other real introverts. Either that or he was late like me
+:D) mentioned an abstract Rails authentication plugin he was working
+on. No name, and no project name (he didn't provide either), so that's
+the most information I can give you.
+
+
After that, there was some miscellaneous conversation about future
+NOVARUG, specifically times and frequency. It sounds like they're
+going to be monthly, on Thursday evenings (because otherwise it
+conflicts with my poker night!), and start at 7:00 (or 6:30 if you want
+the free pizza). There was one comment about starting earlier, but the
+general consensus seems to be that 7:00 is just fine; any earlier and
+traffic becomes a serious problem. Personally, I'm hoping we can find a
+venue that's closer to the Fairfax area, mainly because I'm selfish
+and lazy, but also because that would make NOVARUG more DC and
+Maryland accessible. Also, the Metro doesn't run out to Reston,
+which means people have to drive or carpool.
+
+
(Of course, when I say "drive", I mean "sitting in stopped traffic on
+495 for 30 minutes, staring at the silhouette mudflaps on the semi in
+front of you and hoping the drivers on both sides don't notice you
+picking the gunk out of your eyes or hear you jamming out to
+Madonna").
+
+
There was some talk about setting up a NOVARUG mailing list.
+Apparently there are already a couple Yahoo groups, but both
+are essentially dead, and the owner of one is MIA. Rich and
+Tom are going to set something up on the novarug.org domain, and
+provide the details on the NOVARUG blog.
+
+
Rich mentioned something about Paul Graham speaking at the
+upcoming RailsConf in Chicago. Personally, I have no real interest
+in Rails — I think it's a great, I just don't use it personally
+— so I can't justify the cost of the conference. I like
+Paul Graham's writing (although I'm only aware of
+one Ruby reference), so I'd love to hear him speak. Hopefully
+that'll go better than Brad Cox at RubyConf 2004 (which was
+actually really interesting, until he tried to talk about his new
+proprietary DRM system...to an all open source crowd).
+
+
Afterwards, a couple of 3-5 person groups coalesced and talked for
+about 30 minutes. I eavesdropped in on the group around Rich Kilmer
+and even offered a bit of commentary. Rich Kilmer said Fox is ugly on
+some platforms, and I said "no, Fox is ugly on every platform" (it
+is. I've seen stuff I've written on themed XP systems, and it basically
+looks like a Tk-based app does on every platform: teeth-gnashingly
+ugly). RubyGems and RubyForge both came up a couple of times
+in conversation, so I'll mention them here: RubyGems and
+RubyForge. And don't forget
+this amusing IRC quote about RubyGems.
+
+
On the way out I got a chance to talk to Tom Copeland, who I haven't
+seen since he made me feel like a celebrity by recognizing me as "the
+Pablotron guy!" at Baja Fresh. He liked the excessively
+verbose description of my XHTML patch on ruby-core,
+and also noticed how it's difficult to get patches through on
+ruby-core. I realize that's mainly a language/cultural barrier and
+not any sort of malice,, but it's still frustrating to be on the short
+side of the stick. Rich suggested I send RDoc patches directly
+to Dave Thomas (those particular patches have already been silently
+accepted into 1.9, but not the XHTML ones).
+
+
That's it for my notes. You know the drill: let me know if you see any
+gratuitous errors. I'll definitely be at the next schindig; maybe I'll
+even have something to present!
+
+
Update: The colorful language about Fox isn't meant to downplay the usefulness of the library; I think the API is really straightforward, and that it looks and feels nicer than Tk and a slew of other non-native widget libraries. That said, non-native widget toolkits don't mimic the look and feel of the native system, and that almost always looks terrible to me. That goes for Mozilla under, well, pretty much everything, Gimp and Gaim in Windows and, of course, Fox. Firefox seems to look okay to me for some reason, except under MacOS. Go figure. Anyway, my comment above was intended less as an to insult the Fox developers, and more as a light-hearted jab from someone at 10,000 feet who hasn't taken the time and effort required to design, create, and maintain a cross-platform widget toolkit.
+
+
+
Even Later Update (2006-02-27): The "anonymous guy talking
+about an authorization plugin" was Bill
+Katz, and his Rails
+authorization plugin is available here.
+
+
diff --git a/content/posts/2006-02-13-using-greasemonkey-for-decent-keyboard-navigation.html b/content/posts/2006-02-13-using-greasemonkey-for-decent-keyboard-navigation.html
new file mode 100644
index 0000000..360f1c1
--- /dev/null
+++ b/content/posts/2006-02-13-using-greasemonkey-for-decent-keyboard-navigation.html
@@ -0,0 +1,51 @@
+---
+date: "2006-02-13T04:31:20Z"
+title: Using Greasemonkey for Decent Keyboard Navigation
+---
+
+
All of the scripts add consistent keyboard navigation commands: ALT-,
+for the previous page, ALT-. for the next page. The SAF
+script adds first (ALT-<) and last (ALT->) page keys as well, but
+their Digg and Reddit counterparts aren't quite working (yet).
+
+
If keyboard navigation isn't your thing, don't worry; there are a
+gadzillion other scripts to choose from. At the
+moment, my two favorite (besides the ones above, of course :D) are:
+
+
diff --git a/content/posts/2006-03-04-using-akismet-in-php4-to-defeat-comment-spam.html b/content/posts/2006-03-04-using-akismet-in-php4-to-defeat-comment-spam.html
new file mode 100644
index 0000000..6de39cb
--- /dev/null
+++ b/content/posts/2006-03-04-using-akismet-in-php4-to-defeat-comment-spam.html
@@ -0,0 +1,46 @@
+---
+date: "2006-03-04T04:00:46Z"
+title: Using Akismet in PHP4 to Defeat Comment Spam
+---
+
+
I've been having comment spam problems on my personal page.
+Wordpress uses Akismet for comment spam filtering now-a-days,
+and there are bindings for several languages, including PHP5,
+Python, and Ruby. The Akismet API documentation
+documentation has a PHP4-friendly code snippet, but a quick
+Google search didn't turn up any full-blown PHP4 bindings,
+so I wrote my own. Here's an example of the API:
+
+
#
+# Check comment using Akismet (http://akismet.com/). Returns true for
+# spam, and false for ham.
+#
+function is_comment_spam($news_id, $name, $email, $url, $comment) {
+ global $AKISMET_CONFIG;
+
+ # populate comment information
+ $comment_data = array(
+ 'user_ip' => $_SERVER['REMOTE_ADDR'],
+ 'user_agent' => $_SERVER['HTTP_USER_AGENT'],
+ 'referrer' => $_REQUEST['REFERER'],
+ 'permalink' => "http://paulduncan.org/?id=$news_id",
+ 'comment_type' => 'comment',
+ 'comment_author' => $name,
+ 'comment_author_email' => $email,
+ 'comment_author_url' => $url,
+ 'comment_content' => $comment,
+ );
+
+ # create akismet handle
+ $ak = new Akismet($AKISMET_CONFIG['api_key'],
+ $AKISMET_CONFIG['blog']);
+
+ # return akismet result (true for spam, false for ham)
+ return $ak->check_comment($comment_data);
+}
+
+
diff --git a/content/posts/2006-03-19-openvpn-article-in-linux-magazine.html b/content/posts/2006-03-19-openvpn-article-in-linux-magazine.html
new file mode 100644
index 0000000..319dd7e
--- /dev/null
+++ b/content/posts/2006-03-19-openvpn-article-in-linux-magazine.html
@@ -0,0 +1,12 @@
+---
+date: "2006-03-19T21:07:45Z"
+title: OpenVPN Article in Linux Magazine
+---
+
+
+On the off-chance you haven't heard about it yet, I wrote an article
+on OpenVPN for Linux Magazine.
+It's in the April 2006 issue, which has already been mailed to subscribers and should be available at
+bookstores and on newsstands any day now.
+
+
diff --git a/content/posts/2006-09-15-new-versions-of-musicbrainz-rubilicious-and-wirble.html b/content/posts/2006-09-15-new-versions-of-musicbrainz-rubilicious-and-wirble.html
new file mode 100644
index 0000000..1764438
--- /dev/null
+++ b/content/posts/2006-09-15-new-versions-of-musicbrainz-rubilicious-and-wirble.html
@@ -0,0 +1,52 @@
+---
+date: "2006-09-15T16:28:08Z"
+title: New Versions of MusicBrainz, Rubilicious, and Wirble
+---
+
+
I've switched over completely to Firefox 2.0b2. It's not out yet,
+but the beta is a lot faster in Linux, so I decided not to wait.
+What's new?
+
+
+
Faster. It's a lot faster than Firefox 1.5. It's still slower than
+I'd like. It's still slower than I think it should be. But hey,
+faster is always better.
+
Built-in Session Management. I was using the excellent
+SessionSaver plugin in Firefox 1.5, but Firefox 2.0's
+built-in session management is good enough for me. It's a bit
+finicky, but I'm sure that will get sorted out.
+
Better Tab Management. The tab bar doesn't shrink tabs until they're
+unbearably small any more. Instead, a nifty drop-down menu on the
+right lists all your tabs, and you get a couple of scroll buttons. I
+tend to open a lot of tabs, and after using the new tab interface for
+a bit, I realized that works really well with my style of browsing.
+Here are three shots of the new tab interface:
+
+
+
+
+
+
+
+
+
Unfortunately, Firefox 2.0 isn't all sunshine and roses. A huge number
+of extensions broke. While most of the important ones (read:
+Ad Block Plus), have been ported, really useful ones like
+Greasemonkey haven't. There appear to be some minor quirks
+with inline find. They also attached the Go button on the URL entry to
+the URL entry itself; you can disable it using the Customize context
+menu option any more. I found this forum post after a bit
+of searching, which basically says to add the following snippet to your
+userChrome.css file:
+
+
/* don't display the annoying go button */
+#go-button { display: none; }
+
+
+
You can disable the resizing search entry in there too. I still haven't
+decided whether or not I like it. The behavior of the backspace key
+changed too, although I'm not sure if that was a Firefox 2.0 change, or if my
+config got munged during the upgrade. Anyway, you can switch it to go
+back instead of doing nothing by setting browser.backspace_action to 0 in
+good-old about:config.
+
+
By the way, if you can't keep all the versions of Adblock and Adblock
+plus straight, it's because the history of the both kind
+of reads like a soap opera.
+
+
diff --git a/content/posts/2006-09-16-vim-shell-why-hasn-t-vim-had-this-all-along.html b/content/posts/2006-09-16-vim-shell-why-hasn-t-vim-had-this-all-along.html
new file mode 100644
index 0000000..1f07bd5
--- /dev/null
+++ b/content/posts/2006-09-16-vim-shell-why-hasn-t-vim-had-this-all-along.html
@@ -0,0 +1,57 @@
+---
+date: "2006-09-16T03:38:15Z"
+title: 'VIM-Shell: Why Hasn''t Vim Had This All Along?'
+---
+
+
I stumbled across VIM-Shell completely on accident. it's a patch
+against Vim that does exactly what it sounds like; adds
+rudimentary shell support to Vim. Check it out:
+
+
+
+
+
+VIM-Shell with a bunch of apps (1680x1050 PNG).
+
+
+
The default patch kind of blows, so I cleaned it up and fixed a couple
+bugs (namely, the red terminal o' death bug reported on the
+mailing list). I've submitted the my fixes upstream, but they
+haven't been incorperated into the official version yet. In the mean
+time, you can get my improved patch by following the link below.
Note: If you compile it under Linux, you'll need to add a link to
+libutil, either via configure or make, like so:
+
+
+
$ ./configure LDFLAGS=-lutil
+
+
+
or
+
+
+
$ make LDFLAGS=-lutil
+
+
+
If you don't, you'll get an undefined reference to forkpty(). I
+believe this is a problem with the original patch as well. Now that
+you're all excited, here's what VIM-Shell still needs:
+
+
+
Slightly better color emulation. Occasionally things seem to "bleed".
+
Session support. I use sessions pretty regularly, and it'd be nice to
+at least restore a blank shell. Even better would be pwd and history.
+
A way to send a literal Ctrl-W to the shell. Lots of apps use ^W,
+including Vim and Bash, so not having it is kind of annoying. Maybe a
+Screen-style escape like ^Ww?
+
+
+
Even with all these relatively minor gotchas, VIM-Shell is still damn
+cool.
+
diff --git a/content/posts/2006-10-19-nifty-little-ruby-libraries.html b/content/posts/2006-10-19-nifty-little-ruby-libraries.html
new file mode 100644
index 0000000..0ba7094
--- /dev/null
+++ b/content/posts/2006-10-19-nifty-little-ruby-libraries.html
@@ -0,0 +1,20 @@
+---
+date: "2006-10-19T13:14:55Z"
+title: Nifty Little Ruby Libraries
+---
+
+
+I've been fiddling with these libraries the last couple of days.
+
RMovie: FFmpeg library wrapper. It's a real pain in the ass to install, but once you get it working, it allows you to extract arbitrary frames from any video format supported by FFmpeg.
+
diff --git a/content/posts/2006-11-17-over-a-decade-of-spam-and-i-still-haven-t-killed-anyone-yet.html b/content/posts/2006-11-17-over-a-decade-of-spam-and-i-still-haven-t-killed-anyone-yet.html
new file mode 100644
index 0000000..3d48934
--- /dev/null
+++ b/content/posts/2006-11-17-over-a-decade-of-spam-and-i-still-haven-t-killed-anyone-yet.html
@@ -0,0 +1,106 @@
+---
+date: "2006-11-17T04:38:12Z"
+title: Over a Decade of Spam and I Still Haven't Killed Anyone (Yet)
+---
+
+
I've been using SpamProbe to separate the wheat from the chaff for
+the last four years. That, along with the fact that I rarely delete
+email, gives me a reasonable set of data to analyze the performance of a
+spam filter. So, how does SpamProbe stack up?
+
+
Graphs With Lines and Stuff
+
+
+
+
The exponential increase has flattened the numbers we really care about,
+and the logarithmic scaling plotting in Ploticus has failed
+me, so here's the same graph with correct classifications omitted:
+
+
+
+
That second graph is mildly depressing, but it reflects my day-to-day
+experience. Namely, more and more spam messages seem to be sneaking by
+SpamProbe and being incorrectly classified as legitimate messages. But
+how does the increase in false negatives stack up compared to the total
+amount of spam I'm getting? Let's take a look at the data again, but
+this time as a percentage rather than a sum:
+
+
+
+
And the same data again, without the correctly classified spam:
+
+
+
+
As you can see from the graphs, the percent of false positives, or
+legitimate mail incorrectly classified as spam, sits pretty steady
+around 0%, while the number of false negatives, or spam incorrectly
+classified as legitimate mail, has hovered below 5% for just over two
+years. Not too shabby for a lowly bayesian classifier. By the way, the
+large peaks in the percentage graphs are mostly anomalous (see below).
+
+
Caveats
+
+
Are aphorisms about liars and statistics bouncing around in your head
+right now? Good. Here's some of the gotchas with this data:
+
+
+
The graphs above do not include "ham". Ham is
+correctly-classified, non-spam messages. Including ham would flatten
+the percentage graphs by increasing the percent of correctly
+classified messages and decreasing the percent of falsly classified
+messages. If there's any interest, I can add additional graphs which
+include correctly classified, non-spam messages.
+
The false negative peaks in months 24 and 28 weren't due to any
+mistakes on the part of SpamProbe; I managed to break SpamProbe and/or
+fill up the disk where my mail is stored on a couple of occasions.
+
I have catch-all addresses enabled for some of my domains (e.g.
+foo@example.com, bar@example.com, and asdf200notarealname@example.com
+are all routed to my inbox). This necessarily affect the accuracy of
+SpamProbe, but it certainly increases the amount of spam I receive.
+
I purchased a few additional domains between 2002 and 2006.
+Although I haven't added any within the last year, so that doesn't
+account for the exponential increase in spam in the last 12 months.
+
I upgraded SpamProbe a handful of times, and re-trained the classifier
+once.
+
+
+
Conclusions
+
+
If I wanted to be scientific and objective and all that crap, or at
+least methodical and thorough, I would take several competing spam
+classifiers and feed them the same corpus, then compare the results.
+I'm not trying really trying to be objective, though; SpamProbe seems to
+be working pretty well, at least for now. Oh yeah, if you're interested
+in playing with the actual numbers, or if you're curious how I processed
+the data and generated the graphs, feel free to download the raw
+data.
+I've amassed a backlog of incomplete posts over the last few months. I'm hoping to get some of them up over the next week.
+
+
diff --git a/content/posts/2006-12-13-package-signing-a-rake-patch-and-a-rubygems-shortcut.html b/content/posts/2006-12-13-package-signing-a-rake-patch-and-a-rubygems-shortcut.html
new file mode 100644
index 0000000..27a14b1
--- /dev/null
+++ b/content/posts/2006-12-13-package-signing-a-rake-patch-and-a-rubygems-shortcut.html
@@ -0,0 +1,43 @@
+---
+date: "2006-12-13T02:28:09Z"
+title: 'Package Signing: A Rake Patch and a RubyGems Shortcut'
+---
+
+
I threw together a quick PGP package signing patch for Rake. The
+details are in the email I sent to rake-devel earlier this
+evening. Here are the patches (one against the development version, and
+one against 0.7.1, the latest stable release):
This next bit has nothing to do with the patch above, but it's signing-related
+so I'll throw it in this post too. If you're using RubyGem's built-in package signing to sign
+your gems (if you're not, why not?), here's a handy little idiom
+to add to your Rakefile or .gemspec:
Then, add this to your ~/.bashrc (be sure to replace .secure with
+the directory containing your signing key and certificate):
+
+
# rubygems signing key and comma-delimited list of
+# certificates in rubygems signing cert chain
+GEM_SIGNING_KEY=~/.secure/sign.key
+GEM_SIGNING_CHAIN=~/.secure/ca.crt,~/.gem/signing/sign.crt
+
+# export both!
+export GEM_SIGNING_KEY GEM_SIGNING_CHAIN
+
+
+
Voila! From now on you can automagically sign gems when you build them
+without hard-coding paths or doing any other heavy lifting.
+
+
diff --git a/content/posts/2006-12-13-yui-and-yui-ext.html b/content/posts/2006-12-13-yui-and-yui-ext.html
new file mode 100644
index 0000000..4e472aa
--- /dev/null
+++ b/content/posts/2006-12-13-yui-and-yui-ext.html
@@ -0,0 +1,32 @@
+---
+date: "2006-12-13T03:34:22Z"
+title: YUI and YUI-Ext
+---
+
+
Scripting has now been available in browsers for over a decade. The
+recent AJAX craze -- an older, more mature sibling of Microsoft's
+DHTML -- has spurned the development of countless AJAX and
+DOM platform libraries, each with their own niche.
+
+
Even though Rails is really partial to Prototype and
+Script.alculo.us, I decided to spent some time playing with some
+of the competitors. I like the simplicity of moo.fx, but my
+personal favorite at the moment is Yahoo User Interface library
+(YUI). It's BSD-licensed, documented out the wazoo,
+and it's being actively developed and supported by Yahoo. Toss in
+Jack Slocum's yui-ext, and you have an awesome dynamic grid
+widget, layout manager, asynchronous animation primitives, and a great
+JavaScript-only dialog widget that'll impress anyone (check out the
+slick per-block commenting in the Django Book, for a
+rough idea of what you can do with yui-ext). Not too shabby. With a
+little effort, even Rails can be beaten into YUI
+submission).
+
+
(By the way, I am not and will never be a fan of AJAX for the sake of
+AJAX and at the expense of usability. But I do think a little bit, used
+sparingly, can really spice up a page).
+
+
Anyway, expect to see a bit of YUI pizazz around here whenever I finally
+get the long, long overdue backend rewrite rolling.
+
+
diff --git a/content/posts/2006-12-15-hijacking-a-pejorative-monkey-patching-and-technorati-ruby.html b/content/posts/2006-12-15-hijacking-a-pejorative-monkey-patching-and-technorati-ruby.html
new file mode 100644
index 0000000..af40a6f
--- /dev/null
+++ b/content/posts/2006-12-15-hijacking-a-pejorative-monkey-patching-and-technorati-ruby.html
@@ -0,0 +1,143 @@
+---
+date: "2006-12-15T06:34:07Z"
+title: 'Hijacking a Pejorative: Monkey Patching and Technorati-Ruby'
+---
+
+
+
+
+
+
The new version of Technorati-Ruby adds a bit of magic to return
+values. Version 0.1.0 returns standard Ruby hashes. A list of
+items in the returned value -- blogs from Technorati#cosmos or tags
+from Technorati#tag, for example -- are returned as an array of hashes
+under the the 'items' key, like so:
+
+
# find sites linking that link to me
+results = tr.cosmos('pablotron.org')
+
+# print an excerpt from each item
+puts results['items'].map { |item|
+ [item['url'], item['excerpt']]
+}
+
+
+
It's a simple system, and using a hash instead of a pre-defined class
+reinforces the idea that the return values could be unavailable, change,
+or possibly even be removed. The problem, of course, is that the hash
+references in the example above clutter the code and cause it to look
+more like [Perl] than Ruby.
+
+
I wanted to give the results a bit more of a Ruby feel, preferrably
+without breaking backwards compatability. I came up with a solution
+that I'm pretty happy with. We'll get to that in a minute; first let's
+talk about monkey patching.
+
+
Monkey Patching
+What is monkey patching, anyway? Wikipedia defines it as "a
+way to extend or modify runtime code without altering the original
+source code for dynamic languages". If you're a Rails user, you've
+already been merrily enjoying the benefits of monkey patching:
(Hint: neither String#pluralize nor the no block/one-argument form of
+Enumerable#map exist in the standard library; both are grafted on at
+run-time by ActiveSupport)
+
+
Anyway, the Python community frowns on the practice. In
+fact, the term "monkey patch" comes from the Python community, and is
+actually meant as a pejorative. The Ruby community, on the other hand,
+is more tolerant of the practice. Chad's post, "The Virtues of
+Monkey Patching", is a fantastic real-world example of how
+monkey patching can be beneficial. When is monkey patching appropriate,
+and when should it be avoided? Here's my rule of thumb:
+
+
+
Paul's Rule of Monkey Patching
+ Libraries should not modify underlying classes at runtime unless that
+ is their express purpose and applications should ignore what I just
+ said.
+
+
+
How does monkey patching apply to Technorati-Ruby? Well, it doesn't, or
+at least not directly. I didn't want to extend the standard library for
+little old Technorati-Ruby, and I didn't really want to sub-class Hash
+either. Fortunately, I had another option: just in time convenience
+methods, the sneaky and verbosely-named cousin of monkey
+patching.
+
+
Just in Time Convenience Methods
+A just in time convenience method is a convenience method that is
+added to an instance of a class, rather than the class itself.
+Jamis and Marcel both have more to say about them, but here's
+what they look like:
Second, I wrapped the result hashes in magify_hash. Third? There
+wasn't really a third step, so I just sat around for a few minutes
+feeling smug. By the way, here's that example code from the beginning,
+updated to use the shiny new convenience methods:
+
+
# find sites linking that link to me
+results = tr.cosmos('pablotron.org')
+
+# print an excerpt from each item
+puts results.items.map { |item|
+ [item.url, item.excerpt]
+}
+
+
+
So, problem solved. Just in time convenience methods satisfy all my
+requirements: they're backwards compatible, don't require me to create a
+new class or sub-class Hash, and they allow users to write cleaner
+code. Not bad for a sneaky pejorative.
I got a chance to sneak out to last week's NovaRUG. Chad was in
+town for work, so he stopped by. I also got a chance to talk to
+Rich and Tom as well.
+
+
Rich inadvertently used his phone as a Wiimote-style projectile weapon.
+Chad went and got all famous since the last time I saw him (at RubyConf
+2004)! Apparently writing a couple books and speaking all over the
+world does that to you. Who knew? Anyway, I only had a little while to
+catch up with him, but he dinged my for being lax on Raggle.
+He'll be in town next month as well; maybe we'll have a bit more
+time to hang out then.
+
+
I talked to Tom about Mercurial and VServers. I'm using both
+now, and he's interested in both for RubyForge. The former as
+another SCM for people to use, and the latter as a way to provide
+user shell access.
I've bought two handfuls of new gadgets in the last few months.
+Initially I was going to post pictures and a review of each one, but
+hey, I'm lazy, and that would have cut too much into my gadget time.
+Anyway, here's what's new in the land o' Pablotron gadgets:
Plantronics Discovery 640: Sweet (and tiny!) bluetooth headset. Keeps
+my hands free and my phone safe. I can also use it with Skype with
+my snazzy no-name USB bluetooth dongle.
+
Slim Devices Squeezebox V3: This bad boy lets me listen to all my
+music and keep my room quiet. Slim Devices was recently aquired
+by Logitech -- hopefully they don't go down the crapper because of
+it. By the way, I've massaged both SlimServer and
+MythTV onto the same machine using VServers; if there's any
+interest I can post the gory details...
+
Sony CyberShot DSC-T10: I loaned out my old digital camera and it
+was returned with a dead battery, covered in dust, and without the
+ability to take pictures. So far I'm pretty happy with this camera;
+the wealth of features almost makes up for the annoying proprietary
+sony memory crapola. Plus I eeked out a few more megapixels than
+Tom, and that's always fun :).
+
Cowon iAudio X5 60G: I lost my H120, so I picked up the X5.
+It was time for an MP3 player with more disk space anyway. So
+far, so good. I like the screen, the USB host, and the built-in
+microphone. The audio quality on the H120 seemed a bit better, and
+I'm not a big fan of the extremely losable dongle (I bought an extra
+one, just in case). Did I mention that you need for line out, power,
+and USB? What kind of crackerjack design has USB Host on the player
+itself, but a dongle for line out and USB data transfer? The
+default operating system is okay, but I installed Rockbox anyway.
+More pictures below. Did I mention I got an Xbox 360 for Christmas
+too?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/posts/2007-04-04-catching-up-using-gtd-and-todo-txt.html b/content/posts/2007-04-04-catching-up-using-gtd-and-todo-txt.html
new file mode 100644
index 0000000..610094a
--- /dev/null
+++ b/content/posts/2007-04-04-catching-up-using-gtd-and-todo-txt.html
@@ -0,0 +1,41 @@
+---
+date: "2007-04-04T22:20:37Z"
+title: Catching Up Using GTD and Todo.txt
+---
+
+
Last night I dusted off and started re-reading my copy of
+"Getting Things Done" (GTD). I'm a bit overwhelmed
+with projects and new ideas at the moment, so taking some time to
+optimize my scheduling algorithm seemed like wise thing to do.
+
+
A bit of Googling turned up a plethora of GTD-inspired applications,
+including several desktop applications (no thanks), a ton of web-based
+task managers (maybe!), and even a couple of Vim-based solutions plugins (neat!).
+
+
On a whim, I decided to check out Tracks, a Rails GTD
+application. Tracks was kind of a turd; the documentation
+is sparse, there seem to be a couple of weird bugs, and it didn't look
+so hot in my web browser (my guess is the stylesheet is pretty
+Mac-specific, although I didn't poke around too much to see what the
+problem was).
+
+
The attempted Tracks install wasn't a total bust, because I used it as
+an opportunity to upgrade my internal web/rails VServer. I've been
+using VServers at the house for quite a while now and I love them;
+there's even an entry my to-do list to write a VServer post which I
+haven't gotten to. Playing around with Tracks also gave me
+an opportunity to set up a Mongrel cluster, which, barring one minor
+hiccup, is as straightforward to configure as the documentation implies.
+
+
Next on my list was Todo.txt. Todo.txt certainly isn't for
+everyone; it's a shell script and a text file, and that's pretty much
+it. It's also exactly what I wanted; simple, unobtrusive, and
+future-proof. I set up the AIM bot too, so I've got a couple
+different interfaces for adding and viewing tasks. Google Calendar
+integration would be nice, although that's probably been done too and I
+just need to dig it up.
+
+
Anyway, back to reading and trying to re-shoehorn my brain into GTD and
+Todo.txt.
Say hello to Mercurial, my long-overdue replacement for CVS.
+Unlike CVS and Subversion, Mercurial is a distributed version
+control system (VCS), which means (among other things) it doesn't
+have a central repository, has disconnected (non-networked)
+commits, and allows you to group small changes together as "change sets".
+Other well-known distributed VCSs include Bitkeeper, Git,
+Darcs, and
+Monotone (there are more). While searching for a CVS
+replacement, I spent some time using Subversion, Monotone, and Git;
+here's a brief overview of my experience with each one.
+
+
+
Subversion: Subversion is probably the most popular VCS, so
+you're probably already familiar with it. I'll dispense with the
+pleasantries and skip straight to the problems.
+
+
For the past several months I've been using a private, home Subversion
+repository for small projects, snippets of code, configuration
+files, scripts, and various other knick-knacks. Along the way, I
+noticed several things about Subversion that bother me. For example,
+until version 1.4, common operations like svn status and svn
+commit were uncomfortably slow under Subversion. They're better now,
+but still not as fast as I'd like. Copying and moving large groups of
+files is still painfully slow (moving several hundred megabytes of
+files took me well over 20 minutes).
+
+
Branching in Subversion is primitive (and slow, since it's really just
+a copy). For me this is a major problem, because in addition to
+revisions, I also want to use branches for quick, version controlled
+staging areas for new features. That's a problem in Subversion,
+because branches are expensive, and merging is kind of wimpy.
+
+
It's a genuine hassle to require network access for commits; I
+regularly work remotely, and even though I have VPN access (courtesy
+of OpenVPN) it's still kind of distracting to wait for common
+commands like commit, add, and copy . My alternatives? Move the
+repository to a public server with better bandwidth (which makes it
+slower for me to access while I'm at home, plus it's not really
+private any more and I'm still dependent on network connection) or
+hold off on commits until I'm at home (which is contrary to committing
+in small, incremental changes, my preferred modus operandi).
+
+
Finally, and most importantly, Subversion is centralized. Why? It
+imposes all sorts of workflow restrictions that haven't been
+necessary since VHS tapes went out of style. For example, I have
+roughly five gadzillion projects in various states of brokenness and
+disarray that I'm just not ready to publish. Distributed version
+control systems have no central repository except one that is
+designated by convention, so I can commit locally, push to my private
+repository when it's convenient, and publish to the public repository
+when I'm damn good and ready. Subversion can't do any of this without
+cheating, of course, so I'm forced to either migrate projects to the
+public repository without their history or use svndumpfilter
+chicanery to bludgeon Subversion into doing something it should be
+able to do out of the box. Which sounds an awful lot like trying to
+copy and move files in CVS. Which is why we were supposed to upgrade
+to Subversion in the first place. Oops...
+
+
(Subversion isn't all bad, by the way. It's certainly a huge
+improvement over CVS. It integrates well with Rails,
+Eclipse, and all the other fancy toys kids use these days.
+Plus Subversion has all sorts of nifty extensions like TortoiseSVN
+and Trac. I use Subversion daily at work. I just need things
+Subversion doesn't support by design).
+
+
I'd be derelect in my blog posting responsibilities if I didn't
+mention SVK, a distributed VCS built on Subversion that supports
+repository mirroring and disconnected operation. I can't say much
+about SVK because I don't have much experience with it, although I'm
+fairly sure SVK has neither the speed nor the power of Mercurial and
+Git. Personally, I don't really see the point of keeping Subversion
+around for the sake of keeping Subversion around, particularly in lieu
+of Subversion's marvelously atrocious track record with repository
+corruption.
+
Monotone: I wanted to like Monotone. I stumbled across a
+reference to it in the SQLite documentation, and spent several
+months putting up with Monotone's warts after Linus plugged it on the
+LKML. I like the extensive documentation, simple
+command-line interface, Lua hooks, proper Windows support.
+Internally, Monotone makes extensive use of strong cryptographic
+primitives, which I wholeheartedly support.
+
+
Unfortunately, Monotone is slow. Dog slow. An initial repository pull
+(checkout, in CVS parlance) is so slow that a many Monotone
+users provide a publicly downloadable snapshot of the initial pull
+instead. The last time I used Monotone, the crypto certs were their
+own special blend; I'd prefer either OpenPGP or X.509.
+
+
(Oddly enough, my first look at Mercurial was right after I started
+testing Monotone. I wasn't initially interested in Mercurial because
+I was still stuck on Monotone. I didn't feel like Mercurial offered
+much more than Monotone, and I hadn't fully appreciated the speed
+difference between the two).
+
Git: Git was (is) right at the top of the list. It's fast,
+possibly (probably?) even faster than Mercurial. It has features
+Mercurial doesn't support (rebase, for example, although I believe that can
+be clumsily emulated with bundle and unbundle). Keith Packard
+wrote a post titled "Repository Formats Matter",
+advocating Git for X.org. His post briefly mentions Mercurial and in
+a positive light, but dismisses it prematurely for what I think is a
+completely asinine reason; old, obscure ftruncate() bugs in the
+Linux kernel (see this post on the Mercurial
+mailing list for a more thorough rebuttal of Keith Packard's
+ftruncate() sillyness).
+
+
I only have two real gripes with Git: the Windows support sucks (it
+half-works via cygwin, which doesn't really count), and the
+command-line interface makes me feel stupid.
+
+
The second one is the deal-breaker for me. While I may not be
+Mensa material, I've spent enough time using version control that I
+feel like I should be able get at least the gist of a new VCS in a
+couple of minutes, be comfortable with it within a day or so, and
+proficienct with it within about a week.
+
+
I don't really think that's unreasonable. Even if it is, so what? A
+VCS is a tool, one that's supposed to make my life easier. If I
+can't use it without consulting the documentation every couple of
+minutes then it's just getting in my way.
+
+
I simply refuse to waste my time learning the nuances of an interface
+that is complex for no other reason than the programmer couldn't see
+far enough past their own idiosyncratic whims to long enough provide
+an interface without the learning curve of a black diamond ski slope.
+This is particularly true for an application like Git that has few,
+if any, tangible benefits when compared to it's more intuitive
+counterparts.
+
+
+
The silver lining here is that I eventually stumbled on Mercurial. And
+by stumbled, I mean Richard (richlowe) told me about it
+(just like he told me about Vim, Screen, Mutt, Ruby, and
+a whole
+lot of other cool stuff I use regularly). He knows a lot more about
+version control software than I do, but I didn't really pay any
+attention. At least not until I noticed that Mercurial seemed to be the
+only free VCS that wasn't enclosed in a long and colorful string of
+profanity when he talked about it.
+
+
Anyway, the more I use Mercurial, the more I like it. It meets all of
+the requirements I mentioned above, plus it has the speed and power of
+Git and the simplicity of Subversion and CVS. Mercurial is actively
+developed, has full Windows support, and it includes extensions that add
+support for PGP-signed tags and Quilt-style patch queues.
+
+
The real killer feature for me, though, is that everything I try just
+works. Setting up read-only, web-accessible public repository only took
+a minute or two of reading, and making an entire directory of Mercurial
+repositories available only took a couple more minutes. I had
+comparable experiences with branching, tagging, signing tags, and
+pushing changes to multiple repositories.
+
+
The only warts I've found in Mercurial so far are minor; the web
+interface needs a bit of cleanup, and there should be a straightforward
+way of adding repository defaults like style, contact and archive
+formats via the top-level htwebdir configuration file. The native
+import features are still a bit lacking, although you can use Tailor
+to convert data from all but the most esoteric or convoluted
+repositories.
+
+
That's about all the advocacy I can muster up at the moment. If you're
+interested in reading more about the state of distributed version
+control systems, there are more detailed VCS comparisons here and
+here.
+
+
Note: I've had this post sitting in my queue for months. I
+just brushed off the cobwebs, cleaned up the typos, and posted it.
+In that time Mercurial has picked up a bit of publicity, and development
+has been moving along at a steady clip. I tried to remove the bits that
+no longer apply, but let me know if I missed anything.
+
+
Edit: This article was linked on Reddit; some additional conversation (and
+my responses) can be found in the comment
+thread.
+
+
diff --git a/content/posts/2007-04-06-catering-to-the-lowest-common-denominator.html b/content/posts/2007-04-06-catering-to-the-lowest-common-denominator.html
new file mode 100644
index 0000000..34f7e48
--- /dev/null
+++ b/content/posts/2007-04-06-catering-to-the-lowest-common-denominator.html
@@ -0,0 +1,31 @@
+---
+date: "2007-04-06T15:56:59Z"
+title: Catering to the Lowest Common Denominator
+---
+
+
The KDE team is working on a Dolphin, a new next-generation file
+manager. How many next-generation file managers do we need, anyway?
+They still haven't finished fixing the broken ones from the last
+generation. I just read
+this Ars Technica preview of Dolphin, which aptly states:
+
+
+
In many respects, Dolphin is reminiscent of the Nautilus file browser
+ from the GNOME desktop environment.
+
+
+
Nautilus's defining characteristic has always been the uncanny ability
+to waste a colossal amount of screen real estate to convey irrelevant or
+redundant information. Believe it or not, some of the things I wrote
+about in 2001 still haven't been
+fixed.
+
+
But hey, everything old is new again, right? Check out the
+awesomely efficient use of screen space in this Dolphin picture:
+
+
+
+
+
diff --git a/content/posts/2007-04-07-he-uses-his-camera.html b/content/posts/2007-04-07-he-uses-his-camera.html
new file mode 100644
index 0000000..e91e3e8
--- /dev/null
+++ b/content/posts/2007-04-07-he-uses-his-camera.html
@@ -0,0 +1,9 @@
+---
+date: "2007-04-07T17:34:00Z"
+title: He Uses His camera
+---
+
+
+
diff --git a/content/posts/2007-04-10-a-good-week-for-gadgets.html b/content/posts/2007-04-10-a-good-week-for-gadgets.html
new file mode 100644
index 0000000..6ff1327
--- /dev/null
+++ b/content/posts/2007-04-10-a-good-week-for-gadgets.html
@@ -0,0 +1,19 @@
+---
+date: "2007-04-10T02:54:14Z"
+title: A Good Week for Gadgets
+---
+
+
I mentioned the Nokia N95 in October, and it's finally
+available. It's $750 unlocked, but it includes all sorts of really cool
+stuff; Gismodo has a full review. Also, the Xbox 360
+spring update includes H.264 and partial MPEG4
+support. With any luck that'll allow the 360 to serve as a frontend for
+the media on my network.
+
+
On the 360 front, there's also an update to Gears of War and an
+imminent update to Rainbow Six: Vegas. I don't care too much
+about the Gears of War update, but I've been playing Rainbow Six a lot.
+
+
So yeah, this is a great week for gadgets.
+
+
diff --git a/content/posts/2007-04-13-mozilla-switches-to-mercurial.html b/content/posts/2007-04-13-mozilla-switches-to-mercurial.html
new file mode 100644
index 0000000..22bead2
--- /dev/null
+++ b/content/posts/2007-04-13-mozilla-switches-to-mercurial.html
@@ -0,0 +1,11 @@
+---
+date: "2007-04-13T16:08:04Z"
+title: Mozilla Switches to Mercurial
+---
+
+
Mozilla just picked Mercurial as it's next-generation
+version control system and successor to CVS. The article has the
+details of the elimination process and includes creatively modified
+Mortal Kombat screenshots to illustrate key points.
+
+
diff --git a/content/posts/2007-09-19-blackberry-links-and-a-rant-about-thieving-bastards.html b/content/posts/2007-09-19-blackberry-links-and-a-rant-about-thieving-bastards.html
new file mode 100644
index 0000000..52dd046
--- /dev/null
+++ b/content/posts/2007-09-19-blackberry-links-and-a-rant-about-thieving-bastards.html
@@ -0,0 +1,94 @@
+---
+date: "2007-09-19T07:27:30Z"
+title: Blackberry Links and a Rant About Thieving Bastards
+---
+
+
+
+
+I just got a Blackberry for work, and I've been looking around for
+some simple applications. The entire experience reminds me of looking
+for Windows Mobile software; a bunch of small, money grubbing companies trying to nickel
+and dime people for things they have no business charging for. $5 for
+a crappy theme that you obviously spent 15 minutes on? No thanks, I'll
+make my own. $15 for your E-Book reader? I already made a mistake when
+I bought your shitty software for my
+PDA
+two years ago; I won't be fooled again. What a bunch of thieving bastards.
+
+
+
+The good news is that I did manage to find a couple of decent
+applications. Here they are:
+
+
+
+
MidpSSH: Mobile SSH
+client. Brian dug this one up. The
+source is also a pretty good reference for MIDP development.
+
+
Opera Mini: The
+crackberry comes with a half-assed built-in browser. Opera Mini makes
+up the other half by resizing images and scaling the page so it fits
+nicely on your screen.
+
+Also, Blackberry Freaks
+and GetJar both have lists of free
+software for the Blackberry. Actually, GetJar is useful for any
+J2ME/MIDP-capable
+device; that's where I got most of the software for my Samsung t809.
+There's also midlet.org,
+although everything there seems to be straight out of 2002.
+
+I also managed to get the MIDP SDK up and running
+without too much effort. You basically just uncompress the archive
+wherever, then add the $MIDP_DIR/classes directory to your
+classpath when compiling your .java files. It includes an
+MIDP emulator which works fine for several applications I've tried, and
+also seems to hate the JAD files I'm generating for no apparent reason.
+Oh well. Here are the interesting MIDP and Blackberry development links
+I've dug up:
+
Device programming with MIDP: Great three-part series
+on the MIDP API. The articles pre-date MIDP 2.0 but they include plenty
+of examples and links for additional information. Be sure to click the
+Print link at the bottom to view all the pages concatenated together.
+
+
+
+Fire an email or comment my way if you've got any more useful links.
+
+
diff --git a/content/posts/2007-09-22-streaming-zip-files-with-php.html b/content/posts/2007-09-22-streaming-zip-files-with-php.html
new file mode 100644
index 0000000..3a70295
--- /dev/null
+++ b/content/posts/2007-09-22-streaming-zip-files-with-php.html
@@ -0,0 +1,55 @@
+---
+date: "2007-09-22T05:40:41Z"
+title: Streaming Zip Files with PHP
+---
+
+
The problem: how do you dynamically generate arbitrarily large
+downloadable zip files from PHP? All of the existing solutions I found
+all generate a local temp file, which means the server needs to
+
+
+
have a web-writable directory large enough to store the
+intermediate temp file, and
+
be able to generate and start streaming the entire file before
+the client times out
+
+
+
I wasn't particularly fond of either constraint, so I came up with a
+solution: ZipStream-PHP. ZipStream is a library for dynamically
+streaming dynamic zip files from PHP without writing to the disk at all
+on the server. Using it is dirt simple, too. Here's how:
+
+
# create a new stream object
+$zip = new ZipStream('example.zip');
+
+# then add one or more files
+
+# add first file
+$data = file_get_contents('some_file.gif');
+$zip->add_file('some_file.gif', $data);
+
+# add second file
+$data = file_get_contents('another_file.txt');
+$zip->add_file('another_file.txt', $data);
+
+# finally, finish the stream
+$zip->finish();
+
+
+
You can also set file comments and creation dates, like so:
+
+
$data = file_get_contents('foo.txt');
+$zip->add_file('foo.txt', $data, array(
+ 'comment' => 'this is an interesting comment',
+ 'time' => time() - 3600, # created one hour ago
+));
+
+
+
diff --git a/content/posts/2007-09-25-a-slwo-transition-to-a-new-server.html b/content/posts/2007-09-25-a-slwo-transition-to-a-new-server.html
new file mode 100644
index 0000000..54837c4
--- /dev/null
+++ b/content/posts/2007-09-25-a-slwo-transition-to-a-new-server.html
@@ -0,0 +1,46 @@
+---
+date: "2007-09-25T07:29:04Z"
+title: A Slwo Transition to a New Server
+---
+
+
We're finally upgrading to a new web server. I've spent the last week moving a couple of
+domains a night from our current colo to the new machine. We're getting a
+massive hardware upgrade; the old machine is a 1.7GHz Celeron
+with 512 megs of RAM, and the new machine is a Dual 2.8GHz Xeon with 2
+gigs of RAM.
+
+
In addition to the beefier hardware, I'm also migrating us from Exim
+to Postfix, upgrading to MySQL 5, Apache 2, and PHP 5, and, most
+importantly, segregating web, database, email, and nameserver bits into
+their own VServers.
+
+
The net result of all of this will be a system that's more secure, much
+easier to administer, and significantly faster.
+
+
I'm particularly exited about the move to VServers. We've had a few
+"trouble" users in the past who used more than their fair share of
+CPU, memory, or disk space. With the old system my only real options
+were
+
+
+
ask the person nicely to behave
+
disable the offending content and/or lock out their account, or
+
fix the offending PHP/SQL/whatever by hand
+
+
+
I was never particularly happy with any of those options. With the new
+setup, I can just isolate the offending user's content on a separate
+VServer, and throttle whatever resource they're abusing to an acceptable
+level.
+
+
There are other advantages, too. A couple of past upgrades have had
+"issues". Specifically, a new package I need to install wants to
+upgrade a bunch of core libraries, which, in turn, force upgrades to
+daemons I'd rather not mess with (I'm looking at you, Dovecot).
+The VServers allow us to quickly create throw-away machines to test
+upgrades and to isolate installations and upgrades to the services they
+apply to.
I've been using the migration and some recent side projects as sandboxes
+to try out new things. Here's a semi-random list of useful tidbits I've
+picked up along the way:
+
+
+
Better mod_rewrite magic: Google turns up plenty of mod_rewrite
+examples on automatically stripping the dreaded "www." prefix from
+URLs. Unfortunately, most of them appear to be incorrect. Here's the
+most common solution:
What it's supposed to do is redirect visitors from
+http://www.example.com/whatever to http://example.com/whatever,
+but what it actually does is redirect visitors to
+http://example.com//whatever. It's minor, but it was driving me
+nuts (Arrrrrrr). Anyway, here is the correct solution:
mod_deflate: Saves a ton of bandwidth, works great in IE7 and
+Firefox. The stock settings don't include a couple of common MIME
+types; here's the list I'm using:
+text/html text/plain text/xml text/css text/javascript
+application/x-javascript text/csv
+
XCache: Fast PHP opcode cacher that actually works with recent
+versions of PHP. I tested several Wordpress, Gallery, and
+custom PHP sites without incident, and my (incredibly rough) benchmarks
+showed about a 4-7% increase in mean transfer speed.
+
ExtJS Builder: I decided to test the ExtJS builder for a
+personal project. The interface is a bit finicky; it took me about 5
+tries to get all the dependencies for my project selected. Here are
+the results:
+
+
+
File
Minified
Deflated
+
ext-all.js
468k
125k
+
ext-mine.js
276k
77k
+
+
+
Note: The "Minified" column is the total file size after being shrunk with Douglas Crockford's
+excellent jsmin, and the "Deflated" column is
+the actual transfer size (according to Firebug) after being passed through
+mod_deflate.
+
+
+
Not too shabby for 20 minutes of work. I'm a little bit disappointed
+by the stock mod_deflate compression ratio, so that may need a bit of
+tweaking.
+
Backgrounding Mercurial Hooks: The Mercurial book has an excellent
+chapter on hooks. What it doesn't mention, unfortunately, is how to
+run hooks in the background. I have a semi-lengthy outgoing hook
+(roughly equivalent to a client-side post-commit for you Subversion
+weenies) that connects to a web server via ssh and performs some
+deployment tasks, and all attempts at backgrounding a shell script
+eluded me. Well, it turns out Mercurial has an extra hidden file
+descriptor that has to be closed in order to background a hook. So
+here's my down and dirty client-side background deployment hook:
+
+
+#
+# outgoing hook script that connects to web server and deploys
+# the latest site from tip. It is run in the background after a
+# successful 'hg push'.
+#
+
+# options
+opt = {
+ # remote hostname
+ 'host' => 'web',
+
+ # remote command (relative to my home directory)
+ 'cmd' => 'bin/update_site.sh',
+
+ # client-side log (set to /dev/null to disable)
+ # 'log' => '/dev/null',
+ 'log' => '/tmp/site_update.log',
+
+ # delay (in seconds) before update
+ 'delay' => 3,
+}
+
+# fork and run update in background
+pid = fork {
+ # close stdin, stdout, and stderr
+ $stdin = $stdin.reopen('/dev/null', 'r')
+ $stdout = $stdout.reopen(opt['log'], 'a')
+ $stderr = $stderr.reopen(opt['log'], 'a')
+ $defout = $stdout
+
+ # close all other file descriptors
+ # NOTE: mercurial appears to have a hidden fd laying
+ # around somewhere, so this evil is necessary...
+ (3..99).each { |fd| IO.new(fd).close rescue nil }
+
+ # wait for push to finish
+ # (this should poll the hg server instead, to handle
+ # lengthy pushes)
+ sleep opt['delay']
+
+ # run update command and exit
+ args = ['ssh', opt['host'], opt['cmd']]
+ exec(*args)
+
+ # never reached
+ exit 0
+}
+
+# reap child and exit
+flags = Process::WNOHANG | Process::WUNTRACED
+Process.waitpid(pid, flags)
+
+
+
+
+Update: Markdown really mangled my markup this time around. Usually it's pretty tolerant, but apparently this post was just a bit too much. Oh well...
+
+
diff --git a/content/posts/2007-10-15-llvm-is-a-baby-killer.html b/content/posts/2007-10-15-llvm-is-a-baby-killer.html
new file mode 100644
index 0000000..0bd1623
--- /dev/null
+++ b/content/posts/2007-10-15-llvm-is-a-baby-killer.html
@@ -0,0 +1,57 @@
+---
+date: "2007-10-15T05:38:29Z"
+title: LLVM is a Baby Killer
+---
+
+
+
+I've spent some time sifting through the documentation for LLVM, and
+I'm both impressed and horrified. I'm not sure I've ever seen so much
+documentation about something that looks really cool that I'm not
+interested in. I've been reading the dragon book and Advanced Compiler Design and Implementation, and I wanted to use LLVM to generate a simple
+runtime JIT compiler, but I can't seem to find the necessary
+documentation.
+
+
I see plenty of documentation on the IR, the various command-line tools,
+and just about everything else LLVM-related except for a straightforward
+tutorial that explains how to
+
+
+
blast either opcodes or IR at the LLVM API, and
+
have LLVM either emit an ELF/blob/whatever or execute the result.
+
+
+
I did manage to find a couple of examples that give me half of what I
+want. The source code ships with a sample Brainfuck compiler which
+reads an input bf file and emits LLVM IR. There are a couple more
+examples that show how to construct a basic JIT, then create some
+functions that do frustratingly simple things like calculate Fibonacci
+numbers or add two integers together, but nothing that's too much more
+detailed than that.
+
+
Oh, did I mention that the online API documentation is broken?
+
+
A bit of googling turned up libjit, which is almost exactly what I want.
+It's got a simple C API (instead of the nightmarishly bloated C++
+monstrosity that is the LLVM API), a simple build and link system, and
+simple, straightforward and complete documentation. In
+short, it's everything that I want.
+
+
It's also GPL-licensed, which makes it almost completely unusable. I
+found this 2006 email exchange comparing libgit and LLVM. The
+author, who apparently works on libgcj, mentions all of my problems with
+LLVM (sans the anti-C++ bias).
+
+
My other crazy idea was to generate C as an IR and blast it at
+libtcc, but with my limited fiddling I couldn't get to do anything
+other than segfault on me. Incidentally, the documentation for libtcc
+is a single file and it's still better than what's available for LLVM.
+
+
So here's my question: Is there a decent book or tutorial that walks
+through the LLVM API? I've Googled to the end of the earth and back,
+I've seen the Stacker documentation, and I've read through
+everything in the LLVM documentation section, and none of it was
+what I'm looking for. I'm open to suggestions...
+
+
diff --git a/content/posts/2007-10-15-project-honey-pot-bindings-php-and-ruby.html b/content/posts/2007-10-15-project-honey-pot-bindings-php-and-ruby.html
new file mode 100644
index 0000000..b176ae8
--- /dev/null
+++ b/content/posts/2007-10-15-project-honey-pot-bindings-php-and-ruby.html
@@ -0,0 +1,74 @@
+---
+date: "2007-10-15T03:17:18Z"
+title: Project Honey Pot Bindings (PHP and Ruby)
+---
+
+
Project Honey Pot is a DNSRBL to preemptively block comment
+spammers, harvesters, and other nefarious types on the web. This
+afternoon I tested 50ish "spammy" IP addresses that Akismet missed
+and Honey Pot caught about 10% of them. Unfortunately, I don't have a
+good balanced corpus of comment spam to do a full comparison between the
+two, so I'll be using both together for the time being.
+
+
Anyway, I've been sitting on mostly complete Ruby Honeypot
+bindings for a while, but this evening I whipped up
+some PHP bindings too.
+
+
Note that you'll need to create a Project Honey Pot account to get an
+API key (but don't worry, it's free). Without any further ado:
+
+
# sample API key
+$api_key = 'asdf1234asdf';
+
+# ip/hostname to check
+# (this will almost always be $_SERVER['REMOTE_ADDR'])
+$addr = '127.1.10.1';
+
+# create new honeypot instance
+$honeypot = new Honeypot($api_key);
+
+# check address
+if ($honeypot->is_ok($addr))
+ echo 'address is okay';
+else
+ echo 'address is NOT OKAY';
+
+
+
You can override the default age and threat thesholds by passing
+additional arguments to the constructor, like this:
+
+
$honeypot = new Honeypot($api_key, array(
+ 'ok_age' => 300, # set age threshold to 300 days
+ 'ok_threat' => 50, # set threat level threshold to 50
+));
+
+
+
Using the check() method instead of is_ok() gives you more detailed
+results. Say you're only concerned about fairly recent harvesters, and
+not comment spammers or anything else:
+
+
# check the address
+$result = $honeypot->check($addr);
+
+# check for recent harvester results with a high threat level
+if ($result && $result['is_harvester'] &&
+ $result['age'] < 30 && $result['threat'] > 128) {
+ echo 'address is NOT OKAY';
+} else {
+ echo 'address is okay';
+}
+
If you're using Wordpress, someone else already wrote a handy http:BL
+Wordpress plugin. I didn't see a decent generic Honeypot l
+ibrary, which is why I wrote this one.
+
+
diff --git a/content/posts/2007-10-16-new-version-of-reddit-content-filter.html b/content/posts/2007-10-16-new-version-of-reddit-content-filter.html
new file mode 100644
index 0000000..83472bd
--- /dev/null
+++ b/content/posts/2007-10-16-new-version-of-reddit-content-filter.html
@@ -0,0 +1,23 @@
+---
+date: "2007-10-16T08:11:09Z"
+title: New Version of Reddit Content Filter
+---
+
+
Reddit updated their site layout yesterday, which broke my
+Reddit Content Filter Greasemonkey script. I just posted a new
+version a few minutes ago, along with my Reddit Navigational Access Keys
+script, which I apparently never posted to User Scripts.
Ever tried to read and write cookies in Javascript? If you have, then
+I'll wait until you've stopped frothing at the mouth and
+pounding your keyboard.
+
+
...
+
+
Feeling better? Good. I just released the first public version of
+EasyCookie, a simple cookie library for Javascript. Using
+EasyCookie is, well, easy. For example, here's how you get a cookie:
+
+
// get a cookie
+val = EasyCookie.get('my_cookie');
+
+
+
And here's how you set one:
+
+
// set a cookie
+val = 'a random value that i want to save as a cookie';
+EasyCookie.set('my_cookie', val);
+
+
+
And, if you haven't already guessed, here's how your remove a cookie:
+
+
// remove a cookie
+EasyCookie.remove('my_cookie');
+
+
+
But what about all the extra crap you usually have to fight to get
+working, like the domain, path, and expiration? Don't panic!
+EasyCookie.set takes a hash of additional attributes as an optional
+third argument. Here's another example of EasyCookie.set, this time
+with the optional hash:
+
+
// value to set
+val = '99 bottles of beer on the wall, 99 bottles of beer!';
+
+// set a cookie that expires in 10 days, and limit the scope to
+// "https://foo.example.com/some/path"
+EasyCookie.set('my_cookie', val, {
+ // expires in 10 days
+ expires: 10,
+
+ // limit cookie to domain 'foo.example.com'
+ domain: 'foo.example.com',
+
+ // limit cookie to path '/some/path'
+ path: '/some/path',
+
+ // restrict cookie to secure pages only
+ secure: true
+});
+
+
+
Checking to see if cookies are enabled just got a whole lot simpler,
+too:
+
+
// are cookies enabled?
+enabled = EasyCookie.enabled;
+
+// harass user with annoying dialog about their cookie status
+alert('Cookies are ' + (enabled ? 'enabled' : 'not enabled'));
+
+
+
Best of all, EasyCookie is BSD licensed, and the minified
+version weighs in at a measly 1873 bytes. Anyway, here ya go:
+ PS. Yes, I realize the link above are to version 0.2.1 of EasyCookie,
+ even though this is the first public release. In internet years the
+ backend to my page is older than your grandmother. Imagine trying to
+ explain how to release software to your grandmother.
+
+
diff --git a/content/posts/2007-10-17-welcome-to-the-next-generation.html b/content/posts/2007-10-17-welcome-to-the-next-generation.html
new file mode 100644
index 0000000..e6c8bfc
--- /dev/null
+++ b/content/posts/2007-10-17-welcome-to-the-next-generation.html
@@ -0,0 +1,18 @@
+---
+date: "2007-10-17T08:52:04Z"
+title: WELCOME TO THE NEXT GENERATION
+---
+
+
+I got sick of the page being so slow, so I this morning I made some fairly destructive slash-and-burn style changes under the hood. Things should be mostly working again, with the following exceptions:
+
+
+
+
Themes: They're busted until I get a chance to patch them up. I have no idea what will happen if you try and use them, but probably nothing good (for you, not me).
+
New Accounts: You can wait a day or so to harass me about my latest inflammatory post. Or send an email instead.
+
Screenshots: Yeah my desktop from 1998 has a lower resolution than your cell phone. So what?
+
+
+
+There may also be other stuff broken, too. I've tried to keep URLs for articles and whatnot the same, but your mileage mamy vary. Today is the first of several iterations away from the almost decade-old code this site is running.
+
I've been planning to build an HTPC for quite a while now, and I'm
+finally doing it. I got an Antec Fusion Black case for my
+birthday, and I went out and bought the rest of the parts yesterday
+evening. Here's the hardware I'm using:
The other pieces were all spare parts and aren't particularly
+interesting. This post is about the Antec Fusion Black. Let's start
+with the pros:
+
+
+
Built-in case fans are extremely quiet.
+
Enough room for a standard ATX power supply.
+
Same width and style as standard home theater gear.
+
Front-mounted USB, Firewire, and HD audio ports.
+
Built-in IR port.
+
Built-in programmable LCD.
+
Several in-case cable ties to keep things properly routed and
+organized.
+
+
+
And the cons:
+
+
+
Three-compartment design makes running anything other than power and
+SATA cables a bit of a hassle. It took a bit of magic to thread a
+standard EIDE cable from the motherboard compartment to the DVD/LCD
+compartment, for example.
+
The IR receiver is for MCE-compatible remotes only; it doesn't work
+with standard universal remotes, so don't even bother.
+
Linux support sucks. I believe you can get everything working, but
+doing so requires a bit of effort. See below for more information.
+
The included manual is horribly out of date and contains errors and
+omissions. Your best bet is to use the manual as toilet paper and
+download the PDF from Antec's product page, although that
+manual is still dated. Both versions claim that the motherboard has a
+3-pin power supply fan signal connector cable, and no such cable
+exists in my case. There is also a mysterious two-pin purple and
+black cable labeled "M/B PWR" that is not documented in either manual
+(this thread on AVS Forums explains what it's for).
+
Non-standard power connection for the LCD and IR receiver. This only
+matters if you need to replace the power supply; see below.
+
+
+
Fortunately I've already decided to buy a Harmony remote, so the MCE
+remote requirement is a minor inconvenience and an excuse to go buy a
+new gadget.
+
+
The most irritating problem so far is that the power supply fan is
+extremely loud. I think my PSU is probably defective, because it
+doesn't make any sense to design a sound-isolating case with extremely
+quiet case fans and then put a power supply that sounds like an air raid
+in there. Alternatively, the noise might be related to the non-existent
+3-pin power supply fan signal connector cable mentioned above.
+
+
Anyway, I don't really want to send the case back, so I ran to
+Microcenter and picked up a new silent power supply. That's when I
+noticed the non-standard cable that powers the LCD/IR receiver, and the
+following blurb tucked away in the manual:
+
+
+
Note: If you choose to swap the included power supply with another
+ power supply, please call Antec Customer Service to purchase a special
+ 24-pin Extender with the 3-pin connector to power the display.
+
+
+
I've already ordered the adaptor from Antec's web site; I figure even if
+I figure out how to quiet the existing power supply it's worth having so
+I don't end up without the LCD and IR port if the power supply failure
+in the future.
+
+
Next up, Antec Fusion Linux support. The LCD is not officially
+supported in Linux by Antec. The good news is that the LCD in the
+Fusion V2/Black is better than the VFD display included in the original
+V1 Antec Fusion case. Unfortunately it is much harder to find
+documentation on the newer display. The newer display also requires a
+couple of patches and some config file twiddling.
+ [imonlcd]
+ Device=/dev/lcd0
+ Contrast=300
+ # do NOT set the Size, if you do it won't work
+ #Size=16x2
+
+
Make sure the LIRC modules are loaded:
+
+
+ modprobe lirc_dev && modprobe lirc_imon
+
+
Start up lircd and LCDd, and things should be working.
+
+
+
If you're using 2.6.23.1 or newer the patches above will not work;
+you'll need these updated patches against the CVS version of LIRC.
+You'll still need to follow all the steps above, even with the updated
+patches.
+
+
That's all for tonight. It looks like configuring the motherboard in
+will be a battle too; I'll have more details as events warrant.
+There was a suggestion in the comments on User Scripts about auto-downmodding blocked articles. I kind of like the idea. Does anyone have any opinions on that? Comments are broken at the moment, but feel free to email me.
+
diff --git a/content/posts/2008-02-05-as-if-things-weren-t-broken-enough-around-here.html b/content/posts/2008-02-05-as-if-things-weren-t-broken-enough-around-here.html
new file mode 100644
index 0000000..804dc30
--- /dev/null
+++ b/content/posts/2008-02-05-as-if-things-weren-t-broken-enough-around-here.html
@@ -0,0 +1,12 @@
+---
+date: "2008-02-05T04:47:12Z"
+title: '...as if things weren''t broken enough around here'
+---
+
+
+Hello from the new server!
+
+
+
+I managed to glom things together just enough to get the bit-rot that is this site's code running on the new server. All the usual caveats about brokenness apply.
+
diff --git a/content/posts/2008-02-16-custom-firmware-on-the-psp.html b/content/posts/2008-02-16-custom-firmware-on-the-psp.html
new file mode 100644
index 0000000..d9fd3da
--- /dev/null
+++ b/content/posts/2008-02-16-custom-firmware-on-the-psp.html
@@ -0,0 +1,171 @@
+---
+date: "2008-02-16T15:37:32Z"
+title: Custom Firmware on the PSP
+---
+
+
Last night I installed a custom firmware (CFW) on my PSP. The
+custom firmwares allow you to run unsigned homebrew (e.g. non-Sony
+sanctioned) applications.
+
+
Applications
+
+
The PSP homebrew community has been pretty active; there are several
+useful applications and emulators for lots of older systems. There are
+even emulators for obscure systems like the ColecoVision and
+Neo Geo.
+
+
Here's what works for me so far, in no particular order:
J2ME/MIDP emulator (e.g Mobile Java, or the crappy games on
+your cell phone)
+
+
+
I also tried the Genesis, NES, and N64 emulators, but they
+aren't working yet. Here's a picture of the SNES emulator at work:
+
+
+
+
+
+
+ Playing SNES on a PSP
+
+
+
+
The custom firmware also allows you to dump UMDs and run them
+from a memory stick. Since it's pretty much impossible to fit a PSP and
+8 UMDs in the your pockets without looking like a complete tool, I'm
+going to offload as many UMDs as I can into the 3GB remaining on my
+memory stick.
+
+
The next section explains the firmware installation process. If you
+don't have a PSP, you may still find my creatively ominous safety
+warnings entertaining.
+
+
Installation
+
+
Installing the custom firmware varies in complexity depending on the
+model of PSP model and version of the original firmware. If you're
+fortunate enough to have an older "phat" PSP (e.g. the larger black
+model) that's running firmware 1.00 or 1.50, then installing the custom
+firmware is fairly straightforward.
+
+
If you know someone with a PSP who already has the custom firmware
+installed, then the installation process is still easy enough, because
+they can use their PSP to help you with yours.
+
+
If you've got a newer PSP Slim (the smaller white model, like the one in
+the picture above) and/or are running a newer firmware, then there are
+no easy options left, so get ready for the comically unpleasant
+experience below.
+
+
In order to install the custom firmware, you'll need a spare battery and
+a spare memory stick. For the love of Douglas Adams, please do not
+use this post as a guide! There are several web sites
+(here and here) that cover the entire installation
+process in far more detail and with the appropriate safety precautions.
+If you mess this up you will turn your PSP into a lifeless and
+possibly explosive plastic brick.
+
+
The basic, high-level steps are as follows:
+
+
+
Create a Pandora's battery. This is a battery that
+has been modified to make the PSP into boot from the memory stick.
+
Create a Magic Memory Stick. This is a memory
+stick that has been specially formatted to boot and perform a
+firmware upgrade. Note that there are some limits on the capacity
+and brand of memory stick that can be used; see the guides above for
+more details.
+
With the PSP powered off and the battery removed, insert the
+magic memory stick into the PSP.
+
Insert the Pandora's battery. The PSP will power on automatically
+boot from the magic memory stick.
+
Use the software on the magic memory stick to install the custom
+firmware. On the PSP Slim the display is blank, so you just have to
+hit X and wait. The lights on the front of the PSP will blink for
+several minutes. The PSP will automatically power off when the
+installation is finished.
+
Remove the Pandora's battery and the magic memory stick. The
+memory stick can be reformatted and used as usual. The Pandora's
+battery can not, because some of the battery's safety features are
+disabled as part of the conversion process. In other words, do
+not attempt to use the Pandora's battery as a regular battery unless
+you want your PSP to melt into a smoldering puddle of goo.
+
Power on the PSP using a regular battery or the power cable.
+Congratulations, you are now running the custom firmware.
+
+
+
The hardest part of this process is creating the Pandora's battery. If
+you know someone with a PSP that already has the custom firmware
+installed, then they can run an application on their PSP to temporarily
+"soft-mod" a regular battery into Pandora's battery.
+
+
If you don't know anyone with a PSP that already has the custom firmware
+installed, then the only way to convert a regular battery into a
+Pandora's battery is to "hard-mod" it; that means cutting open the
+battery casing and disconnecting one of the leads on the internal
+circuitry.
+
+
The guides I read (see above) have plenty of pictures, but I was still
+surprised by how small the pieces actually were. Here's a picture I
+just took of my Pandora's battery, including a ruler and quarter as
+size references:
+
+
+
+
+
+
+ Inside a Pandora's Battery
+
+
+
+
Creating a Magic Memory Stick is much simpler. Basically you:
+
+
+
format the memory stick in a special way (using mspformat)
+
copy the necessary firmware installation and upgrade files into place
+
generates an Initial Program Load (IPL) file,
+
copy the generated IPL file to the first sector of the memory stick
+(using mspinst)
+
+
+
If you're using Windows, the "TotalNewbi Installer" and
+"Pandora Easy GUI" tools can automate this process. In
+theory, anyway. When I tried to use them in my Windows XP VMWare
+instance, they both had problems. The TotalNewbi Installer simply
+refused to work, and the Pandora Easy GUI blue-screened XP each
+time I ran it.
+
+
Here's what finally worked:
+
+
+
used Pandora Easy GUI to copy the firmware files into place and
+generate the installer definition file (mspinst.idl)
+
used dd in Linux to copy mspinst.ibl into the first sector of the
+Memory Stick
+
+
+
The good news is that creating the Pandora's Battery and Magic
+Memory Stick are the hardest steps in the process. Once you get past
+them, everything else is relatively straightforward. Even better, the
+process can be used to install custom firmware on any PSP, regardless of
+hardware model or firmware version.
+I just released EasingJS 0.1.1, a port Robert Penner's ActionScript Easing library to JavaScript. EasingJS allows you to easily generate smooth and stylish animation or color transitions. For some examples, check out the test page.
+
+
diff --git a/content/posts/2008-05-15-don-t-use-extjs.html b/content/posts/2008-05-15-don-t-use-extjs.html
new file mode 100644
index 0000000..80ad15f
--- /dev/null
+++ b/content/posts/2008-05-15-don-t-use-extjs.html
@@ -0,0 +1,408 @@
+---
+date: "2008-05-15T07:26:16Z"
+title: Don't Use ExtJS
+---
+
+
+A couple of years ago I recommendedYUI and Ext (formerly
+YUI-Ext). I've changed my mind. Don't use Ext at all. The Ext license
+has changed four times since its inception, and each time the license
+has become more restrictive.
+
+
History
+
+
Ext was originally created as an extension to YUI. It was
+BSD-licensed, just like YUI. YUI-Ext added several sorely-needed
+features to YUI. The most notable additions were a layout system, a
+Tree View widget and a Data Grid widget (YUI has since added
+each of these, although the YUI widgets are still less flexible than
+their Ext counterparts). Eventually support was added for jQuery
+and Prototype as well. The team dropped the "YUI-" prefix, and
+YUI-Ext became Ext.
+
+
Ext 1.0 was relicensed under the LGPL. Although switching from the
+BSD license to the LGPL is relatively innocuous, it is still significant
+because the LGPL is more restrictive than the BSD license.
+
+
Eventually the Ext team changed the license again. The new license was
+a custom license that granted conditional LGPL usage rights. Basically
+the LGPL usage clauses applied, but only if you weren't trying to
+develop a library or an Ext clone.
+
+
Confused? Yeah, me too. Here's the text from the old Ext "Open Source
+License":
+
+
+ Ext is also licensed under the terms of the Open Source LGPL 3.0 license. You
+ may use our open source license if you:
+
+
Want to use Ext in an open source project that precludes using non-open source software
+
Plan to use Ext in a personal, educational or non-profit manner
+
Are using Ext in a commercial application that is not a software
+ development library or toolkit, you will meet LGPL requirements and you do not
+ wish to support the project
+
+
+
+
A lot of open source developers were understandably confused
+by this hybrid license. The biggest problem was that it wasn't clear
+whether this license was compatible with other Open Source licenses. It
+also wasn't clear whether Ext could be legally distributed with Open
+Source software, since the license only granted LGPL usage rights, and
+not LGPL distribution rights.
+
+
To address these complaints, the Ext team changed the license again:
+the latest version of Ext is licensed under the GPLv3. This latest
+change complicates things quite a bit for many users, as we'll see in
+the next section.
+
+
Problems
+
+
The GPL is far more restrictive than the BSD license and LGPL. It is
+rarely used for libraries, because the viral clause would effectively
+the library from being used for any non-GPL software. In fact, these
+problem were addressed over 16 years ago by creating the LGPL:
+
+
+ By 1990, it was becoming apparent that a less restrictive license
+ would be strategically useful for some software libraries; when
+ version 2 of the GPL (GPLv2) was released in June 1991, therefore, a
+ second license - the Library General Public License (LGPL) was
+ introduced at the same time and numbered with version 2 to show that
+ both were complementary. The version numbers diverged in 1999 when
+ version 2.1 of the LGPL was released, which renamed it the GNU Lesser
+ General Public License to reflect its place in the GNU philosophy.
+
+
+
Who is affected by this change? In no particular order:
+
+
+
Extension Authors: Older Ext user extensions could be licensed as
+the author saw fit. This is no longer true for the latest version
+of Ext; new user extensions must be GPL-licensed, because the viral
+clause prohibits using Ext with non-GPL licenses.
+
Commercial Users: The previous licenses, even the questionable
+custom license, allowed Ext to be used in closed source commercial
+applications. This is no longer true for the latest version of Ext,
+because the viral clause prohibits using Ext with non-GPL commercial
+licenses.
+
Non-GPL Open Source Developers: The BSD and LGPL-licensed versions
+of Ext could be used with other non-GPL software. This is no longer
+true for the latest version of Ext, because the viral clause
+prohibits using Ext with non-GPL licenses.
+
+
+
Things get even murkier when you consider linking and distribution.
+Does generating a dynamic page count as linking to Ext? Does any public
+web application automatically count as distribution? What about
+applications which use Ext to and access a common APi, such as a SOAP
+endpoint or RSS feed?
+ If you are generating any markup or javascript code via the server in a
+ page SPECIFICALLY designed for Ext, then that server code will have to
+ be GPL as well.
+
+
+
+ For example:
+
+
+
+
+ Suppose you have an index.php that includes Ext JS. According to the
+ FSF, in that case index.php would be also under GPL since it is using
+ ext. Since it must be GPL, it's source must be distributed. Since it
+ is GPL, the "viral" effect of GPL is now in effect and any thing that
+ uses index.php (if anything) on the serverside would also fall under
+ the GPL. (Note: Note this is a pretty gray area)
+
+
+
+ Suppose you are using server-side code to generate javascript that
+ interacts with Ext JS. That code must also be GPL.
+
+
+
+
+ Like MySql and other GPL software the way to use GPL code without
+ having to license under GPL is to not bundle or distribute the GPL
+ code with your application. If you instead have the end user
+ (developer?) download and install ext js on their own, they are then
+ bound to the license and not you or your software.
+
+
+
+ For those seeking an FAQ, we have defined and explained some of the
+ reasoning and license implications under these 2 pages:
+
+ It's worth noting that the examples given at the beginning of this
+ post are just my opinion and it is impossible for us to analyze
+ everyone's usage and say whether or not someone "complies" with the
+ GPL. That really is a task for an attorney or even someone with
+ better knowledge of your application and how Ext JS is used.
+
+
+
+ In the end, we want Ext JS to be open source friendly and still have
+ a good business model in place to grow. The old Ext License was not
+ open source friendly and pretty much killed all options for use in
+ open source projects. That wasn't our goal so we had to address it.
+
+
+
+
There are several problems with the statements above. The biggest one
+is that the original BSD license and subsequent LGPL license had none of
+this ambiguity.
+
+
In other words, the problem the Ext team is trying to fix is one they
+created themselves. If that wasn't bad enough, the solution actually
+hurts many Open Source developers far more than it helps.
+
+
In an attempt to clarify the situation for non-GPL Open Source
+developers, I posted several questions in the Ext license thread. I
+also created a post on Reddit about the license change and
+summarized my questions there:
+
+
+
+ As of page 8 of the thread on the license change I have yet to receive a
+ response, simple or otherwise, to any of my comments:
+
+ The new license prevents Open Source software that is using a
+ license other than the GPL from using Ext. Applications which use
+ popular Open Source licenses like the LGPL license, BSD license, MIT
+ license, and the Artistic license would be required to either
+ re-license under the GPL, carefully design their application to meet
+ the requirements in your post, use an older LGPL-licensed version of
+ Ext, or move to another library entirely.
+
+ What about authors who which to provide their software under a
+ license that is more permissive than the GPL, such as the MIT or BSD
+ licenses?
+
+
+
+ And this
+ one, which was directly in response to Jack Slocum, the primary
+ author of ExtJS:
+
+
+
+
+ Hi Jack,
+
+
+
+ I can see how switching to a license without exceptions would make
+ things simpler, but what about those of us who release Open Source
+ software under non-GPL licenses such as the BSD, MIT, and Artistic
+ licenses?
+
+
+
+
+ I've been an Ext user since its inception as YUI-Ext, but the fact that
+ I cannot seem to get a straight answer to a simple question makes me
+ wary and extremely skeptical.
+
+ It's important to understand that OSS developers are not their target
+ audience at all. I'm 100% certain that we'll never get a clear
+ response. They're using 'open source' as a buzzword selling point to
+ lure companies in, befuddle them with confusing viral licensing, and
+ obligate them (through the obvious balking that the corporate lawyers
+ will do) to get them to buy a full, corporate, license. It's very
+ sneaky, quite disingenuous, and paints a bad picture for open source
+ development as a whole.
+
+
+
It's been over three weeks since these this exchange on Reddit. None of
+my questions have been answered on the Ext license pages or in the
+68-page license thread on the Ext forums.
+
+
Rationale
+
+
According to the Ext license page, Ext licensing is based on the
+principle of "Quid Pro Quo", or "something for something":
+
+
+
+ Dual Licensing is based on the principle of Quid Pro Quo -
+ "something for something". In return for the advantages you realize
+ from using an Ext product to create your application, we require
+ that you do one of the following:
+
+
+
+
+ Contribute to the continued development of the product by
+ purchasing commercial licenses from Ext. This option secures you
+ the right to distribute your application under the license terms
+ of your choice
+
+
+
+ Contribute to the Open Source community by placing your
+ application under an Open Source license (e.g. GPL v3). This
+ option secures all users the rights to obtain the application's
+ full source code, modify it, and redistribute it.
+
+
+
+
+
The justification for using the GPLv3 instead of the LGPL is addressed
+on the Ext license FAQ page:
+
+
+ We considered once again releasing under straight LGPL but it was not
+ an option as a business. We tried that with version 1.0 and found out
+ quickly that it enabled others (e.g. large commercial entities) to
+ take our work, wrap it up and sell it as their own. With no mention of
+ us at all. We, as a business with a full time team of talented
+ developers, can not exist under those circumstances. We would quickly
+ become diluted and competing with ourselves.
+
+
+
The concern about others taking their work and selling it without
+attribution is particularly ironic, considering:
+
+
+
Ext only exists because a large corporation (Yahoo!) decided to
+share their hard work under a permissive open source license
+
Significant portions of Ext, including the Event
+handling code and reset.css, were copied wholesale from YUI
What do the projects above have in common? That's right, they are all
+in the public domain or available under extremely permissive Open Source
+licenses.
+
+
The Ext team is certainly entitled to license and sell their software
+any way they see fit. However, it is hypocritical and dishonest to
+complain about other people taking your work and selling it as their own
+when you take other peoples' work and either sell it as your own or
+relicense it under an extremely restrictive license.
+
+
It is tempting to attribute this entire fiasco to a simple
+misunderstanding on the part of Jack Slocum and the Ext team. Here's
+what I had to say on Reddit:
+
+
+ It is a bit disconcerting that Ext has such strong roots in existing
+ Open Source software, and yet the project seems at best partially
+ indifferent, and at worst, outright hostile to the Open Source
+ community.
+
+
+
Unfortunately, according to John Resig, this isn't the first time that
+there have been problems with the Ext team:
+
+
+
+ We (the jQuery project) worked hard with them to try and fix bugs
+ and add features for an ExtJS integration layer. They turned around
+ and built their own, specialized, library (removing the need for any
+ of our work) and then mutated the licensing into this bizzaro scheme
+ that they have now. We can't, in good consciousness, even recommend
+ their library anymore due to its very nature. On top of this they
+ ended up hiring our lead evangelist to promote their work. I can't
+ speak for everyone on the team but I feel quite frustrated and used.
+
+
+
+ They're providing a great disservice to the Open Source community in
+ general. They consume with reckless abandon, it's impossible to even
+ hope to borrow code from them, and they turn it all into a
+ money-making machine. No aspect of that sits well with me.
+
Update the Ext license FAQ with detailed information about
+which Open Source licenses are compatible with Ext, including
+specific usage scenarios
+
Add a list of Open Source software which Ext has borrowed from to
+the license page and to the license information included in
+the download
+
Put older versions of Ext back on the download page
+
+
+
Finally, here are a list of Ext alternatives. None are as nice as Ext,
+but they are all available under permissive licenses and they each have
+an active and enthusiastic user community:
I just released PersistJS, a client-side JavaScript persistent storage
+library. Features include:
+
+
+
Small (9.3k minified, 3k gzipped)
+
Standalone: Does not need any additional browser plugins or
+JavaScript libraries to work on the vast majority of current
+browsers.
+
Consistent: Provides a consistent, opaque API, regardless of
+the browser.
+
Extensible: Custom backends can be added easily.
+
Backwards Compatible: Can fall back to flash or cookies if no
+client-side storage solution for the given browser is available.
+
Forwards Compatible: Supports the upcoming versions of Internet
+Explorer, Firefox, and Safari (Opera too, if you have Flash).
+
Unobtrusive: Capability testing rather than browser detection, so
+newer standards-compliant browsers will automatically be supported.
+
+
+
If you already know why this is awesome, then you can skip
+straight to the download. If you're scratching your head,
+then read on...
+
+
Why This is Awesome
+
+
Why use PersistJS? What's the problem with using cookies directly or
+simply requiring Flash?
+
+
Currently the only reliable cross-platform and cross-browser mechanism
+for storing data on the client side are cookies. Unfortunately, using
+cookies to store persistent data has several problems:
+
+
+
Size: Cookies are limited to about 4 kilobytes in size.
+
Bandwidth: Cookies are sent along with every HTTP transaction.
+
Complexity: Cookies are difficult to manipulate correctly.
+
+
+
Modern web browsers have addressed these issues by adding non-Cookie
+mechanisms for saving client-side persistent data. Each of these
+solutions are simpler to use than cookies, can store far more data, and
+are not transmitted along with HTTP requests. Unfortunately, each
+browser has addressed the problem in a different and incompatible way.
+There are currently 4 different client side persistent data solutions:
+
+
+
globalStorage: Firefox 2.0+, Internet Explorer 8
+
localStorage: development WebKit
+
openDatabase: Safari 3.1+
+
userdata behavior: Internet Explorer 5.5+
+
+
+
Some developers have attempted to address the client side storage
+issue with the following browser plugins:
+
+
+
Adobe Flash
+
Google Gears
+
+
+
The problem with relying on plugins, of course, is that users without
+the plugin installed miss out on the feature in question, and your
+application is dependent on software from a particular vendor. Google
+Gears, for example, is not widely deployed. Flash is, but it has
+problems of its own:
+
+
+
Many users block Flash or require a click in order to enable
+flash content; this makes Flash unsuitable as a transparent,
+client-side data store.
+
Flash is notoriously unreliable on newer 64-bit machines.
+
Some businesses block Flash content as a security measure.
+
+
+
Anyway, if we include Gears and Flash, that means there are no less than
+6 incompatible solutions for storing client-side persistent data.
+
+
The most notable attempt at addressing this problem is probably Dojo
+Storage. Unfortunately, Dojo Storage does not support Internet Explorer
+without Flash, and it does not support Safari or other WebKit-based
+browsers at all (at least, not without Flash). Also, Dojo Storage is
+not standalone; it requires a several other Dojo components in order to
+operate.
+
+
PersistJS addresses all of the issues above. It currently supports
+persistent client-side storage through the following backends:
+
+
+
flash: Flash 8 persistent storage.
+
gears: Google Gears-based persistent storage.
+
localstorage: HTML5 draft storage.
+
whatwg_db: HTML5 draft database storage.
+
globalstorage: HTML5 draft storage (old spec).
+
ie: Internet Explorer userdata behaviors.
+
cookie: Cookie-based persistent storage.
+
+
+
Each backend exploses the exact same interface, which means you don't
+have to know or care which backend is being used.
+
+
Examples
+
+
Here are some simple examples of PersistJS in use:
+
+
// create a new client-side persistent data store
+var store = new Persist.Store('My Data Store');
+
+// pretend data
+var data = "pretend this is really long data that won't fit in a cookie";
+
+// save data in store
+store.set('saved_data', data);
+
+
+
That's all there is to creating a persistent store and adding some data
+to it. Fetching data back from the store uses a callback function (to
+support asyncronous backends), but it's still pretty simple to use:
+
+
// get data back from store, and prompt user with it
+store.get('saved_data', function(ok, val) {
+ if (ok)
+ alert('saved data = ' + val);
+});
+
+
+
Removing data is pretty easy too:
+
+
// remove data from store
+store.remove('saved_data');
+
+
+
Although it isn't necessary, you can also get some information about the
+detected backend using the Persist.type and Persist.size attributes:
+
+
// build alert message
+var info = [
+ 'Backend: ',
+ Persist.type || 'none',
+ ', ',
+ 'Approximate Size Limit: ',
+ (Persist.size < 0) ? 'unknown' : Persist.size
+].join('');
+
+// prompt user with information
+alert(info);
+
+
+
Finally, if you don't want a particular backend used under any
+circumstances, you can disable it using the Persist.remove() function:
+
+
// never use cookies for persistent storage
+Persist.remove('cookie');
+
+
+
Download
+
+
This is the initial release, so there are bound to be some bugs.
+PersistJS has been tested with FireFox 2.0, FireFox 3.0rc1, IE7, and
+Safari 3.1. The Gears and Flash backends work where Gears and Flash 8
+are supported.
+
+
The most notable omission here is IE6; it should work, but I don't
+have IE6 handy at the moment (MultipleIEs is temporarily busted).
Commenting is still busted around here, so any comments should sent via
+email or posted on the Reddit thread.
+
diff --git a/content/posts/2009-02-22-gratuitous-hardware-imagery-new-firewall-and-fille-server.html b/content/posts/2009-02-22-gratuitous-hardware-imagery-new-firewall-and-fille-server.html
new file mode 100644
index 0000000..7f389ad
--- /dev/null
+++ b/content/posts/2009-02-22-gratuitous-hardware-imagery-new-firewall-and-fille-server.html
@@ -0,0 +1,21 @@
+---
+date: "2009-02-22T05:57:19Z"
+title: 'Gratuitous Hardware Imagery: New Firewall and Fille Server'
+---
+
+
I put together a new firewall and a new file server. The firewall is an
+ALIX 2d3 -- a tiny, low-power x86 SBC with onboard 3xLAN. The
+whole thing runs on 7-20V. Also, there's no heat sink ahe disk is
+compact flash, which means no moving parts!
+
+
The other machine is a new file server. It's replacing three older
+machines and a half-dozen Vservers. The hardware isn't as exotic as
+the ALIX, but I do have some pictures:
+
+
+
+
+
+
+
+
diff --git a/content/posts/2009-02-22-i-have-a-twitter-account.html b/content/posts/2009-02-22-i-have-a-twitter-account.html
new file mode 100644
index 0000000..bb24a86
--- /dev/null
+++ b/content/posts/2009-02-22-i-have-a-twitter-account.html
@@ -0,0 +1,14 @@
+---
+date: "2009-02-22T06:27:29Z"
+title: I Have a Twitter Account
+---
+
+
I've also written a basic Jabber/Twitter relay called Joggle. I'm
+hoping to release it later this week. If you'd like to try Joggle now,
+you can grab it from the mercurial repository (you'll need
+Ruby, a spare Jabber account, and a few minutes to glance over the
+README file).
A brief README file is also available. Basically the script
+allows you to hide articles by author. You can configure the filters
+using the two buttons in the top-right corner of the page.
+
diff --git a/content/posts/2009-02-22-zipstream-php-0-2-0-released.html b/content/posts/2009-02-22-zipstream-php-0-2-0-released.html
new file mode 100644
index 0000000..0f69597
--- /dev/null
+++ b/content/posts/2009-02-22-zipstream-php-0-2-0-released.html
@@ -0,0 +1,24 @@
+---
+date: "2009-02-22T04:57:58Z"
+title: ZipStream-PHP 0.2.0 Released
+---
+
+
Version 0.2.0 of ZipStream-PHP is out. The two changes are:
+
+
+
Generated archives work with the Windows XP "compressed folder" feature.
I just released Joggle version 0.1.0. Joggle is a Jabber to
+Twitter relay; tweets show up as instant messages, and instant
+messages are posted as tweets.
+
+
Setting up Joggle is easy; all you need is Ruby, five minutes, and a
+spare Jabber account:
+
+
# install joggle, create joggle directory
+sudo gem install joggle
+mkdir ~/.joggle
+
+# create joggle config file
+# (replace joggle@example.com and abc123 with your spare jabber
+# account and password, respectively)
+echo -e "jabber.user joggle@example.com\njabber.pass abc123" > ~/.joggle/joggle.cfg
+
+# run joggle in the background
+joggle --daemon --config ~/.joggle/joggle.cfg
+
+
+
Next, add the specified Jabber account (joggle@example.com, in the
+example above) to the buddy list in your Jabber client.
+
+
Finally, register your twitter username and password with Joggle by
+sending an instant message like this: .register TWITTER_USER TWITTER_PASS
+(replace TWITTER_USER and TWITTER_PASS with your Twitter username
+and password).
+
+
You can also share your Joggle installation with your friends; have them
+add the Jabber account to their buddy list and send a .register
+command.
+
+
See the README file for detailed installation instructions and a
+full list of configuration options.
+Update: Comments for this site are still broken, but I've
+cross-posted this release announcement on Reddit, so feel free to
+post a comment over there.
+
+
diff --git a/content/posts/2009-04-15-talk-to-your-kids-about-yaml-or-their-friends-will.html b/content/posts/2009-04-15-talk-to-your-kids-about-yaml-or-their-friends-will.html
new file mode 100644
index 0000000..6542789
--- /dev/null
+++ b/content/posts/2009-04-15-talk-to-your-kids-about-yaml-or-their-friends-will.html
@@ -0,0 +1,13 @@
+---
+date: "2009-04-15T16:38:00Z"
+title: Talk to Your Kids About YAML or Their Friends Will
+---
+
+
This article nicely illustrates my beef with YAML;
+namely, the YAML grammar is far too complicated. Complexity in data
+serialization and exchange formats should be avoided, because it
+virtually guarantees subtle interoperability problems.
+
+
If you need to exchange structured data in a language-agnostic format,
+do me a favor and use JSON instead.
I've just released Reddit Content Filter version 0.5. Reddit
+Content Filter is a Greasemonkey scripts that allows you to filter
+unwanted articles on Reddit by author, domain, or title.
+
+
This release has been updated to work with the new Reddit layout. I've
+also improved the interface; there is now a row of buttons across the
+top-right corner of the screen that allow you to reconfigure filters and
+toggle the visibility of hidden articles without reloading the page.
+
+
User Scripts seems to have hosed my existing account, so for now
+you can install the script from the link below:
+
diff --git a/content/posts/2009-05-30-joggle-0-1-1-released.html b/content/posts/2009-05-30-joggle-0-1-1-released.html
new file mode 100644
index 0000000..dd75f61
--- /dev/null
+++ b/content/posts/2009-05-30-joggle-0-1-1-released.html
@@ -0,0 +1,24 @@
+---
+date: "2009-05-30T08:01:48Z"
+title: Joggle 0.1.1 Released
+---
+
+
+Joggle version 0.1.1 is out. Joggle is a Jabber instant messenger to Twitter relay; instant messages are sent as tweets, and tweets are sent as instant messages.
+
+
+
+This release fixes a small bug with the --daemon option when the controlling terminal is closed, and removes the advertising clause from the license.
+
+
+
+Joggle is available via RubyGems (gem install joggle) or you can download it directly from the URLs below.
+
+
diff --git a/content/posts/2009-05-30-time-to-upgrade.html b/content/posts/2009-05-30-time-to-upgrade.html
new file mode 100644
index 0000000..5032c99
--- /dev/null
+++ b/content/posts/2009-05-30-time-to-upgrade.html
@@ -0,0 +1,12 @@
+---
+date: "2009-05-30T06:24:50Z"
+title: Time to Upgrade...
+---
+
+
+I just spent 30 minutes sifting through the code for this site to fix logins. They've been broken for months, and I'm using a new laptop without my old session cookie.
+
+
+
+30 minutes to post a damn two paragraph article. Maybe redoing the site will be my weekend project.
+
diff --git a/content/posts/2009-05-30-wirble-0-1-3-released.html b/content/posts/2009-05-30-wirble-0-1-3-released.html
new file mode 100644
index 0000000..f4fb3e0
--- /dev/null
+++ b/content/posts/2009-05-30-wirble-0-1-3-released.html
@@ -0,0 +1,21 @@
+---
+date: "2009-05-30T07:06:23Z"
+title: Wirble 0.1.3 Released
+---
+
+
+I just released version 0.1.3 of Wirble. Wirble is a set of enhancements for Irb (the interactive Ruby shell), including tab-completion, history, and, most notably, colorized results.
+
+
+
+This release adds Ruby 1.9 support and removes a couple of warnings. I've also added better support for non-RubyGems installations (via setup.rb) and removed the advertising clause from the license.
+
+
+
You can install Wirble via RubyGems or download it directly from one of the URLs below. Enjoy...
diff --git a/content/posts/2009-05-30-zipstream-php-0-2-2-released.html b/content/posts/2009-05-30-zipstream-php-0-2-2-released.html
new file mode 100644
index 0000000..9ddee8e
--- /dev/null
+++ b/content/posts/2009-05-30-zipstream-php-0-2-2-released.html
@@ -0,0 +1,18 @@
+---
+date: "2009-05-30T07:25:41Z"
+title: ZipStream-PHP 0.2.2 Released
+---
+
+
+I just released version 0.2.2 of ZipStream-PHP. ZipStream-PHP is a library that allows you to generate and stream zip files on the fly without writing an intermediate temporary file to the disk. It works with existing files and dynamically generated content, and has been used to dynamically generate zip files hundreds of megabytes in size.
+
+
+
+This release of ZipStream-PHP updates the license to remove the advertising clause and fixes a few errors in the documentation. There are no code changes; if you're happy with 0.2.1 there is no immediate reason to upgrade.
+
diff --git a/content/posts/2009-06-25-don-t-truncate-your-rss-feed.html b/content/posts/2009-06-25-don-t-truncate-your-rss-feed.html
new file mode 100644
index 0000000..0ab4c00
--- /dev/null
+++ b/content/posts/2009-06-25-don-t-truncate-your-rss-feed.html
@@ -0,0 +1,8 @@
+---
+date: "2009-06-25T01:50:33Z"
+title: Don't Truncate Your RSS Feed
+---
+
+
+Truncate articles in RSS feeds are incredibly anno...
+
diff --git a/content/posts/2019-02-12-hiatus-interrupted.md b/content/posts/2019-02-12-hiatus-interrupted.md
new file mode 100644
index 0000000..f388ada
--- /dev/null
+++ b/content/posts/2019-02-12-hiatus-interrupted.md
@@ -0,0 +1,13 @@
+---
+date: "2019-02-12T11:18:00Z"
+title: Hiatus Interrupted
+---
+I think 10 years is enough of a break.
+
+I've switched the site from my own hand-rolled monstrosity to [Jekyll][]
+on the backend and [Bulma][] on the frontend.
+
+Please excuse the cobwebs for the next few weeks...
+
+[Jekyll]: https://jekyllrb.com "Jekyll static site generator."
+[Bulma]: https://bulma.io "Bulma CSS framework."
diff --git a/content/posts/2019-04-03-model-3.md b/content/posts/2019-04-03-model-3.md
new file mode 100644
index 0000000..6eea2f1
--- /dev/null
+++ b/content/posts/2019-04-03-model-3.md
@@ -0,0 +1,19 @@
+---
+date: "2019-04-03T19:32:07Z"
+title: Model 3
+---
+
+Took delivery on my [Tesla Model 3 (LR AWD)][model3] one week ago today.
+
+
+
+So far it's great!
+
+I've been taking notes on everything, and I will share them eventually.
+
+[model3]: https://tesla.com/model3 "Tesla Model 3"
diff --git a/content/posts/2019-04-04-password-strength-tester.md b/content/posts/2019-04-04-password-strength-tester.md
new file mode 100644
index 0000000..e9b13ec
--- /dev/null
+++ b/content/posts/2019-04-04-password-strength-tester.md
@@ -0,0 +1,36 @@
+---
+date: "2019-04-04T07:34:45Z"
+title: Password Strength Tester
+---
+
+This weekend I put together a simple password strength tester. You can
+try it out [here][link].
+
+Features:
+
+* Simple interface.
+* Open source ([MIT licensed][mit]).
+* Easy to inspect. The interface code is contained in a single,
+ <300 line JavaScript file.
+* Self-contained. No external connections for assets, social media
+ sites, analytics, etc.
+* Can be run offline (no internet connection) or locally (by downloading
+ an archive of the [the Git repository][repo]).
+
+Built with:
+
+* [zxcvbn][]: JavaScript password strength estimator.
+* [Bulma][]: Open source CSS framework.
+* [font-awesome][]: Open source font icons.
+
+Links:
+
+* [Password Strength][link]
+* [Source][repo]
+
+[link]: https://pmdn.org/password-strength "Password strength tester"
+[mit]: https://opensource.org/licenses/MIT "MIT license"
+[zxcvbn]: https://github.com/dropbox/zxcvbn "Password strength estimator"
+[bulma]: https://bulma.io/ "Open source CSS framework"
+[font-awesome]: https://fontawesome.io/ "Open source font icons"
+[repo]: https://github.com/pablotron/password-strength "Git repository for Password Strength"
diff --git a/content/posts/2019-04-06-make-kvm-docker-and-tensorflow-play-nice.md b/content/posts/2019-04-06-make-kvm-docker-and-tensorflow-play-nice.md
new file mode 100644
index 0000000..f2cfcd7
--- /dev/null
+++ b/content/posts/2019-04-06-make-kvm-docker-and-tensorflow-play-nice.md
@@ -0,0 +1,65 @@
+---
+date: "2019-04-06T08:02:42Z"
+title: Make KVM, Docker, and TensorFlow Play Nice
+---
+
+Notes on getting [KVM][], [Docker][], and [TensorFlow][] to cooperate.
+
+By default, a [KVM][] VM does not have the necessary CPU flags set to
+run the [TensorFlow Docker image][tensorflow-docker]. In particular, the
+[TensorFlow Docker image][tensorflow-docker] is compiled with support
+[AVX][].
+
+The solution:
+* Use `virsh capabilities` on the host to get a list of host CPU
+ capabilities, then
+* Use `virsh edit` to manually add the necessary CPU flags as
+ `` tags under the `` tag.
+
+I elected to add all of the [SIMD][] capabilities, including [FP16][].
+
+For an [AMD Threadripper 1950X][cpu], the resulting `` tag
+looks like this:
+
+```xml
+
+
+
+
+
+
+
+
+
+```
+
+Test run:
+
+```
+pabs@hive:~> time docker run --rm -it tensorflow/tensorflow:latest-py3 \
+ python3 -c "import tensorflow as tf; tf.enable_eager_execution();
+ print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
+2019-04-06 12:25:16.576095: I tensorflow/core/platform/cpu_feature_guard.cc:141]
+ Your CPU supports instructions that this TensorFlow binary was not compiled to
+ use: AVX2 FMA
+2019-04-06 12:25:16.627588: I tensorflow/core/platform/profile_utils/cpu_utils.c
+c:94] CPU Frequency: 3393620000 Hz
+2019-04-06 12:25:16.629909: I tensorflow/compiler/xla/service/service.cc:150] XL
+A service 0x395bf00 executing computations on platform Host. Devices:
+2019-04-06 12:25:16.629968: I tensorflow/compiler/xla/service/service.cc:158]
+StreamExecutor device (0): ,
+tf.Tensor(-95.5094, shape=(), dtype=float32)
+
+real 0m1.780s
+user 0m0.024s
+sys 0m0.012s
+```
+
+[kvm]: https://www.linux-kvm.org/ "Linux Kernel Virtual Machine"
+[docker]: https://www.docker.com/ "Docker"
+[tensorflow]: https://www.tenssorflow.org/ "TensorFlow machine learning framework"
+[tensorflow-docker]: https://hub.docker.com/r/tensorflow/tensorflow/ "TensorFlow Docker image"
+[avx]: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions "Advanced Vector Extensions (AVX)"
+[cpu]: https://www.amd.com/en/products/cpu/amd-ryzen-threadripper-1950x "AMD Ryzen ThreadRipper 1950x"
+[simd]: https://en.wikipedia.org/wiki/SIMD "Single Instruction, Multiple Data"
+[fp16]: https://en.wikipedia.org/wiki/Half-precision_floating-point_format "Half precision floating point"
diff --git a/content/posts/2019-04-06-tensorflow-on-a-raspberry-pi-zero-w-is-a-bad-idea.md b/content/posts/2019-04-06-tensorflow-on-a-raspberry-pi-zero-w-is-a-bad-idea.md
new file mode 100644
index 0000000..14cba0f
--- /dev/null
+++ b/content/posts/2019-04-06-tensorflow-on-a-raspberry-pi-zero-w-is-a-bad-idea.md
@@ -0,0 +1,105 @@
+---
+date: "2019-04-06T10:22:40Z"
+title: TensorFlow on a Raspberry Pi Zero is a Bad Idea
+---
+
+A recent question from the [Something Awful Forums][saf]:
+
+ Can I run TensorFlow on a Raspberry Pi Zero?
+
+The answer? You can, but it's a bad idea.
+
+The [Raspberry Pi Zero][pizerow] is a single core [ARMv6][], with no
+[NEON][]. Which means it's slow:
+
+| System | Package | Install Time | Test Time |
+| ------ | ------- | ------------:| ----------:|
+| [Raspberry Pi Zero W][pizerow] | [Virtualenv/Pip][tf-pip] | >1 hour | 40 seconds |
+| [Raspberry Pi 3 Model B+][pi3bp] | [Virtualenv/Pip][tf-pip] | 10 minutes | 10 seconds |
+| [AMD ThreadRipper 1950X][cpu] ([KVM][] VM, 8 cores) | [Docker image][tf-img] | **2 minutes** | **1.8 seconds** |
+
+**Details**
+
+Below are the steps I took to install [TensorFlow][] on a
+[Raspberry Pi Zero W][pizerow]. Note: you **have** to use
+[Virtualenv][] to install [TensorFlow][] in [Raspbian][]. If you try
+to install [TensorFlow][] directly with [Pip][], the installation will
+bomb out with an error.
+
+Raspberry Pi Installation Steps:
+```
+# install system pip, numpy dependencies, and virtualenv
+sudo apt-get install python3-pip python3-dev libatlas-base-dev virtualenv
+
+# at this point i tried to install tensorflow directly via pip, which does NOT work
+# sudo pip3 install --upgrade tensorflow
+
+# created virtualenv environment instead
+virtualenv --system-site-packages -p python3 ./venv
+
+# activate virtual environment "venv"
+# note: after this command your shell prompt will be prefixed with "(venv) "
+source ./venv/bin/activate
+
+# install tensorflow (i also installed keras here, because I use it for other stuff)
+# note: this step takes a comically long time (>1 hour)
+pip install tensorflow keras
+```
+
+Test Results ([Raspberry Pi Zero W][pizerow]):
+
+```
+(venv) pabs@zero:~> time python -c "import tensorflow as tf;
+ tf.enable_eager_execution();
+ print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
+...
+tf.Tensor(1533.9042, shape=(), dtype=float32)
+
+real 0m40.802s
+user 0m38.283s
+sys 0m1.150s
+```
+
+Test Results ([Raspberry Pi 3 Model B+][pi3bp]):
+
+```
+(venv) pabs@peach:~> time python -c "import tensorflow as tf;
+ tf.enable_eager_execution();
+ print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
+...
+tf.Tensor(800.62, shape=(), dtype=float32)
+
+real 0m9.408s
+user 0m9.227s
+sys 0m0.360s
+```
+
+Test Results ([AMD ThreadRipper 1950X][cpu], 8 core [KVM][] VM, [Docker image][tf-img]):
+
+```
+pabs@hive:~> time docker run --rm -it tensorflow/tensorflow:latest-py3 python3 -c \
+ "import tensorflow as tf; tf.enable_eager_execution();
+ print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
+...
+tf.Tensor(-173.73222, shape=(), dtype=float32)
+
+real 0m1.745s
+user 0m0.032s
+sys 0m0.016s
+```
+
+[pip]: https://pip.pypa.io/en/stable/installing/ "Python package manager"
+[virtualenv]: https://virtualenv.pypa.io/en/stable/ "Tool to create isolated Python environments"
+[pizerow]: https://www.raspberrypi.org/products/raspberry-pi-zero-w/ "Raspberry Pi Zero W"
+[pi3bp]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ "Raspberry Pi 3 Model B+"
+[cpu]: https://www.amd.com/en/products/cpu/amd-ryzen-threadripper-1950x "AMD Ryzen ThreadRipper 1950x"
+[saf]: https://forums.somethingawful.com/ "Something Awful Forums"
+[kvm]: https://www.linux-kvm.org/ "Linux Kernel Virtual Machine"
+[docker]: https://www.docker.com/ "Docker"
+[tensorflow]: https://www.tenssorflow.org/ "TensorFlow machine learning framework"
+[tf-img]: https://hub.docker.com/r/tensorflow/tensorflow/ "TensorFlow Docker image"
+[tf-pip]: https://www.tensorflow.org/install/pip "Install TensorFlow using Virtualenv and Pip"
+[simd]: https://en.wikipedia.org/wiki/SIMD "Single Instruction, Multiple Data"
+[raspbian]: https://www.raspberrypi.org/downloads/raspbian/ "Raspbian"
+[armv6]: https://en.wikipedia.org/wiki/ARM_architecture
+[neon]: https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_(NEON) "ARM SIMD instruction set"
diff --git a/content/posts/2019-06-01-bev-ranges.md b/content/posts/2019-06-01-bev-ranges.md
new file mode 100644
index 0000000..78aec32
--- /dev/null
+++ b/content/posts/2019-06-01-bev-ranges.md
@@ -0,0 +1,19 @@
+---
+date: "2019-06-01T04:41:00Z"
+title: Current BEV Range
+---
+
+Range of [Battery Electric Vehicles (BEVs)][bev] currently available in
+the US, according to data from [fueleconomy.gov][src].
+
+
+
+Links:
+* [range-years-current.csv][data]: CSV of current BEV range data.
+* [Github repository][repo]: Has the CSV above and the steps I took to create it.
+* [Data source][src]: Zipped CSV on fueleconomy.gov (current as of 2019-05-25).
+
+[bev]: https://en.wikipedia.org/wiki/Battery_electric_vehicle "Battery Electric Vehicle (BEV)"
+[src]: https://www.fueleconomy.gov/feg/download.shtml "Data source"
+[data]: https://pmdn.org/bev-range/range-years-current.csv "Data from chart above as a CSV file."
+[repo]: https://github.com/pablotron/bev-range "Github repository."
diff --git a/content/posts/2019-08-25-blue-pill.md b/content/posts/2019-08-25-blue-pill.md
new file mode 100644
index 0000000..9a63264
--- /dev/null
+++ b/content/posts/2019-08-25-blue-pill.md
@@ -0,0 +1,24 @@
+---
+date: "2019-08-25T12:40:00Z"
+title: What to do with an STM32?
+---
+
+![stm32f103c8t6][img]
+
+Last week my bag of [generic STM32F103C8T6 "Blue Pill" boards][mcu]
+arrived.
+
+So far I've flashed [Pill Duck][] and a couple of examples from
+[Beginning STM32][book].
+
+Now all I need are some project ideas.
+
+All I've come up with so far are another [Pocket Jim][] or another
+[BME280][]-based temperature monitor.
+
+ [img]: https://pmdn.org/stm32f103c8t6-800.jpg "STM32F103C8T6 (Blue Pill)."
+ [mcu]: https://en.wikipedia.org/wiki/STM32#STM32_F1 "STM32."
+ [pill duck]: https://github.com/satoshinm/pill_duck "Scriptable USB HID device for STM32F103 blue pill."
+ [book]: https://www.amazon.com/dp/B07DGGHZN6 "Beginning STM32: Developing with FreeRTOS, libopencm3 and GCC"
+ [pocket jim]: https://pmdn.org/pocket-jim/ "Leveraging Cross Platform Synergy"
+ [bme280]: https://www.mouser.com/ProductDetail/Bosch-Sensortec/BME280?qs=2OnyuXx6vpj2fK9HX7qb3g%3D%3D "BME280 Temperature, Humidity, and Pressure sensor."
diff --git a/content/posts/2019-08-25-pi4-bench.md b/content/posts/2019-08-25-pi4-bench.md
new file mode 100644
index 0000000..1c9dfb6
--- /dev/null
+++ b/content/posts/2019-08-25-pi4-bench.md
@@ -0,0 +1,35 @@
+---
+date: "2019-08-25T08:19:00Z"
+title: Pi 4 Benchmarks
+---
+
+![world-renowned pablotron test facility][lab]
+
+A few weeks ago I picked up a 1GB [Raspberry Pi 4 Model B][pi4] and
+decided to run some `openssl speed` benchmarks.
+
+Test systems:
+* Raspberry Pi Zero W
+* Raspberry Pi 3 Model B
+* Raspberry Pi 3 Model B+
+* Raspberry Pi 4 Model B
+* Linode VM (1 Core)
+* Intel i7-8650U (Lenovo X1 Carbon, 6th Gen)
+* AMD Ryzen Threadripper 1950X
+
+Test algorithms:
+* `blake2b512`
+* `blake2s256`
+* `sha256`
+* `sha512`
+* `aes-128-cbc`
+* `aes-192-cbc`
+* `aes-256-cbc`
+
+Results are available [here][data]. The code used to run the tests and
+generate the charts is [here][code].
+
+ [pi4]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/ "Raspberry Pi 4 Model B"
+ [data]: https://pmdn.org/pi4-bench/ "OpenSSL Speed Test Results"
+ [code]: https://github.com/pablotron/pi4-bench "Git repository containing code and data for Pi 4 OpenSSL Speed Test Results"
+ [lab]: https://pmdn.org/pi4-bench/lab-800.jpg "World-renowned pablotron test facility"
diff --git a/content/posts/2019-08-25-releases.md b/content/posts/2019-08-25-releases.md
new file mode 100644
index 0000000..00c7128
--- /dev/null
+++ b/content/posts/2019-08-25-releases.md
@@ -0,0 +1,25 @@
+---
+date: "2019-08-25T10:03:00Z"
+title: 'Releases: Luigi Template 0.5.0, ZipStream-PHP 0.3.0, and Mathy'
+---
+
+Some stuff I released months ago but never posted:
+
+* [Luigi Template, version 0.5.0][luigi-template]: Simple multi-language
+ string templating library inspired by Unix pipes. Version 0.5.0
+ includes better documentation, faster rendering, implementations for
+ [Java][], [JavaScript][], [PHP][], and [Ruby][].
+* [Mathy][]: Web-based LaTeX math renderer.
+* [ZipStream-PHP, version 0.3.0][zipstream-php]: [PHP][] library that
+ allows you to dynamically generate streamed Zip archives. Version
+ 0.3.0 is a clean rewrite for [PHP 7][php]. It includes a test suite,
+ [Composer][] support, and API documentation.
+
+ [luigi-template]: https://github.com/pablotron/luigi-template "Simple multi-language string templating library inspired by Unix pipes."
+ [zipstream-php]: https://github.com/pablotron/zipstream-php "PHP library to dynamically generate streamed Zip archives."
+ [mathy]: https://mathy.pmdn.org/ "Web based LaTeX math renderer."
+ [java]: https://en.wikipedia.org/wiki/Java_(programming_language) "Java programming language."
+ [javascript]: https://en.wikipedia.org/wiki/JavaScript "JavaScript programming language."
+ [php]: https://en.wikipedia.org/wiki/PHP "PHP programming language."
+ [ruby]: https://en.wikipedia.org/wiki/Ruby_(programming_language) "Ruby programming language."
+ [composer]: https://getcomposer.org/ "Dependency manager for PHP."
diff --git a/content/posts/2019-08-25-sha2.md b/content/posts/2019-08-25-sha2.md
new file mode 100644
index 0000000..fdeb6d4
--- /dev/null
+++ b/content/posts/2019-08-25-sha2.md
@@ -0,0 +1,49 @@
+---
+date: "2019-08-25T07:35:23Z"
+title: Self-Contained C11 SHA-2 Implementation
+---
+
+Last month I wrote a [C11][] [SHA-2][] implementation.
+
+Features:
+* Self-contained (no external dependencies)
+* C11 only (platform-agnostic)
+* MIT-licensed
+* Includes [test vectors][] (via `make test`).
+
+The code is available [here][].
+
+It includes implementations of the following:
+* SHA-224
+* SHA-256
+* SHA-384
+* SHA-512
+* HMAC-SHA256
+* HMAC-SHA512
+
+This implementation is faster than [coreutils][], but slower than the
+[assembly-optimized, processor family-specific OpenSSL SHA-2
+implementation][openssl-asm-sha]:
+
+```
+> time -p ./sha256 ~/Videos/8x*avi > /dev/null
+rleal 9.39
+user 9.10
+sys 0.29
+> time -p sha256sum ~/Videos/8x*avi > /dev/null
+real 12.04
+user 11.73
+sys 0.31
+> time -p openssl sha256 ~/Videos/8x*avi > /dev/null
+real 6.36
+user 6.01
+sys 0.32
+```
+
+ [sha-2]: https://en.wikipedia.org/wiki/SHA-2 "Secure Hash Algorithm 2"
+ [c11]: https://en.wikipedia.org/wiki/C11_(C_standard_revision) "C11 standard of the C programming language"
+ [coreutils]: https://www.gnu.org/software/coreutils/ "GNU core utilities"
+ [openssl-asm-sha]: https://github.com/openssl/openssl/tree/master/crypto/sha/asm "assembly-optimized OpenSSL SHA-2 implementation."
+ [here]: https://github.com/pablotron/sha2 "C11 SHA-2 implementation."
+ [test vectors]: https://www.di-mgt.com.au/sha_testvectors.html "SHA test vectors."
+
diff --git a/content/posts/2019-08-25-weather-sage.md b/content/posts/2019-08-25-weather-sage.md
new file mode 100644
index 0000000..1153bd6
--- /dev/null
+++ b/content/posts/2019-08-25-weather-sage.md
@@ -0,0 +1,67 @@
+---
+date: "2019-08-25T22:00:00Z"
+title: Weather Sage 0.1.2 Released
+---
+
+A couple days ago I released [Weather Sage][] 0.1.2.
+
+[Weather Sage][] is a command-line tool and [Ruby][] library to get the
+weather forecast and current weather observations for a domestic United
+States street address.
+
+It uses the [Census Bureau Geocoding API][census-api] to geocode street
+addresses, and the [National Weather Service Weather API][weather-api]
+to get weather forecasts and current weather observations.
+
+The command-line tool queries the [APIs][] above to obtain the requested
+information for the given street address, and then prints the results to
+standard output in [CSV][] format.
+
+Here's an example of using the `weather-sage` command-line tool to get
+the weather forecast for the address `1600 pennsylvania ave nw,
+washington dc`:
+
+```
+> weather-sage forecast '1600 pennsylvania ave nw washington dc'
+address,name,temperature,temperature_unit,wind_speed,wind_direction,short_forecast
+1600 pennsylvania ave washington dc,Today,97,F,7 mph,SW,Scattered Showers And Thunderstorms
+1600 pennsylvania ave washington dc,Tonight,76,F,2 to 7 mph,SW,Scattered Showers And Thunderstorms then Mostly Cloudy
+1600 pennsylvania ave washington dc,Tuesday,94,F,6 mph,E,Slight Chance Rain Showers then Chance Showers And Thunderstorms
+1600 pennsylvania ave washington dc,Tuesday Night,75,F,2 to 6 mph,S,Chance Showers And Thunderstorms
+1600 pennsylvania ave washington dc,Wednesday,94,F,3 to 9 mph,SW,Chance Showers And Thunderstorms
+1600 pennsylvania ave washington dc,Wednesday Night,76,F,5 to 8 mph,SW,Chance Showers And Thunderstorms
+...
+```
+
+And here's an example of using the `weather-sage` command-line tool to
+get the current weather observations from the weather station closest to
+the address `1600 pennsylvania ave nw, washington dc`:
+
+```
+> weather-sage now '1600 pennsylvania ave washington dc'
+address,name,type,value,unit,quality_control
+1600 pennsylvania ave washington dc,timestamp,time,2019-08-19T06:52:00+00:00
+1600 pennsylvania ave washington dc,textDescription,text,Mostly Cloudy
+1600 pennsylvania ave washington dc,temperature,value,26.700000000000045,unit:degC,qc:V
+1600 pennsylvania ave washington dc,relativeHumidity,value,81.65039907186703,unit:percent,qc:C
+...
+```
+
+You can install [Weather Sage][] via [RubyGems][] like this:
+
+```
+# install weather-sage with rubygems
+> gem install weather-sage
+```
+
+**Note:** This is the initial release, so the API documentation, test
+suite, and command-line interface are not yet complete.
+
+ [weather sage]: https://github.com/pablotron/weather-sage "Weather Sage"
+ [apis]: https://en.wikipedia.org/wiki/Application_programming_interface "Application Programming Interface"
+ [csv]: https://en.wikipedia.org/wiki/Comma-separated_values "Comma-separated Value format"
+ [ruby]: https://ruby-lang.org/ "Ruby programming language"
+ [rubygems]: https://rubygems.org/ "Ruby package manager"
+ [weather-api]: https://api.weather.gov/ "national Weather Service (NWS) Weather API"
+ [census-api]: https://geocoding.geo.census.gov/geocoder/ "Census Bureau Geocoding API"
+
diff --git a/content/posts/2020-03-28-covid19-us.md b/content/posts/2020-03-28-covid19-us.md
new file mode 100644
index 0000000..2d4f398
--- /dev/null
+++ b/content/posts/2020-03-28-covid19-us.md
@@ -0,0 +1,13 @@
+---
+date: "2020-03-28T11:20:00Z"
+title: COVID-19 in the United States
+slug: "covid19-us"
+---
+
+I put together a tool to track [COVID-19][] in the US by state.
+
+It is available here: [COVID-19 US][].
+
+[model3]: https://tesla.com/model3 "Tesla Model 3"
+[COVID-19]: https://en.wikipedia.org/wiki/Coronavirus_disease_2019 "Coronavirus disease 2019"
+[COVID-19 US]: https://pmdn.org/covid19-us/ "COVID-19 in the US"
diff --git a/content/posts/foo.md b/content/posts/foo.md
new file mode 100644
index 0000000..c6acc0b
--- /dev/null
+++ b/content/posts/foo.md
@@ -0,0 +1,18 @@
+---
+title: "Foo"
+date: "2021-10-09T13:47:18-04:00"
+draft: true
+---
+
+# Foo
+
+## bar
+
+## baz
+
+[best site][pmdn]
+
+## blum
+
+[pmdn]: https://pmdn.org/
+ "best site on the net"
diff --git a/data/menu.yaml b/data/menu.yaml
new file mode 100644
index 0000000..0315f2a
--- /dev/null
+++ b/data/menu.yaml
@@ -0,0 +1,31 @@
+---
+start:
+ - id: "about"
+ href: "/about/"
+ name: "About"
+ help: "About Me"
+ - id: "articles"
+ href: "/articles/"
+ name: "Articles"
+ help: "Articles"
+ - id: "projects"
+ href: "/projects/"
+ name: "Projects"
+ help: "Projects"
+ - id: "links"
+ href: "/links/"
+ name: "Links"
+ help: "Links"
+end:
+ - id: "github"
+ href: "https://github.com/pablotron"
+ icon: "/icons/github.svg"
+ help: "my github page"
+ - id: "pgp"
+ href: "/files/pgp.asc"
+ icon: "/icons/key.svg"
+ help: "my PGP key"
+ - id: "rss"
+ href: "/feed/"
+ icon: "/icons/rss.svg"
+ help: "rss feed"
diff --git a/static/logo.svg b/static/logo.svg
new file mode 100644
index 0000000..0b570e7
--- /dev/null
+++ b/static/logo.svg
@@ -0,0 +1,2 @@
+
+
diff --git a/themes/hugo-pt2021/LICENSE b/themes/hugo-pt2021/LICENSE
new file mode 100644
index 0000000..e4483e2
--- /dev/null
+++ b/themes/hugo-pt2021/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2021 YOUR_NAME_HERE
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/themes/hugo-pt2021/README.md b/themes/hugo-pt2021/README.md
new file mode 100644
index 0000000..a2063de
--- /dev/null
+++ b/themes/hugo-pt2021/README.md
@@ -0,0 +1,2 @@
+bulma-0.9.3
+icons from feathericons https://feathericons.com/?query=key
diff --git a/themes/hugo-pt2021/archetypes/default.md b/themes/hugo-pt2021/archetypes/default.md
new file mode 100644
index 0000000..ac36e06
--- /dev/null
+++ b/themes/hugo-pt2021/archetypes/default.md
@@ -0,0 +1,2 @@
++++
++++
diff --git a/themes/hugo-pt2021/assets/bulma-0.9.3/CHANGELOG.md b/themes/hugo-pt2021/assets/bulma-0.9.3/CHANGELOG.md
new file mode 100644
index 0000000..543531a
--- /dev/null
+++ b/themes/hugo-pt2021/assets/bulma-0.9.3/CHANGELOG.md
@@ -0,0 +1,1558 @@
+# Bulma Changelog
+
+## 0.9.3
+
+### New features
+
+- New `is-underlined` class for underlined text and links
+- New `auto` value for margin and padding helper classes
+
+### Improvements
+
+- New `$section-padding-desktop` Sass variable
+- New `$hero-body-padding-tablet` Sass variable
+- New `$shadow` Sass variable (used for `.box`, `.card`, `.dropdown` and `.panel`)
+- Add `is-normal` size modifiers to `.file` and `.content`
+- New `%reset` placeholder
+
+### Bugfix
+
+- #3362 Fix slash divide
+
+## 0.9.2
+
+### Breaking change
+
+To fix duplicate imports, all Sass placeholders have moved from the `utilities/mixins` file to its own `utilities/extends` file.
+
+The Sass placeholders are:
+
+- `%control`
+- `%unselectable`
+- `%arrow`
+- `%block`
+- `%delete`
+- `%loader`
+- `%overlay`
+
+If you were importing them directly from `utilities/mixins`, you'll need to import `utilities/extends` instead.
+If you were importing `utilities/_all` or even `bulma.sass` directly, no change is required.
+
+### New features
+
+- Fix #1583 New `is-ghost` button that behaves / looks like a regular link
+- New `icon-text` component, to combine an icon with text on its side
+
+### Bug fixes
+
+- #3005 Fix `column` offsets in RTL
+- Fix #3145 Dropdown content is bounded by a parent card
+- Fix #3089 Sub columns of a variable columns have weird gap
+- Fix #2937 Add `width: unset` for narrow columns
+- #3208 Fix #3163 Do not override is-rounded with button-small
+- #3216 Removed duplicate `mixins` imports, created a single `extends` file
+- #3216 Removed all references to the `.sass` file extension have been removed, since they're unnecessary when there's no ambiguity between a `.sass` file or a `.scss` file
+
+### Improvements
+
+- Fix #3012 Add `$media-*` variables, set to `!default`
+- Fix #2797 Import dependencies individually for each component
+- Remove list style from pagination list
+
+## 0.9.1
+
+### New features
+
+- #3047 Flexbox helpers
+- #3085 Add `is-clickable` helper
+- #3086 Allow each component to have its own colors and default to global ones
+- New variables `$navbar-colors`, `$button-colors`, `$notification-colors`, `$progress-colors`, `$table-colors`, `$tag-colors`, `$file-colors`, `$textarea-colors`, `$select-colors`, `$form-colors`, `$label-colors` and `$hero-colors`
+
+### Improvements
+
+- #2630 Fixes #2598 -> Add `$card-radius` variable
+- Add `$card-overflow` variable
+- #2540 Fixes #2539 -> Fix indeterminate progress styling in IE11
+- #3057 Make the default text color of `$code` listings more accessible
+- #3088 Adds not allowed cursor to missing inputs
+- #3101 Add `$modal-breakpoint` variable for modal breakpoint
+- #3107 Add `optgroup` to `generic.sass`
+
+## 0.9.0
+
+### Deprecation warning
+
+The `base/helpers.sass` file is **deprecated**. It has moved into its own `/helpers` folder. If you were importing `base/helpers.sass` or `base/_all.sass`, please import `sass/helpers/_all.sass` now.
+If you were simply importing the whole of Bulma with `@import "~/bulma/bulma.sass"` or similar, you won't have to change anything, and everything will work as before.
+
+The `list` component is also **deprecated**: the `components/list.sass` file has been deleted. It was never officially supported as it was too similar to `panel` component. Use that one instead.
+
+### RTL support
+
+Bulma now has **RTL support**.
+
+By setting the Sass flag `$rtl` to `true`, you can create an RTL version of Bulma, thanks to 4 new Sass mixins:
+
+- `=ltr`
+- `=rtl`
+- `=ltr-property($property, $spacing, $right: true)`
+- `=ltr-position($spacing, $right: true)`
+
+The Bulma package now also comes with a `bulma-rtl.css` and `bulma-rtl.min.css` file to be used straight away.
+
+### Spacing helpers
+
+Bulma now has **spacing helpers**: https://bulma.io/documentation/helpers/spacing-helpers/
+
+
Bulma provides marginm* and paddingp* helpers in all directions:
+
+
+
+ *t for top
+
+
+ *r for right
+
+
+ *b for bottom
+
+
+ *l for left
+
+
+ *x horizontally for both left and right
+
+
+ *y vertically for both top and bottom
+
+
+
+
+ You need to combine a margin/padding prefix with a direction suffix. For example:
+
+
+
+
for a margin-top, use mt-*
+
for a padding-bottom, use pb-*
+
for both margin-left and margin-right, use mx-*
+
+
+
+ Each of these property-directioncombinations needs to be appended with one of 6 value suffixes
+
+
+This release also includes the following helpers:
+
+- light and dark color helpers
+- light and dark background color helpers
+
+### Improvements
+
+- #2925 Center table cell content vertically with `is-vcentered`
+
+### Bug fixes
+
+- #2955 Fix issue when there's only one `is-toggle` tag
+
+## 0.8.2
+
+### Bug fixes
+
+- Fix #2885 -> Revert `$input-color: $text-strong`
+
+## 0.8.1
+
+### Improvements
+
+- #2709 Add light colors to the `notification` element
+- #2740 Fixes #2739 -> Add variables size for layout `hero`
+- Fix #2741 -> Create `bulmaRgba()` function to support `inherit` value
+- #2756 Add `$button-text-decoration` variable
+
+### Bug fixes
+
+- #2664 Fixes #2671 -> Add `$panel-colors` variable
+
+## 0.8.0
+
+### Big update
+
+#### Larger form controls
+
+Controls and buttons are now `2.5em` high. You can revert this resizing by setting these previous values:
+
+```sass
+$control-height: 2.25em
+$control-padding-vertical: calc(0.375em - #{$control-border-width})
+$control-padding-horizontal: calc(0.625em - #{$control-border-width})
+$button-padding-vertical: calc(0.375em - #{$button-border-width})
+$button-padding-horizontal: 0.75em
+```
+
+#### Light and dark colors
+
+Each main color (`"primary"`, `"info"`, `"success"`, `"warning"`, `"danger"`) now has a `*-light` and `*-dark` version. They are calculated using 2 new color functions:
+
+- `findLightColor()` which finds the light version of a color
+- `findDarkColor()` which finds the dark version of a color
+
+The light colors are used by the `button` element, while the light and dark colors are used by the `message` component.
+
+#### Panel colors
+
+The `panel` component is now available in all the different colors.
+
+#### 4-value color map
+
+The `$colors` Sass map now accepts, for each of its values, a map of up to **4** values. For example: the key `"info"` now has the `($info, $info-invert, $info-light, $info-dark)` map.
+
+If you provide a `$custom-colors` map, you can decide to provide a map of 1, 2, 3 or 4 values for each value. If fewer than 4 are provided, Bulma will calculate the remaining ones:
+
+```scss
+$custom-colors: (
+ 'lime': (
+ lime,
+ ),
+ 'tomato': (
+ tomato,
+ white,
+ ),
+ 'orange': (
+ $orange,
+ $orange-invert,
+ $orange-light,
+ ),
+ 'lavender': (
+ $lavender,
+ $lavender-invert,
+ $lavender-light,
+ $lavender-dark,
+ ),
+);
+```
+
+This is processed by the updated `mergeColorMaps()` Sass function.
+
+#### Scheme variables
+
+There are 6 new `$scheme` derived variables: `$scheme-main` `$scheme-main-bis` `$scheme-main-ter` `$scheme-invert` `$scheme-invert-bis` `$scheme-invert-ter`
+They replace the `$white` and `$black` occurrences in the codebase. This makes it easy to create a "Dark mode" simply by swapping the values:
+
+```sass
+$scheme-main: $black
+$scheme-invert: $white
+// etc.
+```
+
+That is also why most of the codebase now references **derived** variables (`$text`, `$background`, `$border` etc.) instead of **initial** ones (`$grey`, `$grey-lighter`, `$grey-darker` etc.): updating the derived variables will affect all elements and components directly.
+
+#### Initial variables
+
+- `$green: hsl(141, 53%, 53%)`
+- `$cyan: hsl(204, 71%, 53%)`
+- `$red: hsl(348, 86%, 61%)`
+
+#### Derived variables
+
+- `$primary-invert: findColorInvert($primary)`
+- `$primary-light: findLightColor($primary)`
+- `$primary-dark: findDarkColor($primary)`
+- `$info-invert: findColorInvert($info)`
+- `$info-light: findLightColor($info)`
+- `$info-dark: findDarkColor($info)`
+- `$success-invert: findColorInvert($success)`
+- `$success-light: findLightColor($success)`
+- `$success-dark: findDarkColor($success)`
+- `$warning-invert: findColorInvert($warning)`
+- `$warning-light: findLightColor($warning)`
+- `$warning-dark: findDarkColor($warning)`
+- `$danger-invert: findColorInvert($danger)`
+- `$danger-light: findLightColor($danger)`
+- `$danger-dark: findDarkColor($danger)`
+- `$light-invert: findColorInvert($light)`
+- `$dark-invert: findColorInvert($dark)`
+
+- `$scheme-main: $white`
+- `$scheme-main-bis: $white-bis`
+- `$scheme-main-ter: $white-ter`
+- `$scheme-invert: $black`
+- `$scheme-invert-bis: $black-bis`
+- `$scheme-invert-ter: $black-ter`
+
+### Other variables
+
+- `$control-height: 2.5em`
+- `$control-padding-vertical: calc(0.5em - #{$control-border-width})`
+- `$control-padding-horizontal: calc(0.75em - #{$control-border-width})`
+- `$media-border-color: rgba($border, 0.5)`
+- `$notification-code-background-color: $scheme-main`
+- `$panel-radius: $radius-large`
+- `$panel-shadow: 0 0.5em 1em -0.125em rgba($scheme-invert, 0.1), 0 0px 0 1px rgba($scheme-invert, 0.02)`
+- `$textarea-padding: $control-padding-horizontal`
+- `$textarea-max-height: 40em`
+- `$textarea-min-height: 8em`
+
+### Bug fixes
+
+- Fix #2647 -> Missing meta tags in snippet
+- Fix #2031, Fix #2483 -> Invalid output when declaring a custom shade map
+- Fix #2060 -> `height: auto` on HTML `audio` element breaks height of element
+- Fix #706 -> Derive `-invert` variables using `findColorInvert()`
+- #1608 Fix #1552 -> `.container.is-fluid` margins
+
+### New features
+
+- #2563 `.image` has a new `.is-fullwidth` modifier
+
+## 0.7.5
+
+### Deprecation warning
+
+The `form.sass` file is **deprecated**. It has moved into its own `/form` folder. If you were importing `form.sass`, please import `sass/form/_all.sass` now.
+If you were simply importing the whole of Bulma with `@import "~/bulma/bulma.sass"` or similar, you won't have to change anything, and everything will work as before.
+
+### New features
+
+#### Support for overriding the `font-family`
+
+You can now specify a different `font-family` for the `.title`, `.subtitle` and `.button` by using the variables `$title-family`, `$subtitle-family` and `$button-family` respectively.
+
+Simply set a value when importing Bulma:
+
+```scss
+$title-family: 'Georgia', serif;
+```
+
+- #2375 Add `.is-relative` helper
+- #2321 Make `.navbar` focus behave like hover for the navigation
+- #2290 Fix #1186 -> Reset the offset on columns
+- #2231 Add `.has-text-weight-medium` helper
+- #2224 Add customizable border radius to progress bar
+- #2480 Add `$footer-color` variable
+
+### Improvements
+
+- #2396 Update docs with webpack 4 example
+- #2381 Make centered buttons have equal margin
+- Fix #2297 -> Remove `.container` fixed width values, use `flex-grow`
+- #2478 Move form.sass into its own folder
+
+### Bug fixes
+
+- #2420 Fix #2414 -> Fix `align` attribute in `td/th` being ignored
+- #2463 Remove duplicate `.has-addons` in `tag.sass`
+- #2253 Fix `$gap` variable default value
+- #2273 Fix #2258 -> Fix Indeterminate Progress Bar animation in Firefox
+- #2175 Proper aligning for `.tabs` within `.content`
+- #2476 Fix #2441 -> Correct active pagination link text color on hero
+
+Fix #1979 -> Correct loading spinner color when a button is:
+
+- outlined and hovered/focused
+- outlined, inverted and hovered/focused
+
+### New variables
+
+#### Initial variables
+
+- `$block-spacing`
+
+#### Base
+
+- `$body-font-size`
+- `$small-font-size`
+- `$pre-font-size`
+- `$pre-padding`
+- `$pre-code-font-size`
+
+#### Components
+
+- `$card-header-padding`
+- `$card-content-padding`
+- `$card-media-margin`
+- `$dropdown-menu-min-width`
+- `$dropdown-content-padding-bottom`
+- `$dropdown-content-padding-top`
+- `$level-item-spacing`
+- `$menu-list-line-height`
+- `$menu-list-link-padding`
+- `$menu-nested-list-margin`
+- `$menu-nested-list-padding-left`
+- `$menu-label-font-size`
+- `$menu-label-letter-spacing`
+- `$menu-label-spacing`
+- `$pagination-item-font-size`
+- `$pagination-item-margin`
+- `$pagination-item-padding-left`
+- `$pagination-item-padding-right`
+- `$panel-margin`
+- `$panel-tabs-font-size`
+
+#### Elements
+
+- `$container-offset`
+
+#### Grid
+
+- `$tile-spacing`
+
+## 0.7.3
+
+### New features
+
+- #2145 Fix #372 -> New indeterminate progress bars
+- #2206 Fix #2046 -> New variables `$table-head-background-color`, `$table-body-background-color` and `$table-foot-background-color` for the `.table` element
+- #592 -> Give arbitrary elements access to the image/ratio classes
+- #1682 Fix #1681 -> Adds disabled styles for `