Honda Fit iPod controls: when something is worse than nothing

Honda FitI own a 2009 Honda Fit. It’s the second Fit I’ve owned, having purchased a 2008 model less than a year earlier. It’s not that I disliked the 2008 — I loved it. But we wanted to get down to one car, and it worked out perfectly to make an even trade of our 2008 Fit plus our old 2000 Civic for a 2009 Fit with a few upgrades. But we’ve already been over all of this.

One of the things I was most excited about with the 2009 Fit was the integrated iPod support. I have an old iPod that I’ve dedicated solely to providing music in the Fit, and it was great to not have to rely on the 1/8-inch audio input jack, but instead to stash the iPod in a special second glove compartment with an integrated USB port. Plug the iPod in and forget it — you can control it straight from the car stereo. Perfect.

Or so I thought.

Yes, it’s true that you can do all of that. But the controls for operating the iPod from the car stereo are abysmal. You can browse the iPod’s contents by playlist, artist, album or song, but there’s no secondary browsing (other than albums by artist). When you’ve got a 30 GB iPod with thousands of songs, from hundreds of albums, by hundreds of artists, this method is inefficient, to say the least.

What’s worse, you always have to start from the beginning in each list, and it doesn’t wrap around if you try to scroll backwards. Good luck finding music by a band like Yes… you’ll be scrolling for days. (And did I mention how slooooow the scrolling is? Spin that dial as frantically as you want, it’s still going to tick through the list one item at a time, at the same leisurely pace.) And if you’ve taken the time to scroll all the way to the Y’s and are listening to Yes, then you decide you want to listen to U2, don’t think you can just start at Y and scroll back to U — oh, no — you’ll find yourself right back at A.

I’ve been incredulous about this horrible navigation system since almost immediately after I bought the Fit, and I have been searching for any kind of relief — a firmware update would be best, but I’d even settle for the simple ability to turn off the console navigation and control the music directly from the iPod. But as soon as you plug it in, the car stereo takes over and you can’t control the iPod directly. The only solutions I’ve found are to unplug the iPod and set up the music you want, hit play, and then plug it in — the stereo will at least keep it going from that point — or to skip the USB altogether and go back to the 1/8-inch input. But that’s on the dash next to the stereo controls, and you’d end up with a cord dangling there — not the elegant, enclosed solution the hidden USB port offers.

What a drag. I’ve been searching for an answer and apparently I’m not alone. I’m hoping, at least for the sake of others, that Honda has improved the system in the 2010 Fit. But that won’t help me.

In the past, I’ve found that blogging about something like this often attracts the attention of someone with an answer. Here’s hoping it works this time. Someone… help!

CakePHP paginator sorting problem solved!

I’ll keep this brief, because I need to get back to writing code, but I wanted to share the solution I found to a CakePHP problem that has been nagging me for a while and for which I had never found a simple resolution.

I’m using the $paginator->sort() method to create links in the column headers for tables of paginated search results in my CMS. The method works great, except for one small problem: I could never get it to reverse the order. Intuitively, with links like these, you should be able to click them once to sort in ascending order, and then click again to reverse into descending order. But the reverse was never working for me.

Some research showed that you can pass in all sorts of options to the method, but I wanted to avoid having to make a change like that to about a dozen views; plus, it just didn’t seem right — the method is supposed to do the reverse by default.

At last I have discovered the source of my trouble: you need to explicitly name the model in the parameter that defines the sort field. I’ve been getting more diligent about always naming my models explicitly, but back when I set up these paginated tables (which was about the first thing I did in writing the application), I wasn’t doing it yet. Adding in the model, the reverse order on a second click works perfectly. Here’s a before-and-after example to illustrate the problem and its resolution.

Before:

<?php echo $paginator->sort('Title', 'title'); ?>

After:

<?php echo $paginator->sort('Title', 'Article.title'); ?>

“Fake Steve Jobs” on the true cost of Chinese manufacturing

I often complain about how just about everything is made in China these days. It’s about the exploitation of workers for the sake of cheaper goods. Well, in case you didn’t hear about it, a worker at the Chinese factory that makes iPhones committed suicide recently because he lost a prototype fourth-generation iPhone. And why did he commit suicide over this? Because he was apparently being tortured by his employers (Foxconn) over it. Presumably because this is the kind of mistake that might cost Foxconn their lucrative contract with Apple.

What was that factory worker’s life worth? Less than Foxconn’s iPhone manufacturing contract? Less than Apple’s potentially stolen trade secrets?

“Fake Steve Jobs” has posted a blog entry on the matter. If you’ve never read his blog before, the tone may be a bit shocking to you, but cut through the parody and there are a couple of paragraphs here that are probably the best critique ever of our reliance on cheap Chinese labor to manufacture the high-tech, low-cost devices we consume so voraciously:

Well, this is the world we are living in. These are the people we are dealing with. This is how we have to deal with them. We can’t make these products in the United States. Nobody could afford to buy them if we did. And, frankly, the quality would be about half what we get out of China. But these guys play rough. They really do. They are not nice people. And, though we talk a good game about how we insist on workers being treated with dignity, blah blah blah, well, I mean, come on. Have you ever been to China? We have. We’ve been to China. We know what goes on there. We know how they open your mail, and listen to your phone calls, and let their factories pollute like crazy and exploit workers, all in the name of progress. And we turn a blind eye to it. We let them know when we’re coming to visit, and they give us a tour and put on a little show of how great things are, and how wonderful the dorm life is, and afterward we pretend to keep an eye on them — but it’s all theater. It is. We know it. What’s more, you know it. Everyone knows it.

We all know that there’s no fucking way in the world we should have microwave ovens and refrigerators and TV sets and everything else at the prices we’re paying for them. There’s no way we get all this stuff and everything is done fair and square and everyone gets treated right. No way. And don’t be confused — what we’re talking about here is our way of life. Our standard of living. You want to “fix things in China,” well, it’s gonna cost you. Because everything you own, it’s all done on the backs of millions of poor people whose lives are so awful you can’t even begin to imagine them, people who will do anything to get a life that is a tiny bit better than the shitty one they were born into, people who get exploited and treated like shit and, in the worst of all cases, pay with their lives.

I’ve read plenty about the conditions in Chinese factories, enough to make me want to never buy anything that says “Made in China” on the label. But, honestly, that’s getting nearly impossible these days. It’s not just about being too cheap to buy the more expensive version of the product made somewhere else with better labor laws; it’s that in many cases there is no other option that wasn’t also made in China.

Apple products present the biggest dilemma for me personally. I’ve been a Mac-o-phile for over 15 years. I’ve staked my livelihood around work that depends integrally on things Apple makes, and they’re all made in China. And Apple’s not alone — as far as I know, all of the major computer companies contract out their manufacturing to Chinese firms. I suppose I could build my own PCs and switch to Linux, but even then, it would be hard to find all of the necessary components that go into a computer, with a “nothing-made-in-China” restriction.

So, for me, in many cases, boycotting Chinese-made goods is simply impossible. But I do what I can. If there’s another option, I’ll take it. I’m willing to pay more if I have to. And even though I’m writing this on an Apple computer that was manufactured in one of these same Chinese factories, perhaps speaking out on the matter is some small penance for my complicity in what’s going on.

There’s more on the story from Gizmodo and, as usual, I learned about it all from Daring Fireball.

Ow, my brain!

Apollo 11 astronautI write code for a living. But we web developers have it easy. Server-side scripting languages like PHP may look alien at first, but they’re pretty easy to pick up and intuitive enough that you can really get going pretty fast, and once you’re familiar with the basic principles, it’s not hard to look at a block of code and figure out what it does.

But programming in the old days was a much finer and darker art. System resources were scarce, and everything had to be as efficient as possible — on the computer hardware, at least. A lot more of the “processing” had to happen inside the brains of the programmers before any of the code was even written. Looking at this kind of old code fries my brain.

The most notorious example of old-school assembler code I’ve encountered is the language used to program the Atari 2600. That’s something I’ve never been willing to touch, myself. And it’s for something trivial — video games. But here’s something that really freaks me out: the original source code from Apollo 11. This code is every bit as inscrutable — or more — and it was mission critical: the lives of three astronauts, over 200,000 miles from Earth depended on it working flawlessly.

Well, they made it back, so I guess it worked. But looking at the code, I have no idea how. Here’s an excerpt:

GUILDEN		EXTEND			# IS UN-AUTO-THROTTLE DISCRETE PRESENT?
# STERN					# RSB 2009: Not originally a comment.
  		READ CHAN30
		MASK	BIT5
  		CCS	A
  		TCF	STARTP67	# YES
P67NOW?		TC	CHECKMM		# NO:  ARE WE IN P67 NOW?
		DEC	67
		TCF	STABL?		# NO
STARTP66	TC	FASTCHNG	# YES
		TC	NEWMODEX
DEC66		DEC	66
		EXTEND
		DCA	HDOTDISP	# SET DESIRED ALTITUDE RATE = CURRENT
		DXCH	VDGVERT		# 	ALTITUDE RATE.
STRTP66A	TC	INTPRET
		SLOAD	PUSH
			PBIASZ
		SLOAD	PUSH
			PBIASY
		SLOAD	VDEF
			PBIASX
		VXSC	SET
			BIASFACT
			RODFLAG
		STOVL	VBIAS
			TEMX
		VCOMP
		STOVL	OLDPIPAX
			ZEROVECS
		STODL	DELVROD
			RODSCALE
		STODL	RODSCAL1
			PIPTIME
		STORE	LASTTPIP
		EXIT
		CAF	ZERO
		TS	FCOLD
		TS	FWEIGHT
		TS	FWEIGHT +1
VRTSTART	TS	WCHVERT

Source: Daring Fireball (of course).