The arrogant candidate says “I’m smart so I know my code
is good”. That’s certainly a bad sign, although sometimes
they’re right. Slightly wiser responses are “I run it and
look closely” or “I trace the code and make sure it works
like I expect”. Better, but too manual. The truly enlightened say
“I have an automated test suite” and then you’re off
to the real questions about how to test code properly.

I have a deep distrust of code. Software is organic, unpredictable,
chaotically complex. It’s difficult enough to understand
what the code you write now is likely to do right now with expected
inputs. But hostile inputs, or a weird environment, or the same code
a year from now, or the slightly modified open source contribution in
some fork somewhere? Forget it. That’s why automated tests are
so valuable. It’s a way to demonstrate the code is doing what you
expect it to.

Writing good tests is hard, almost as hard as writing good
code. Modern environments have a lot of testing tools you should
learn. From language unit test frameworks to mock objects for
servers to fuzz testing to various continuous integration systems
for functional tests. GitHub projects have the miracle which is Travis
CI, free no-fuss continuous build and test
for any open source project. It’s amazing.

So until software
correctness proofs become a real tool we can use in real production
code, ask yourself how you know your code is going to work. If
you’re honest, you probably don’t. But some testing will
certainly help give you at least a little confidence.

Astound is a good ISP. I started
getting Internet from them a few months ago, upgrading from a $50 6Mbps
DSL link to a $70 100Mbps cable link. And it’s like I can see
through time. The difference in usability is astonishing. Equally
importantly, Astound has been entirely reliable and trouble-free.

The key thing is Astound is not Comcast. Comcast is an evil company
with a long history of breaking TCP/IP in various ways that harm
customers. Astound just provides pure, sweet, clean bits. Installation
requires they bring their own coaxial from the pole to your house. They
also offer phone and TV packages. The customer experience is a bit
squirrely, I wouldn’t count on them for email hosting or tech
support. But the basic Internet service is terrific.

I’d previously been a very happy Sonic DSL customer. They are also
a terrific independent ISP with fantastic service. Unfortunately DSL
is limited by the technology, the best they could deliver to my house
is 12Mbps and that would have been significantly more expensive than
Astound. Sonic is now working on fiber-to-the-house, including San
Francisco, which should be terrific if they can do it.

We’re very lucky in SF to have a competitive ISP
market. We have two DSL providers, two cable providers,
and a surprisingly robust fixed wireless provider in MonkeyBrains. Most
of the urban US only has two options and large parts of
the rural US don’t even have that. The Sonic CEO’s 2011
blog post about broadband duopoly is fantastic background for how
we got to have such crummy service in the US.

Ancestry.com is a good web
site. It’s a tool for researching and maintaining family history,
genealogy. It’s also a remarkably sophisticated database, data
repository, and user interface with a lot of lessons for people who design
webapps. I’m particularly fascinated that their target market
is older people, your grandma who’s not so good with computers
but has gotten interested in family history. But in no way is Ancestry
dumbed down.

The web UI is great. The primary
view is a visual family tree, a refocusable graph
view that’s not much like a web page but works great
in the browser. You then click through on a name to get to a
person’s profile page that’s more like a normal document
view. From there you do extra research, add information, etc.

The facts
and sources tab on a person’s profile is my
favorite part of Ancestry. They don’t just track a fact
like “Born on 29 May 1917”, they also track the
source of that fact, like “birth certificate”
or “census record”. With a link right to a scan
of the source document with the relevant information highlighted. Most
people’s genealogy is full of bad data. (No, you’re probably
not related to that 16th century king.) Ancestry provides a model
for establishing the veracity of the data you record. Crowdsourced
databases like OpenStreetMap and Wikipedia would benefit from more
explicit attribution.

Ancestry is particularly useful because they have a fantastic
collection of American genealogical records. The census
records are the ones I use most frequently. Meticulously transcribed
images of 100+ year old handwritten pages, completely searchable
on fields like name, address, age, etc. They’ve collected all
sorts of other data too: immigration records, social registers, railroad
payrolls.. All this diverse hand written data, presented
in a uniform computer search interface. They even proactively find hints
for your family members for you to review and add to your data.

The app has some problems. Most of their data collections are
only useful for researching Americans. Grassroots genealogists
complain about Ancestry being too commercial and proprietary (see GEDCOM). Some
people snark about the site being so grounded in Mormonism,
although that criticism seems unfair to me. I’ve enjoyed doing a
bit of family research in Ancestry. Mostly I’m impressed with the
usability of the web app given how complex the data is.

Today’s SF Chronicle has two remarkable opinion colums about
state politics in California.

Debra Saunders, the token right-winger, reveals Carly
Fiorina is a deadbeat. She owes $500,000 to her employees for her failed
2010 senate candidacy. What makes this laundry-airing remarkable
is Fiorina is rumored to be running for President. And Saunders got
Fiorina’s former campaign manager Marty Wilson on the record
confirming the debt. Quite a takedown.

Also Slick Willie Brown’s
normally terrible column is interesting this week in revealing
the Democratic machine. He floats a trial balloon for how
California’s top politicians might shuffle jobs in the next few
years, with Harris for Boxer and Newsom for Jerry Brown. “The
issue will be which of their clients they persuade to run for the
Senate seat”; the “they” refers to consultancy
Ace
Smith. I guess they’re the ones calling the shots.

California’s biggest individual health insurer, Anthem, treats
its customers with remarkable contempt. This blog post is boring, but I
think it’s important to occasionally document poor behavior from
powerful companies.

I received a letter December 9, “INTENT TO NON-RENEW”. They
said I owed them $6.89 and had three weeks to pay up or they’d
cancel me, a ten year customer. Except I didn’t owe them money. I
pay all those bills automatically, the correct amount had been sent. The
exact amount is for “pediatric dental insurance”,
something they tacked on this year when they realize they screwed
up the ACA requirements. I’m guessing their billing system
failed to post one month somehow.

What is so contemptuous is the communication. They go straight from
“minor problem” to “we are cancelling your health
insurance”, in an officious letter, with no followup. Their customer
service is terrible. I finally got through (two separate automated phone
systems) to someone who could only vaguely say I look paid up and they
have no idea why the letter was sent.

Anthem has a remarkable online bill pay system, BTW. Or rather they
don’t, they outsource it to Princeton eCom, a site that looks like
a clumsy phishing attempt. It requires a separate login. Your password
is limited to 8 characters. For the billing site. Of a health insurance
company.

Cancelling health insurance is a big, scary threat. Anthem appears
to casually do that because of random billing errors, with no humane
communication. I dread what the process will be like if I ever have a
significant claim.

I’ve gotten
competent at making pizza at home. It’s an easy versatile meal,
15 minutes prep time once you have the dough. I tend to make a sort of puttanesca
pizza: capers, olives, anchovies, sauce from a jar (the shame) and some
salami. Today was turkey leftover pizza with white sauce, I regret being
too timid to try cranberry sauce after baking.

My go-to cookbook is American
Pie, specifically the “neo-Neapolitan” dough
variant. I’ll make a batch of 5 servings of dough and freeze 4. A
stand mixer is a huge help, the dough is very glutenous. I recently
learned slicing the mozzerella works better than grating, and so much
easier. The dough takes time to ferment, thaw, etc but not much active
work.

The challenge of home pizza is our ovens don’t go over
550°F. I get decent results in a home oven on a pizza stone, but
Ken just got a Baking Steel from Sur
la Table so I gave that a shot. It definitely cooks faster and chars
the crust more; too much so, the bottom was about to burn before the edge
was fully baked. The steel is heavy, rusts, and needs seasoning like
a cast iron skillet. I’m not sure it’s a huge improvement
over a clay tile.

Neapolitan-style pizza dough is pretty
tempermental. For something different and foolproof this pan
pizza recipe works pretty well. A no-knead dough sort of fried up
in a cast iron skillet in the oven. It’s not elegant, more of a
fast-food style pizza, but it’s delicious and fresh and that is
its own reward.

Uber’s sure in a shitstorm now. On top of the
long standing questions about their treatment of
drivers, insurance, regulatory issues, etc they’ve shot themselves
in the foot twice this week with ethical lapses. Once with an
executive proposing doing “opposition
research” on a journalist to discredit her, and again with troubling
concerns about the privacy of rider records. I love the Uber product,
but it’s clear the company has a serious problem.

Google’s “Don’t be Evil”
policy was a valuable guiding principle for us. It
was a shorthand for not doing things that were obviously
unethical. Uber needs that. “Should we offer our drivers shady
subprime loans?” Of course
not, that’d be evil. “Should we poach
Lyft drivers without worrying how it screws up their ride
dispatch?” No, don’t be evil. There’s reasonable debate about
exactly what is ethical or acceptable. For instance I’m 100% fine
with Uber throwing elbows at corrupt cab companies. But the overriding
principle needs to be acting ethically or else you end up
with the shitstorm Uber has.

Uber’s problem appears
to be at the top with Travis Kalanick, the founder and CEO. He’s
set the company on an aggressive libertarian path and it’s
ugly. (I’m also struck by Kalanick’s early founder role with
Scour, a late-90's product for
pirating music from unwitting people’s
unsecured Windows computers.) It may be that a lack of ethics is in the
company’s DNA.

I love Uber, but a transportation product like
theirs is a natural monopoly and Uber is showing themselves
untrustworthy. I’m beginning to share the pessimistic view of Metafilter
user rhizome that “the taxi industry is so corrupt that any
organization that would unseat them has to be just as bad”. It
shouldn’t be that way, Uber could do better.