Author Archive


Is Ulrich Drepper “a giant douchebag?” Discuss.

2008-07-07 / 17:43 / dave

Being an open source maintainer probably isn’t a fun job. Looking at glibc bug #4980, neither is having a conversation with one.

This all begs the titular question: is Ulrich Drepper a giant douchbag?

PS: Dave Houston wins the best comment award.


Carnival!

2008-06-24 / 09:58 / dave

New Soca mix from DoubleL & El Professor. I just got done listening to the mp3 mix and it’s good. It nicely spans the range from “happy soca” to more reggae-ish heavy tunes.

Can’t wait for the CD to show up.

More information (including samples) at These Rocks Pop.


Music review QOTW

2008-06-23 / 20:51 / dave

This original record is stupid rare. I had one copy two years ago, burned it to a CD, and sold it to some Limey shitbox for $250 thinking I really got over. A couple weeks ago I see it going for $877 on eBay. Fuck. By now you know Peter Brown produced a million records in the late 70s that all sound basically the same, but I guess people really sweat this one as a more standard disco affair- nice clean horn arrangements and some top of the cry baby wah guitar. None of that dusted out warbly synth action, which to me is actually the best thing about his records. Either way, I can only imagine what this does to a British dancefloor. Probably a fucking tornado of arms and teeth and fingernails. Sometimes I really wonder why it takes some across the pond dudes to sweat shit like this. It must be that organ all high in the mix. Hammond disco groover, mate. Chune caning status to the maximum, bro. Wait, I forgot my little black glasses, close-cropped balding-disguise haircut, raw denim jacket and Bapestas back at the flat. I guarantee you I could play this for just about any NYC DJ and tell them it was a $900 record and they’d look at me like fish guts were oozing out of my mouth. But for 2 bucks, reclaim this shit on some reverse imperialism, and play it at a little bar weekly while you go take a shit.

God bless you Bob Bannister, and you’re Turntable Lab review.


Things to do before I die: hike 34.6 miles in one day

2008-06-23 / 20:36 / dave

Check! And it really wasn’t bad. I got a sore “outer right knee” tendon and Iris (hiking buddy) got sore “behind the knee” muscles and a bout of indigestion (too much power-food, probably). My fancy new trekking poles did their job: easier up-hills, stable downhills and light enough to carry during the paved sections.

Oh yeah, the paved sections. The hike had a bunch of them. Combined with the power-line runs–think baking in the sun while going straight up and down–the hike was not what I would call “fun”. Iris and I both agreed it’s probably not worth doing again unless we’re out to prove something.

We never did the full calculation, but our total clock time was around 13 hours and hiking time around 12 hours. That’s a little slower than I thought, but not bad.

The next morning

Getting out of bed the day after was rough, but advil & stretching helped enough that I went mountain biking at Moraine State Park with Jack, Jess and Casey. On paper this was just about the worst trip ever. Before we even got on the trail Jack fell over doing a wheely–clipless pedals played a role, just as they did when I did the same thing at Boyce a month ago–and Casey stepped in a giant puddle after peeing in the woods.

Once we hit the trail, we found it was a mass of rocks. That wasn’t too bad on the power-line run (argh, more power line runs!), but as soon as the trail dipped into the woods it was a mass of slippy rocks. And 30″ log piles. All in all a little above our skill level.

I wiped out once trying a log pile. Actually, it was before the pile: I waited for Casey then tried to crank up some speed. And then I was laying down. Apparently my wheel slid sideways on a stick or something. The fall hurt my right knee (the same one that was already sore) luckily I had time to rest it while we fixed Casey’s chain, which broke about 30 seconds later.

We decided pretty soon to head back. I got a good rhythm on the back section and bombed over a bunch of rocks, including the wet ones hidden beneath undergrowth. The latter was good traning for quickly unclipping one foot and push biking without losing speed. Finally, I took the final rutted downhill plenty fast, thanks mostly to the confidence from wearing a helmet. Wearing a helmet off-road is probably a good idea but it gives me unfounded confidence: it might save my life but probably at the cost of a broken bone. Then again, I’ve never broken a bone so maybe I’m due. (I’ve also never ridden my bike so hard I threw up, which sounds like a worthy goal. So if anyone is looking to do some hard riding look me up)

After the ride we toweled down and found a picnic table. Jess & Jack always come correct with food: thai chicken wraps, mint tea and blueberry pie pockets. I brought chips and fresh salsa and Casey made fruit salad and brought some Dozen cinnamon buns courtesy of our friend Rachel.

Things were looking up until we got back in the car and Jack realized he didn’t have his hydro-pack. Unfortunately it contained his phone and, more importantly, an awesome Topeak multi-tool. We retraced our steps and eventually ended up in the parking lot of the biking office. We waited in the cab anxiously until Jack emerged triumphant, hydro-pack hoisted over head like some sort of conquered nylon & rubber hose beast.

What a happy ending

All in all I think we only rode for something like 40 minutes and covered about 2 1/4 miles. A pretty crappy ride, but something I’d do again. Or at least it’s better thank hiking 35 miles in one day… riding over wet rocks is a new skill, walking a lot is just masochism.

I know it might sound like I’m hating on the Rachel Carson Challenge, but I’ll probably end up doing it next year but with the express goal of hiking it in 9 and a half hours or something. Plus Iris and I had a conversation about the appropriateness of spandex and it’s correlation with sexy-ness. So we agreed next year we’re going all spandex, a worthy goal by itself.


QOTW

2008-06-20 / 20:54 / dave

After thinking and thinking it was clear that there was only one solution. I was going to have to move my shit out of the toilet and into my backpack

Definitely the best line in the mostly so-so Stuck In The Middle.


MS-150 2008, a wrap-up

2008-06-10 / 21:17 / dave

Another year, another 164 miles.

Saturday was 100 miles in ~5.5 hours, Sunday was 64 miles in ~3.25 hours, which puts my times pretty close to last year’s despite being on a road bike. So the road bike didn’t add much speed, but I’ve got to say my joints sure felt a lot better this year. Also last year I did some last minute cramming by riding to Ohiopyle and back (150 miles). This year my cramming was riding the Pittsburgh-Roubaix course, all 40 miles of it. Combined with the mountain biking and step running, my training this year perfectly prepared me for short intense rides, not 100 miles of rolling terrain. Oh well.

Thanks to all those who donated. I raised $155 online, probably around $100 in cash & checks and $400 in matching team funds (which is new this year, normally team funds only go to current employees, not ex hanger-ons like me).

If you didn’t get a chance to donate, don’t worry! Donations can keep coming in until July sometime. Email me or donate online. Thanks!


Wale from Merrland… but the mixtape’s on the internet

2008-06-03 / 12:44 / dave

You waited and waited and waited… now go get it!

A Mixtape about Nothing, front cover
Wale: A Mixtape about Nothing


Me and MeshU up in Toronto

2008-06-03 / 07:22 / dave

Avi’s blog post reminded me that I never summarized my trip to MeshU. In a word: good.

Or in several words…

Prelude

I left Pittsburgh in a shiny new rented Sebring and drove to Toronto in about 5 and a half hours. The only events of interest were 1) realizing I had no washer fluid and 2) a small delay at the Peace Bridge for Victoria Day.

Tron I got parked ($10 CDN/night) and checked in to the Neill-Wycik, which exceeded it’s Hostels.com reviews. The room was a dorm single in a suite, though the other rooms seemed empty. I only saw one other person and only for the 2 seconds it took her to go from her room to the bathroom.

The roof offered some Victoria Day firework watching, unfortunately underwhelming compared to the Zambelli’s work. Then back to the room & free Wi-Fi to check if the post-conference weather would be good for camping. Not only was the weather looking dodgy, but I had forgotten my AC Adapter.

Tuesday morning

If I had to come up with a complaint of the Neill-Wycik, it would be the inability of the curtains to stop sharp rays of sunlight from stabbing me in the eyes. I woke up right around sunrise and spent some time reading Black Dogs. I considered showering, but since the plan was to drive straight from the conference to Tobermory and sleep in the car, it didn’t seem worth it. Plus I didn’t shave or bring business cards so I figured professionalism was right out the window. They’re lucky I wore pants.

Neill-Wycik disposes of trash proper Before going I checked all the drawers to make sure I didn’t forget anything. I’m not sure if it’s official Neill-Wycik policy, but there was a random porn DVD in a desk drawer. Feeling that this was the ultimate souvenier, I took it. This comes up later in the story.

I walked the few blocks to was a few blocks away the MaRS center. The sign-in and breakfast (fruit & carbs) was in an open area immediately adjacent to the conference rooms. I found a table and “networked.” It was an interesting mix of designers, technical-ers, and entrepreneurs. They did a quick and–from where I was sitting–unintelligible intro and then we were off.

Beyond relational

I decided to see Avi Bryant’s “Beyond Relational Storage” talk based on the strength of his blog and Seaside.

I wasn’t disappointed: his talk was awesome (my notes).

He covered a bunch of alternate data storage strategies (SimpleDB, in memory, Prevayler, etc.), took questions, and then gave us a sneak-peak of MagLev (which has blown-up the blog world since it’s official debut at RailsConf).

Aftwerwards there was a small talk at my table. My neighbor was Markus, the CEO of Palomino System Innovations. They make a CMS, but mostly I was interested in their custom XML store.

Interlude

I was planning on running to Best Buy over break, but my laptop seemed to be doing ok in real ultimate power-saving mode so instead I made some calls.

Thorncrest Outfitters strongly–as in “we won’t rent you a kayak”–spoke against my proposed paddle to Flowerpot Island in Five Fathoms Marine Park. They proposed a one-day river kayaking trip, which sounded far less exciting.

Blue Heron affirmed that they take campers to Flowerpot Island but warned that the boat might be canceled since the weather called for rain and high winds.

Designing

Iterative Design Strategies w/ Daniel Burka One of the breakfast webbies, Angie (I think, I didn’t get a business card) was excited about Daniel Burka’s “Iterative Design Strategies” talk (notes) so I thought I’d check it out. I had planned to go see Reg’s talk, but, while neither designer or manager, I’m closer to designer. Or at least I occasionally make a user interface that isn’t a command line.

Daniel’s talk was “I sat on the floor” crowded. I liked his case study of his redesign of the Digg comment UI, but otherwise I wasn’t the right audience. It was basically Agile for designers. A good idea, but not something I need. It is however the only talk I took a picture of.

Lunchtime networking

Lunch was notable for the company. I sat with some current/recently matriculated students: Julie, Andrey, Andrew & uhm… the tall woman with the blond hair whose name I have forgotten. Pete Forde from Unspace was also there facilitating the conversation and unashamedly flogging Ruby Fringe, which sounds interesting but is too expensive for me & too non-work related for my employer.

Implementing OAuth

My third session was Leah Culver’s “Implementing OAuth” (notes). Leah started with a review of OAuth (and the difference from OpenID), explained the protocol & showed the code. A fairly good talk, though again not directly related to me.

Some of the questions coming from the front seemed strangely pointed… perhaps beacuse they were being asked by Cal Henderson. The old “plant in the audience” trick. Very clever, Leah and Cal, very clever…

And finally, Mr. John Resig

Despite the rumors that John Resig’s jQuery talk (notes) was going to be introductory, I wanted to see him talk. Plus I’ve never used jQuery, so I was ready for an introduction.

Before the talk John got some water from our table (near the front). I talked to him briefly about processing.js, which I’ve been meaning to look at for online plotting.

His talk was a quick introduction to jQuery followed by some live examples of unobtrusive prototyping against live pages. jQuery looks as good as its reputation, I’ll be trying it out whenever I have a chance / excuse.

The end of the day

I kind of wanted to go to the afterparty so I could tell Avi I liked his talk. He was busy at lunch and the only other time I saw him was at the urinal, which seemed like an awkward time. I also wanted to make up for my lack of pictures by getting photos of all the presenters giving me bunny ears. Alas it turns out the after-party was a significant distance away. Instead, I tagged along with Julie, Andrew & Andrey for some pan-asian dinner at Spring Roll.

Dinner & conversation were both good.

Then I walked back to the car.

The drive north south

Google Map directions took me North on Spadina, which seemed more than a little suspicious. Eventually I turned around got on the Gardiner Expressway. It was about 7:30 and it would take another 3 hours to get to Tobermory where I may or may not get to ride a boat to Flowerpot Island. Given the chances & the weather I just took Gardiner to the QEW and headed south.

I stopped at a Tim Horton’s to pee and pick up a tea. I figured I’d need the caffeine later.

I stopped a second time at the US border crossing.

The border guard asked me a bunch of questions. He seemed especially interested in the fact that I was only in Canada for a day. Then he confiscated my contraband oranges and bumped me to 2nd level border check. I parked in the directed spot and went inside. Some border agents checked my license and passport and asked more questions. Then they went to search the car.

I was sitting in the waiting room when I realized I had a mystery porn in the trunk. I ran through a few nightmare scenarios where it was actually child porn or something. Who would believe I found it in a drawer in a hostel? Luckily the agents came back in and told me I was free to go.

The agent didn’t have a solid reason on why I was stopped. It was probably because I spent a single day in Canada and was crossing the border at night, but I was hoping it was something like “the agent saw your trunk full of perversion.” That would at least give me a funny story. As it is I was just left with a dull feeling of violation and powerlessness. How Kafkaesque.

I gave the DVD to Casey. It’s a Japanese porn. Nothing special, and certainly not worth the stress.

Final words

I suppose I should wrap up something about the conference and how good it was to meet new and interesting people. But really, my advice is to just leave porn in drawers.


WTFOTD: Microsoft, shared drives, properties

2008-05-27 / 12:03 / dave

  1. Have an external drive with mounted to S:
  2. Have a network share mounted as S:
  3. Open Disk Management
  4. Right click the external drive and select “Properties”
  5. Be surprised when the properties for the network share come up

It looks like Microsoft looks up properties via drive letter, even when you physically click the drive in the Disk Management app. Not deadly, just surprising. Maybe this should only be a WTHeck?


Money for the MS-150

2008-05-23 / 19:13 / dave

Hey hey, it’s that time again…. TIME FOR ME TO BEG FOR MONEY! I’m riding the MS-150 in two weeks, and I have to raise $200, but I’m shooting for $300.

“Dave,” you say “why didn’t you start soliciting earlier?”. Well why don’t you just shut that yap of yours, hmm?

Anyway, all donations go to a good cause and are appreciated, both by the MS Society and by me. There’s more information at my MS-150 page.


An extremely tardy art show wrap-up

2008-05-13 / 12:51 / dave

Spaces

Casey & Jennie’s Spaces show went well. See for yourself:

Fun-A-Day

It went well. I would like to point out that despite appearances, I didn’t pee my pants. It’s just water from the slushy winter roads. Yay, Pittsburgh!

eating snacks


On Java One and shark jumping

2008-05-08 / 12:29 / dave

After reading Tim Bray’s description of Java One, I’m even more un-interested in Java (which is not to say anything bad about Mr. Bray himself). Call me cynical, but when a company spends that much money to generate hype… well, shouldn’t people just use an environment because it works? Or do all languages do this? Have I been missing the annual C extravaganza?

Anyway, yet another sign. If it weren’t for Clojure I’d uninstall the JDK altogether.

In related conference news, I’ll be at MeshU 2008 in two weeks; hopefully followed by a stop at Five Fathoms.


Ah-hah! Of course recursion can create a dependence on the global namespace!

2008-04-29 / 16:44 / dave

This works because there is a global variable, fact, that has its value set to the value of the lambda expression. When the variable fact in the body of the function is evaluated to determine which function to invoke, the value is found in the global variable. In some sense using a global variable as a function name is unpleasant because it relies on a global and hence a vulnerable resource—the global variable space.

–Richard Gabriel, The Why of Y [PDF]

(emphasis added)

On reflection, “normal” recursion relying on the global namespace is obvious. So are the potential problems:

> (define fact (lambda (n) (if (< n 2) 1 (* n (fact (- n 1))))))
> (map fact '(0 1 2 3 4))
(1 1 2 6 24)
> (define fact2 fact)
> (map fact2 '(0 1 2 3 4))
(1 1 2 6 24)
> (set! fact (lambda (n) 1000))
> (map fact '(0 1 2 3 4))
(1000 1000 1000 1000 1000)
> (map fact2 '(0 1 2 3 4))
(1 1 2000 3000 4000)
>

Never really thought of it that way before.

That’s not the main point of the paper, of course. It’s really about the derivation of the oft-asked-about Y-Combinator.


Can you figure out who sampled this?

2008-04-14 / 11:51 / dave

It should take you less than 2 seconds.

Edwin Birdsong - Cola Bottle Baby


Corporate mobs; government dons

2008-04-11 / 16:37 / dave

Writing about monopolies reminded me of a This American Life episode. The last story talks about cracking organized crime’s hold on garbage pick-up in NYC. Once the mob was gone, prices dropped… temporarily. They rose as soon as big corporations took over.

I’m not anti-capitalist–I only switched my voter registration from Libertarian a few weeks ago, and that was just so I could vote in the PA primaries–so I’m not bothered by businesses getting large and successful. But I am bothered by anti-competitive practices. Maybe the general high cost of New York City is keeping a hot-young garbage start-up from disturbing the market, but maybe it’s restrictive laws or business collusion.

When it comes to biking, I think cars have a responsibility to watch out for cyclists. This is part of a general belief that power = responsibility. When the powerful don’t exhibit that responsibility I have no problem with regulations enforcing it for them.

At risk of sounding about 20 years older than I actually am, that’s what’s wrong with America these days. The banking bailout is an example where apparently responsibility != risk. And what’s the rational for CEO golden parachutes? The excuse for ballooning executive pay is that executives get great rewards for their great risks. Getting millions to quit your job doesn’t seem very risky to me. (and yes, I understand that successful CEO’s have a rare skill, which is why I don’t mind when they get paid. It’s the high paid failures that bother me)

But I wonder if the problem doesn’t start even higher. We’re in of a costly war based on false pretenses; some of that cost due to no-bid Halliburton contracts. Torture is considered acceptable and civil rights have been eroded. A depression is likely. The national debt is huge. Other than Scooter, who has paid?

Large corporations seem to have the green-light for corruption and the government won’t intervene, let alone admit its own mistakes.

I can’t wait for the election.


Information economics

2008-04-11 / 16:01 / dave

(Here’s one from the vaults: I started writing this July 2007)

I like Reg, so I was surprised when I thought he wanted comments on his site instead of aggregators.

It turns out I misinterpreted his post. He responded to my comment:

…But yes, I do think comments on reddit and most especially links in social bookmarking sites break the web by placing them in someone’s proprietary database, instead of on the web itself…

But what happens if del.icio.us publishes a new EULA and shuts their API down? Suddenly, it’s as if all the links, all the intelligence, was locked in a box.

With “bloggers,” each individual has a lot of power over a very small part of the web, but no one entity has a lot of power over a lot of the web.

Social bookmarking sites concentrate that value in a few hands. You may not trust me. But you can trust bloggers in aggregate, and the web as a whole.

<3ing on Walmart

As long as marketing and advertising fund the web, information will be the currency (well, “attention” I guess, but information is the attractor). In an information economy, Reg is arguing against Walmart: why support a censor-loving union-busting monarchy instead of that quaint local shop?

Altruism is great, but sometimes Walmart is just easier. Gabe da Silveira nails it:

Regarding the concentration of power, that’s just an economic requirement. Most users can’t create their own websites, or run their own servers, much less write their own software.

Even if you can create your own website there are benefits to scale, not the least of which is PageRank. And used properly, an aggregator can raise all ships: the author reaches a wider audience, commenters get single sign-on and response tracking, and reddit gets content for their hungry eyeballs.

A third way

Unlike money, information is inexhaustible. Less pretentiously: why not copy the reddit comments onto your own site? Simply 1) query reddit for your stories URL 2) if found, screen-scrape comments and 3) add them to your own blog. Realistically: reddit has no API (despite the request), the HTML isn’t easily scrapable and, of course, there could–IANAL–be legal concerns.

But not all site are the same: del.icio.us and digg both have API’s and Flickr has made switching services easier by granting API keys to its competitors.

Reg points out that an API can be nullified with the flick of an EULA. A site could also disable their API or start blocking IP’s, but it’s unlikely. Economics cuts both ways: large sites grow larger by using their scale to provide value; large sites become small sites by pissing off their customers. The easiest way to piss customers is by having an inferior product. Open data isn’t as important to most people, but it will be once enough people get burned.

Interoperability is important to a specific group, namely developers. Check the furor over AppEngine. The business case for an API is that a thriving ecosystem provides the best sort of lock-in: happy customers. If restrictive policies drive away the builders of said ecosystem, why bother having an API at all? (Counterpoint: the internet swelled over the idea of coding to a closed platform. I wonder what will happen when Android phones show up?)

A monopoly would change everything. This is both worrying and… er, not worrying: closed data could be the new lock-in or maybe the internet’s low barrier to entry will keep facilitating innovation (and in turn defection).

Vote with your bits

If you care about open data there are several things you can do. In roughly descending order of difficulty: pass an open-data law, write data liberation programs (like the reddit comment-crawler) or use the meme-sharing power of the internet to organize (see: Creative Labs).

Those all require skill, or at least initiative. At the bottom of the hierarchy is the simplest: vote with your bits. In this light, Reg’s post (and those of the EFF, Larry Lessig, Cory Doctorow, Mark Pilgrim and others) form like Voltron into a digital Ralph Nader, educating the online community so we can all invest our information wisely.


Are your comments getting borked?

2008-04-11 / 14:58 / dave

Rob tried to comment got both a rejection by WP-IDS and a nice PHP error message about missing paths. Woo boy.

The error was probably caused by a configuration error that I think I fixed. But I’ve got no idea why the comment was rejected in the first place.

If the same thing happens to me let me know and I’ll try to fix things.


TDD skips the idea phase

2008-04-11 / 14:53 / dave

One of the parts I liked about The Myths of Innovation (full review) was the simple description of brainstorming:

  1. Facts
  2. Ideas
  3. Solutions

I’ve previously had some issues with TDD, and viewed in Scott’s three steps I realize it’s simply: TDD skips the idea phase.

The facts are the problem you’re trying to solve, and the solution is the end product. I guess the ideas are supposed to be the the tests & code, but that just doesn’t work for me. Maybe I need nimbler fingers but I suspect that the real problem is that code is too limiting. By nature, programming distills an abstract idea into instructions so simple that even the world’s fastest idiot–a computer–can understand them. This clear, orderly expression of ideas is too limiting for the free association that generates new ideas.

Or maybe it means that I’m not yet fluent in my language (Python) or the underlying language of programming (architectural decisions, algorithm complexity, etc.)? Perhaps being a master programming is a fluency such that it’s faster to sketch in Emacs than on paper; familiarity has certainly cut down on my need for crutches. Master level fluency also explains both the talented programmer’s obsessive devotion to their chosen language/environment and love of learning new languages. The first aids expression, like an artists well-lit studio or a gamer’s abbreviations and slang. The second expands the range of expression, like an artist trying a new medium or a gamer going outside.

But if expressing ideas in TDD requires fluency, then its purest “test&code” implementation is only useful for master level programmers. Is this an example of how agile is only for elites? (more “agile only works for elites” links welcome, I know there are more but couldn’t find them)


So what PHP security hole did that open up?

2008-04-11 / 01:56 / dave

To make playing around with Wordpress easier, I wanted to set-up a local test environment. Since Tim Altman has renewed my quest to get PHP authentication working on DreamHost, I need to run PHP via CGI.

Whew-ee.

The PHP Windows installer added some lines to httpd.conf:

ScriptAlias /php/ "c:/php/"
Action application/x-httpd-php "/php/php-cgi.exe"

After installation I could only run .php files from cgi-bin/ and only by using #!. The PHP install.txt lead me to add

AddType application/x-httpd-php .php

Which didn’t help. Luckily Apache’s logs/error.log sensibly stated

...[error] [client 127.0.0.1] client denied by server configuration: C:/php/

So now I’ve got:

<Directory "C:/php/">
    AllowOverride None
    Options None
    Order deny,allow
    Allow from all
</Directory>
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

Which works, but at the expense of allowing access to the C:/php directory. What kind of security holes does that open? I poked around in the browser and couldn’t access any of the files. Plus the Apache user also doesn’t have write access to the directory and I only start httpd right before testing. Still…

White hats: advice, please.

Black hats: mercy, please.


Need a cheap mountain bike?

2008-04-09 / 12:46 / dave

Hey-o,

My friend Jack is selling some bikes. They’re mountain bikes which are super ocol. Plus they’re cheap. Email me if you’re interested and I’ll pass it along to Jack (I don’t want to out his email address on the web).

He says:

The green Kona needs some love, but the steel frame is still in very good condition. I’ll let it go for $50.

Update: 18″ frame. Here are some specs

(click for full-size pics)
1999 Kona Hahanna, picture 1

1999 Kona Hahanna, picture 2

The white GT is in really good shape. Jess took good care of it. It’s got an aluminum frame that was the same frame that GT used on several of their higher-end bikes that year, so it would make a great bike to start with that can be upgraded as fit. It’s ready to go right now for someone looking to get started. We want $100 for it.

Update: 14.5″ frame. specs.
(click for full-size pics)
2000 GT Outpost, picture 1

2000 GT Outpost, picture 2