All posts by John Goerzen

Linux, Bluetooth and Mobile Phones

I got my first Bluetooth-enabled mobile phone this week, a Motorola v551. I’ve been playing with the Linux utilities for working with mobile phones and have assembled some links. Most of the pages out there seem focused on SMS features of a mobile, or using a mobile phone for Internet access for a Linux box. I’m interested in neither, and care more about phone book syncing and transferring files back and forth between the phone itself and a PC.

There seems to be quite a community built around hacking Motorola phones as well. The Hofo Guide is the authoritative resource.

HowardForums.Com is also a great site.

The Reactionary Pedestrian

Living On Earth did a segment about the Reactionary Pedestrian. He tried to walk the 2,000 miles from Georgia to Maine, and wound up walking 3,000 miles just to get to Georgia. He attempts to walk across the Huey Long Bridge, but is stopped by a Louisiana State Police officer, who told him there is no bridge across the Mississippi in Louisiana that allows pedestrian traffic. He winds up having to take a bus.

He also mentions that on Valentine’s evening, a long row of SUVs could be seen driving down the beach. But he was the only one walking.

He raises a lot of good points.

You can listen to Abner Serd himself (10 minute MP3 or RealAudio), or read a transcript.

Do they really care?

Adam Kessel has an good post about terrorism and the west. I agree with him; I don’t think that the terrorists really care about “our way of life” or “our value” or even “hate our freedom”. They care about what’s going on in the mideast only, and the west is a target because we’re doing things they don’t like.

Cingular… doesn’t suck?

Well. I didn’t think I’d ever have something good to say about a cell phone company. I don’t actually have my Cingular phone yet, but I did sign up over the phone for it. The Cingular sales rep actually seemed to want my business! Shocking, isn’t it? And — he actually knew things about his service that I didn’t, and even more, didn’t give me any blatantly incorrect information!

The guy also volunteered his direct extension to me, on multiple occasions. With Sprint, the best you can get is a username that another rep can e-mail (and the original one can then quickly delete), and that’s only after pressuring them hard. It’s nice to be able to talk to the original person if there’s a problem.

So, as a public service, I will now present a Sprint PCS vs. Cingular comparison in handy side-by-side format. So it could possibly be that I will never write a “Cingular sucks” story. We’ll see.

Sprint PCS Cingular
Seems greatly inconvenienced by the almost insurmountable burden of taking money from me each month Appears to actually want customers for some odd reason
Closes most calls by transferring me to a busy signal, the automated attendant, or saying they will transfer me, then hanging up. Closes most calls by giving out their direct number, with an offer to help with any future needs
Monitors calls to make sure nobody accidentally gets quality service Monitors calls to make sure they didn’t hire anyone from Sprint
Charged me $145 more than advertised for a phone Saved me $30 on my phone by giving me the sale price (the sale ended yesterday)
All employees try to remain as anonymous as possible. It is more likely to be struck twice by lightning than to speak to the same Sprint employee twice. Tell you how to reach them again before you ask.
Sign you up for services you don’t want. Only offer you services you don’t want.
Charges you to use your Sprint phone to find your current usage Current usage info is free
Employees seem to be annoyed they aren’t at home watching Jerry Springer (or perhaps the Indian equivolent) Employees seem to be annoyed when they have to put you on hold for more than 30 seconds
Average wait time to speak to the first person: 45 minutes, unless I need to speak to someone that can actually fix my problem, in which case it’s 45 minutes plus an incorrect transfer. Average wait time to speak to someone: about 60 seconds.
Number of time a customer support rep has incorrectly transferred me can only be estimated by advanced mathematics and supercomputers What’s this “transfer” thing I hear so much about?
Routinely claim to be unable to do things because “the computers are down”. Merged with a division of the company that invented UNIX
Company-owned retail stores require you to take a number, then wait in a crowded room for an hour, with no place to sit, just so you can be told that you must call Sprint Customer Service to get your problem resolved Company-owned retail stores require you to wait in an open place for about 15 minutes before they solve a problem. No need to take a number because the salepeople can remember faces.
Company-owned retail stores most frequently visited by people that haven’t paid their bill, or those that don’t want to have to call Sprint Customer Service Company-owned retail stores most frequently visited by people that want to buy a cell phone

So I don’t even have my phone yet, and I have only spoken to salespeople. But it seems like a positive sign that the Cingular sales people actually want to sell things. The Sprint people, from every department, usually wish that these pesky customer folks would just go away.

Albatron *Really* Sucks

So I have some complaints about the lack of support from Albatron. Here’s a fun little e-mail from them:

From: RMA Support <tan@albatronusa.com>
Date: Fri, 24 Jun 2005 17:30:52 -0700
To: John Goerzen <jgoerzen@complete.org>
Subject: RE: Status?

Dear Customer,

Thank you for contacting AlbatronUSA/Monivision Support.

At the moment, we do not have any record of the invoice. Please resubmit
with your name.
[snip]

Reaaaallly…. Let me just check my /var/log/exim4 directory…

2005-06-20 22:31:17 1DkZTh-0006Nv-JB => rma@albatronusa.com R=dnslookup 
T=remote_smtp S=21076 H=mail.albatronusa.com [66.15.159.40] C="250 2.6.0 
<20050621033048.GA8520@fritz.complete.org> Queued mail for delivery" 
QT=8s DT=1s

Ahh yes, thought so. Sent to you 4 days ago, even. 21K. Gee, perhaps it INCLUDES A PDF OF MY INVOICE, COMPLETE WITH MY FULL NAME ON IT AND IN THE HEADERS?

So here’s my dilemma. My system has one free slot. I popped a spare Ethernet card in it to restore network connectivity to my MythTV box (the problem that started all of this is that the on-board Ethernet on this Albatron motherboard went dead.) To do that, though, I had to remove the little plate that provides the S/PDIF optical audio output. I’m not using it yet, but had hoped to.

So…. do I risk sending my motherboard to a company who, in all likelihood, will lose it once it arrives (or take months to return it to me), or just deal with not being able to get audio output? (The new Stargate season starts in a few weeks, and I don’t want to miss it!)

Right now, I’m leaning towards giving up on the digital audio output and just telling anybody that reads this blog about how ALBATRON SUCKS.

There were a lot of helpful suggestions regarding their slogan “Spirit of the albatross” I mentioned in my last post. I suggested they should be “spirit of the weasel.” Some others pointed out how “Spirit of the albatross” was strangely appropriate. Here, Albatron, are some more suggestions for you:

  • “Spirit of Richard Nixon”
  • “Spirit of Digestive Biproducts”
  • “Spirit of Windows ME”
  • “Spirit of That Guy Selling Fake Rolexes In The Alley”
  • “Spirit of Blog Spammers”
  • “Spirit of Outlook”
  • “Spirit of Online Poker Sites”
  • “Spirit of Spyware”
  • “Spirit of That Crappy Paperclip In MS Office”
  • “Spirit of Microsoft Exchange”

(Yeah, that last one was really hitting below the belt, but they deserve it…)

Why I Love Haskell In One Simple Example

I recently implemented some new Haskell numeric types that, instead of performing calculations, can generate a rendering of the requested calculation or store units with it.

Here you see a transcript of my session with a Haskell interpreter. The mathematical statements I am entering after the “>” are standard Haskell expressions, and, as I demonstrate, normally evaluate to a single result.

Once I get a more powerful simplifier, I will probably write a LaTeX exporting function as well.

The entire implementation of this, BTW, is less than 200 lines.

NumTest> 5 + 1 * 3
8
NumTest> prettyShow $ 5 + 1 * 3
"5+(1*3)"
NumTest> rpnShow $ 5 + 1 * 3
"5 1 3 * +"
NumTest> prettyShow $ 5 + 1 * 3
"5+(1*3)"
NumTest> prettyShow $ simplify $ 5 + 1 * 3
"5+3"
NumTest> prettyShow $ 5 * (Symbol "x") + 3
"(5*x)+3"
NumTest> 5 / 2
2.5
NumTest> (units 5 "m") / (units 2 "s")
2.5_m/s
NumTest> (units 5 "m") / 2
2.5_m
NumTest> 10 * (units 5 "m") / (units 2 "s")
25.0_m/s
NumTest> sin (pi/2)
1.0
NumTest> sin (units (pi/2) "rad")
1.0_1.0
NumTest> sin (units 90 "deg")
1.0_1.0
NumTest> (units 50 "m") * sin (units 90 "deg")
50.0_m
NumTest> ((units 50 "m") * sin (units 90 "deg")) :: Units (SymbolicManip Double)
50.0*sin(((2.0*pi)*90.0)/360.0)_m
NumTest> rpnShow $ dropUnits $ ((units 50 "m") * sin (units 90 "deg"))
"50.0 2.0 pi * 90.0 * 360.0 / sin *"
NumTest> (units (Symbol "x") "m") * sin (units 90 "deg")
x*sin(((2.0*pi)*90.0)/360.0)_m

Also, I defined this in my source file:

test :: forall a. (Num a) => a
test = 2 * 5 + 3

Now, it can be used:

NumTest> test
13
NumTest> rpnShow test
"2 5 * 3 +"
NumTest> prettyShow test
"(2*5)+3"
NumTest> test + 5
18
NumTest> prettyShow (test + 5)
"((2*5)+3)+5"
NumTest> rpnShow $ test + 5
"2 5 * 3 + 5 +"

You can grab the very early experimental code with darcs get http://darcs.complete.org/num.

Haskell has no built-in support for numeric types with units, arbitrary symbols carried through computations, etc. But it was trivial to add it. This kind of extensibility is a key part of why Haskell is so amazing.