Cap'n Arbyte's

Advertisements


Local interest


Other sites


Blogroll

June 30, 2006

Victory Against Blindness

Today the FDA approved Genentech's drug Lucentis for "wet" age-related macular degeneration, the leading cause of blindness in elderly Americans. Bringing this drug to market marks another triumph of human ingenuity over natural decay.

The most exciting aspect of this drug is that it not only halts the damage, but it actually helps to restore vision in many patients:

In late-stage clinical trials, Genentech showed that 34 percent of AMD patients given Lucentis gained three or more lines on an eye chart after one year, compared with 5 percent of patients given a placebo. Another trial comparing Lucentis with Novartis' Visudyne treatment showed that 40 percent of Lucentis patients had a three or more line improvement, compared with 6 percent of patients given Visudyne. In both studies, 95 percent of patients given Lucentis did not lose any visual acuity.

The bad news for the squeamish is that this drug is injected directly into the eye. (Drug delivery is hard stuff.) Another jaw-dropper is the high cost of treatment:

During a conference call with investors Friday, company officials said a 0.5 milligram dose of Lucentis will be priced at $1,950, with the number of recommended injections per patient expected to range between 5 and 7 per year.

Many people will be outraged by this price tag, railing against the "exploitation" of the elderly needy for the sake of Big Pharma Profits. These luddites need to shut the hell up and pay attention. This drug exists because Genentech saw the profit potential of this drug and invested ten years developing it.

For goodness' sake, this drug can reverse blindness. It will be a miracle treatment to potentially hundreds of thousands. It is unequivocally good. Genentech should charge what the market will bear, and be proud of every penny it earns as the result of its very difficult and highly valuable work.

June 22, 2006

Malarkey Numbers

In a bid to further alienate the economics / politics / finance audience I've built up over the years, let's talk about the super-fun subject of math.

Why? Because I hit a mathematical coincidence at work that was both amusing and time-consuming. Here's some simplified background to explain the situation. I'll phrase it in terms of software pointers, but my circumstances actually involved hardware.

I was looking at a number that I knew was an index into an array of 4-byte values. These values happen to be byte-addressable, however, so it's sensible to also think about them as a byte array. Recall your introductory programming classes where you learned that for int * p, the value of p+1 is "really" p+4 because each int is four bytes wide.

I became confused because I was comparing the indices of nearby array elements in two different contexts — in one, adjacency showed up as ±1 and in the other, adjacency showed up as ±4. My natural suspicion was that the ±1 numbers were the "array index" numbers and the ±4 numbers were the "pointer offset" numbers. Except that didn't make sense, because to scale an array index to a pointer offset you have to multiply by 4, yet the two numbers I was looking at were both the same: 8478. No scaling by 4! How could this be? I suspected there was a bug in the code that generated my information.

I'll cut to the punch line. There was no bug, but something else was going on here. The first set of numbers was displayed in decimal and the second set of numbers was displayed in hexadecimal (without a leading 0x to disambiguate). And it just so happens that when you take decimal 8478, multiply it by four, and convert the result to hexadecimal … you get 8478. Everything was fine, just a little ambiguous in the presentation. Problems like this are exactly what the 0x prefix is for.

I did a little math (which I'll now share with you) and realized that there are many such numbers. A friend suggested I seize the opportunity to christen these "malarkey numbers" in honor of a famous misstatement of my last name at an award ceremony several years ago. So, here goes:

Malarkey Number
A number whose hexadecimal textual representation is identical to the decimal textual representation of the number multiplied by four.

A little analysis leads us to some interesting properties flowing from this definition. Here's an analysis for 4-digit numbers, like I accidentally hit:

4 * (1000*a + 100*b + 10*c + 1*d) = 4096*a + 256*b + 16*c + 1*d
              144*b + 24*c + 3*d  =   96*a
               48*b +  8*c +   d  =   32*a
32a = 48b + 8c + d, where each of a b c and d ∈ {0 .. 9}

A few properties are quickly apparent: There are no malarkey numbers of fewer than than 4 digits (a=0). The first digit (a) is necessarily greater than the second digit (b). The last digit (d) can only be 0 or 8, because all the other terms are multiples of 8.

Let d=0 and the expression simplifies to 4a=6b+c, implying c is even. Let d=8 and the expression simplifies to 4a=6b+c+1, implying c is odd.

A quick brute-force search (aren't computers wonderful?) confirms these properties and provides the full list of four-digit malarkey numbers, making some latent patterns visible:

0000 1038 1040 2078 2080 2118 2120 3158 3160 3200
4198 4238 4240 5278 5280 5318 5320 6358 6360 6400
7398 7438 7440 8478 8480 8518 8520 9558 9560 9600

Isn't it interesting how they "mostly" come in pairs, 2 apart?

Also interestingly, all malarkey numbers (except zero) are four digits. All extra digits wind up on the same "side" of the equation as "a", but have coefficients so large that the equality can never hold unless these new digits are all zero.

Therefore, the above is the complete list of malarkey numbers. There are only thirty, and I stumbled upon one of them totally by accident. In a huge list of mostly ordinary numbers, the first one I looked at happened to be a malarkey number. Just my luck.

June 11, 2006

Too Complicated

A few days ago I complained briefly that I couldn't boot OpenBSD into MP mode on my new computer. I've done some more investigating and since it's occupied a lot of my time I might as well blog about it. See the references at the end of this post to view the source files and specifications mentioned herein.

The crash that throws me into the kernel debugger when I boot the MP kernel occurs in the intr_find_mpmapping function of intr.c. At the point of failure it's trying to look up the mapping for my network interface (em0 at pci4 dev 0 function 0 "Intel PRO/1000MT (82573E)" rev 0x03) which is, as you see, on PCI bus #4. The code reads from the mp_busses array without bounds checking, which is arguably a bug. In my case it is reading past the end of the array.

To figure that out, I had to look at where the array was allocated -- the mpbios_scan function of mpbios.c. It's allocated with zero length because mp_nbus is 0. Why is that? The loop immediately before the malloc is traversing the MP Configuration Table, a structure defined in the Intel MultiProcessor Specification and created by BIOS.

The MP Configuration Table (hereafter mptable) being traversed by the kernel looks valid, but it's only a stub. The header indicates only a single entry exists in the table. Examining memory reveals that it's an entry for a processor. There are no bus entries at all, which explains why 0 bytes was allocated for the mp_busses array. I expected to see four processor entries (because my CPU supports four threads), several bus entries, and a smattering of APIC and interrupt entries too. But I have a stub mptable.

Is this a BIOS bug? I'm not sure yet. The MP spec is 9 years old and has been largely supplanted by the ACPI spec. I don't know whether BIOS is expected to create a proper mptable anymore, or if operating systems are expected to parse the ACPI tables instead. But I have a nice social network; I know people who know people who wrote this BIOS, so I'll ask them. :)

It's also possible that I'm looking at a corrupted or otherwise incorrect mptable. There are several possible locations for this structure and the MP Spec defines the proper search sequence. Maybe the kernel is searching in the wrong order and found a stub. (Which would be weird, but possible.) Maybe I'm looking at a modified copy of BIOS's original mptable.

Another mystery is why the system boots successfully with the non-MP kernel. Does it use a different and correct mptable or does it ignore the mptable entirely and do something else?

I'm long on questions and short on answers at this point. Computers are Too Complicated™.

References:

June 09, 2006

Cervical Cancer Vaccine

I don't have time for a lengthy post about this, but there's some important cancer news out today. Gardasil, Merck's cervical cancer vaccine, was approved by the FDA. I'm having trouble finding a thorough news story about this, but here's a good quote from a different story:

… researchers presented data showing Merck's Gardasil was 100 percent effective at preventing pre-cancerous growths in the vagina or vulva caused by two HPV strains. It also was 81 percent effective at preventing the same conditions if they were caused by any HPV type, said Dr. Jorma Paavonen, the study's lead author and chief physician at the University of Helsinki's obstetrics and gynecology department. [source]

It's important to understand that this is a vaccine, not a cure — it prevents infections that can lead to cancer, but does not cure cancer once developed. Nonetheless, it's an extremely valuable medical advance, and Merck deserves accolades for bringing it to production. Well done!

I hope that publicity around this vaccine will educate people that cancer can be caused by infections. I've long since lost any patience for the anti-scientific mentality that generically blames "chemicals" and other "toxins" for cancer, when in this case the culprit is a perfectly natural virus. A virus that now we can prevent … with a chemical.

Two hearty hurrahs for chemistry and for the germ theory of disease! This is a triumph of science over nature. We deserve, as a species, to bask in this victory.

June 08, 2006

Tinkering

I'm spending almost all of my spare time tinkering with my new computer. So I haven't been blogging, or reading blogs, or even answering much e-mail. Or sleeping.

I'm looking for recommendations for a cheap or free Windows NFS client. I'd love to use Microsoft Services for UNIX but it claims it won't install on Windows XP Home. I've gotten a shareware client to run but the performance is awful.

I'm also looking for pointers on getting my system running with the MP kernel. When I try to boot with the default MP kernel, it crashes and throws me into the kernel debugger… I'll try building my own kernel in the near future but odds are good that I'll simply hit the same problem again.

Wheee! Computers are fun.

June 05, 2006

A Company I Hate

I celebrate capitalism. Even when I have a bad experience with a business, I'm comforted to know that in the long run bad businesses will be outcompeted by good businesses. Improvement is the norm. And I've recently encountered a company that I believe the world would be better off without.

The dark underbelly of the credit industry was revealed to me through a very interesting telemarketing call. I got the call because my credit report looks scary right now due to all the debt I'm carrying in order to make money with credit card arbitrage. My credit report fits the profile of someone in financial distress, and there are many companies eager to serve this clientele.

The company who called me, and who is the object of my wrath today, is named Fidelity Debt Consultants. (They are not related to Fidelity Investments, which is a fine company with whom I've had a good relationship.) FDC is a company preying simultaneously on both credit card companies and financially unsavvy consumers. Oooh, look at that verb, "preying" — yeah, I hate those guys.

This is actual hatred; I think they're scum. This is much beyond jokingly saying "I hate those guys" after telling a story about bad customer service. I'm actually almost to the point of saying that what FDC does ought to be illegal. That oughta raise an eyebrow or two…

FDC seeks out people with high credit card balances and offers them their services. What are their services? They're not an ordinary debt consolidator — they're a debt negotiator. And they claim that through their service you'll have about 40% of your credit card debt forgiven outright and that you'll pay the rest back, interest free, over several years. Does that sound too good to be true? I certainly thought so. So I stayed on the phone with them to collect information. Our conversation lasted about two hours, and didn't end nicely.

Briefly, this is how FDC's program works. You contract with them to negotiate your debt. Your creditors settle for about half of what they're owed, and you set up a payment plan with FDC. They claim you're paying back at 0%, but that's an illusion. FDC's fees are quite high: an enrollment fee equal to your first three monthly payments, a settlement fee of 29% of the amount they "save" you on your debt, and an administrative fee of only $49 a month — what a bargain!!

High fees are typical for companies dealing with people who have bad credit, and that's not what draws my ire. In fact, I had the opportunity to explain this to the supervisor near the end of my telephone call. He had a well-rehearsed rant on how horrible it was that credit cards could charge over 20% interest to people who were in default. It's unfair that they can jack up the interest rate like that! I countered by saying that I read the fine print on my credit cards and was well aware that they could do that and that I don't believe there's anything wrong with usurious interest rates. I had a great libertarian moment, too: He asked if I really thought there was nothing wrong with them jacking up the interest rate and coming after you "like the mob." I countered that no, they're not like the mob, because the mob will shoot your kneecap but the credit card companies are nonviolent. As long as there's no violence, high interest rates are okay. He changed the subject.

Why do I hate FDC? There's a clue to it in the structure of their program. The enrollment fee is paid with your first three monthly payments. For those three months you send money to FDC but not to your creditors. FDC's program puts you in default to your creditors. That's not an accident. It's essential. And they made the reasons for this this very clear in the telephone call.

Credit card companies know that if an account is in default for several months with no payment, they're unlikely to get repaid. They're eager to settle the account or sell it to a collection agency for pennies on the dollar, because the alternative is very likely getting nothing back at all. FDC's program is to let the account go into collection and then to go into arbitration to negotiate a lower balance that you'll pay off.

A pretty good scheme, isn't it? It games the system quite nicely. FDC will even send you scripts so you can fend off the phone calls from the collection agency! They're also honest about how their program will hurt your credit although in my opinion they downplayed the significance of that.

I told them I was skeptical that they could negotiate away my debt because I was not, in fact, in financial peril. I told them I have no trouble at all making my payments and even that I could pay off my balances in full if I needed to. (They never bothered to ask why I had so much debt.) I think this put me in their "dream customer" category — virtually no risk, and I estimate they would have made about $7,000 in fees from me.

They explained that my financial condition didn't matter. My creditors wouldn't have access to that information, so they would be happy to settle the debt for much less than the full balance. Holy information asymmetry, Batman!

Perhaps FDC's services would be appropriate for someone who was already in financial distress, already in default on their obligations. The arbitration process exists for this very purpose. My outrage is directed at the fact that FDC entices people to default. Even people like me who acquired their debt with eyes wide open, fully aware of the consequences, and easily able to repay it. FDC was asking me to default on my agreement with my creditors for the express purpose of screwing them out of what I owe them.

No. I made an agreement, and my word is my bond. I suspect that attitude is totally foreign to the employees of Fidelity Debt Consultants.

It's deliciously ironic that the only reason I've acquired this debt is for the purpose of arbitrage. I'm holding someone else's money and earning interest on it while paying them back at 0%. So in my own way I'm also taking advantage of the credit card companies. But what I'm doing is totally aboveboard and involves no deception at all. They offered me 0% and I said thank you. FDC would have me needlessly break my agreement with my creditors and then take advantage of their ignorance. Absolutely not.

The system is broken. The weak point appears to be the fact that unsecured debt is a little too unsecure. I think lenders need to insert language into their credit agreements that gives them access to information about the debtor's financial condition during arbitration. This would fix the information asymmetry so they could negotiate without being taken advantage of. It would close the loophole that FDC is depending on as it woos customers like me.

See? You shouldn't have worried! :) We don't need a law or regulation to deal with heinous programs like FDC's. We just need better credit agreements. Company lawyers, go! Make it happen!


Strangely, much of the telephone conversation was spent arguing over my refusal to give them the last four digits of my social security number. I told them that it is my policy never to reveal sensitive personal information on a telephone call that I didn't originate. They didn't take the hint and kept trying, so I had to be very firm with them. They wanted those digits plus a bank account number (so they could set up the automatic payments for their program) before they would mail me an information packet.

They claim that it costs them about $700 to mail the information because they have to do research to verify my identity and credit information and that sort of thing, so they don't want to mail the packet to people who aren't very serious about enrolling. While I very badly wanted to read their legal explanation of their program and the scripts they would have me wield against calls from collection agencies, I'm very stubborn about my no sensitive information policy.

Also, they explained that I would have several days to review the material and to call them to cancel if I wanted to. No, I won't do business that way. I insist that I read the details of a program before enrolling. They were going to set up an automatic payment from my bank account before letting me read their documentation. No way!

(I often turn down offers like this. "The first month is free, and if you read our information and don't like the program, you can call to cancel." No, no, no!)

June 01, 2006

End of the Long Distance Tax

The IRS is finally giving up on the 3% long distance telephone tax. They're only giving up after having lost several legal appeals, and they're being forced to issue refunds for the past 3 years. (You can claim a refund on next year's taxes.)

I celebrate each time the courts smack down the IRS, but I'm dismayed that the IRS wouldn't give up sooner. And, they've only given up on this tax for long distance service — they're still collecting the tax on local service.

Congress could have stopped this nonsense years ago by repealing the tax. Shame on Congress. They still ought to repeal the tax because that would get rid of the tax on local service, too. And it's generally a good idea to delete obsolete law so that it doesn't unexpectedly surprise people in the future.

I stopped paying the long distance tax a few months ago. My long distance provider had me sign a form and mail it to them — that's all it took. They told me I shouldn't publicize the specific process, though, so I didn't write about it at the time.

Net Worth Report - End of 05/06

It was a bad month in the financial markets. The S&P 500 dropped 2.7%, which is also remarkably close to how my own investments performed (if I ignore my salary and appreciation of my home). This drop cost me about a month of time toward my personal goal.

The interesting news this month is that I've damaged my credit with so much credit card arbitrage that I was turned down on a new card I was going to transfer a balance to. So I had to pay off one of my cards. :(

Even more interesting, I got a telemarketing call from a company in the debt consolidation industry. I talked to them for a very long time and this call will be the basis for a longish and scathing article in the near future. I've already started writing it, but there's a lot more writing to do.

That's all the commentary I have for this month. Here are the standard tables and explanations, with one twist — I'm providing a two month view of my credit card arbitrage info so the change is more visible.

Net Worth Figures
Category04/0605/06
Total$441,735.11$439,321.99
Short-term$15,933.36$17,077.73
Medium-term$100,702.26$95,603.98
Retirement$155,021.45$150,881.38
Property$170,078.04$175,758.90

Recall that I'm defining "Adjusted Net Worth" as net worth excluding the value of autos and unvested stock. The "Estimated Contribution" is how much money I believe I'll need to invest in order to meet the following month's ANW target. A declining EC indicates that I'm ahead of plan, and an increasing EC indicates that I need to save more in order to reach my long-term goal.

Goal-Tracking Figures
Item04/0605/06
Adjusted Net Worth$404,754.46$404,501.19
Next Month's Target$407,039.38$406,814.01
Estimated Contribution$331.06$388.80

My credit card balances are 100% backed by time deposits and/or savings accounts earning interest at a higher rate than I'm being charged by the credit card companies. The monthly payment is estimated as 2% of the balance. (Most credit cards are now using a 2% minimum payment, and due to this it is important to have a strong cash flow and/or pay with funds from your credit card arbitrage savings account.)

Credit Card Arbitrage Figures
Item04/0605/06
Balances @ 0% APR$31,444.72$31,934.98
Balances @ 1.9% APR$14,165.77$19.69
Total Balances$45,610.49$31,954.67
Monthly Payment$912.21$639.09

You can keep track of other personal finance bloggers at NetWorthIQ. I've updated my entry there.

Tiny Island