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.
A friend of mine is buying his first Mac, so here’s a list I made for him for essential software.
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.