Watermelon Art

It’s an art form I’d never heard of, but some of these watermelon carvings are pretty spectacular.

Opting Out

In a discussion about public education at Catallarchy, there was a bit of a side debate about whether it was feasible to let people “opt out” of paying taxes for services they don’t believe the government should provide. I took the position that it’s not, on the basis of the following should-be-obvious statement:

You can only truly opt out if your forego all benefits, both direct and indirect, that you gain from the service. Otherwise you are not opting out but freeloading.

The indirect benefits are the killer. If you want to opt out of funding the EPA’s efforts to improve air quality, you would have to stop breathing the higher-quality air they provide. Furthermore, you’d have to pay the cost difference due to increased productivity (e.g. agricultural, fisheries, forest products) from cleaner air and less acid rain. If you want to opt out of paying for a new road, you’d not only need to pay your share for the otherwise unnecessary sensors to make sure you never drove on it, but you’d have to pay the cost difference for products that are delivered to you more efficiently using that road. If you want to opt out of paying for the SEC to regulate the stock market, you’d have to guarantee that you weren’t using information currently provided in SEC disclosures, and did not benefit from others doing so either, unless you could figure out some way to pay. The examples go on and on and on, from Social Security to emergency services and national security to management of invasive species and genetic contamination. The point should be clear: we’re too connected, engaged in too many “transactions” with our neighbors every day, to opt out.

If we tried to track all of those transactions and know everyone’s opt-in vs. opt-out status, we would not only create or exacerbate some serious privacy issues but we would fail anyway. We can never completely identify, attribute, or quantify those costs and benefits without being omniscient. Let me repeat that, for those inclined to pretend that any problem they don’t know how to solve must not be important: never, without being omniscient. No individual-transaction solution was ever found to the Cheshire salt-works problem, nor could it be even today without great advances in hydrology. If ten of your neighbors grow some invasive but ornamental plant which then ruins your crops, does anyone really think it’s feasible to track whose pollen got into your field? As in a bad crime drama, they could all – rightly – claim it probably wasn’t theirs, and you’d be out of luck. Damage was done, and nobody paid for it. Again, other examples abound. Some problems simply have to be solved in the aggregate or not at all, and “not at all” is not a moral option.

In the Catallarchy thread, I said the only three options were to participate fully in the system, freeload, or move. Actually there’s a fourth. If you can seal yourself up in a Biosphere-like environment, hermetically sealed and not using anything from outside (including sunlight or information) you can opt out. Otherwise, the only defensible options are to pay for the benefits you receive or apply your own free-market ideals to government services and try to find a better provider. Maybe someone will sell you Greenland, or part of Afghanistan. Enjoy.

Treenums

Like just about any geek, I think a lot about what features the ideal programming language would have. Several of my ideas have to do with scalar data types. I know I’ve written in the past about my distaste for mandatory type checking but, even without that, being able to define types that can be distinguished from one another when you want to is very useful. I have long considered it one of C’s biggest warts that every enum is effectively the same type, for example. Having to fix a bug because two function arguments of different enum types but the same underlying language type were transposed is annoying. This is why it’s often a good idea to give each enum an explicit and distinct starting value. I find that when I use an enum I almost always have a switch statement somewhere with cases for every known value plus a default case that will spit out an “unrecognized value” error if it ever executes. If each enum occupies a distinct range, such code will catch this kind of type error for you very quickly.

Another area where I’ve always felt C/C++/Java were weak was in the definition of related constants. At least C/C++ have enum to solve the fundamental problem of having the compiler instead of the programmer ensure uniqueness of values. Java, amazingly, managed to take a step back even from that, forcing people to use a bunch of static final variables instead (static final itself being a clumsy way to say “constant”). Nowadays the official “Java Way” is to define a whole class for each enumerated type, which is not only inefficient but also even easier to screw up; now you have to worry not only about screwing up the values but also about the methods as well.

Happy Birthday to Me

Yes, I’m 40 today. Seems like a good time for some reflection on the last year, and even the last decade. This might be kind of long, so I’ll make it easy for people who are here for less personal reasons to skip over:

Disturbing News About Food

First, the silly: the Cookie Monster is facing an existential crisis.

Then, the creepy: rice with a human face (OK, liver, but still).

Ex-Architect

As of yesterday, I am no longer the product architect at Revivio. I’m still at Revivio, and my title still says architect, but organizationally I am now a developer with the same responsibilities as other developers instead of having a more diffuse kind of technical responsibility for the entire product. This is actually a very welcome change for me, and one I had asked for a while ago, but the time didn’t seem right until now – when we actually have a product out and are far enough into planning the next set of projects to know where my skills are most needed.

There are a lot of things I could have done better as an architect. I could have done more to document some of our control and data flows. I could have done more to address some of the “bad coupling” that always causes pain in a complex product. I could have done a better job of streamlining the process of turning ideas into actual product enhancements. I could have gotten out of my office more, set a better example, been a better mentor. However, when all is said and done, I believe only one thing really counts:

The product shipped on my watch, and it works, and customers like it.

Not every software architect can say that. Yes, there were a hundred things I didn’t do as much or as well as I should have. There are also a hundred things I could have done to screw it up. There are another hundred ways I could have misprioritized my tasks and responsibilities – all of them worthwhile to some degree, but not all equally – and also contributed to failure. Like anything else in engineering, it’s all about tradeoffs. I did address some of our biggest architectural challenges, I was involved to varying degrees with all of our trickiest code, and I single-handedly fixed some of our hairiest bugs. On the non-technical side, I was involved in hiring and retaining some good people, improving processes and behavior, and facilitating essential communication and decision-making. I might not have been perfect, but I was good enough. More importantly – and this is a subtle but important distinction – the team was good enough with me in that position. Like tradeoffs, “good enough” is what engineering is about.

So now I’ll be in a different position, in a changed organization. We’re no longer in a startup scramble, all working to get the first product out the door. We have a product, and we’re working on several different ways to make it better. It’s a good place to be, both for me and the company, as summer begins. There will be more games to play, but we won the last one and I feel pretty good about that.

Estate Tax

OK, time for be to play Bad Liberal again, and also give credit to someone I have previously criticized for being either dishonest or an idiot. “Jane Galt” actually makes some very good points about the estate tax repeal.

Because basis will no longer be ‘stepped-up’ after death (except for a $1.3 million exemption) they will simply be taxed like all other capital gains – at the time those gains are realized.

This seems to be a little appreciated aspect of the estate-tax repeal. Currently, if you have an asset that increases in value by a million dollars, you are legally considered to have sold that asset at death, and your heirs become liable for the tax on the increase in value. That’s what forces inheritors to sell assets: they need the money to pay the tax on the rest. However, part of the estate-tax repeal is to eliminate the implicit sale at death as well. The basis value of the asset will be inherited along with the asset itself, and the tax on appreciation will come due (as normal capital gains) when the asset is sold normally. This actually strikes me as a good way to deal with inheritance. The government gets the same revenue they would have gotten if the original owner had lived until the actual sale – except for differences in tax rates due to differences in income levels – and nobody is forced to liquidate anything during their time of grief.

This doesn’t take us as far as Jane Galt would have us believe it does, though. For one thing, Matt Yglesias is right when he says that “repealing the Estate Tax in the face of massive deficits is not the height of sound policymaking.” Even if the bill does come due eventually, that doesn’t do us any good now while spending that is out of whack with revenue is still increasing the deficit. Between now and then, interest will accrue on that debt. Also, Jane’s appeals to her own authority notwithstanding, I’m inclined to believe that the Small Business Council of America might actually know as much as she does when they claim that the repeal would hurt small business. I’m similarly inclined to believe that the folks who say this will have a disastrous effect on charitable giving might know a thing or two that Galt doesn’t, though in both cases I won’t deny there might also be some vested interests involved.

In short, Galt raises several good points about basis costs and how the situation is more complex than most opponents of estate-tax repeal seem to admit, but then (typically) gets a bit carried away trying to turn them into a case for her side in the culture wars. Liberal opponents might be guilty of oversimplification, but she’s only scarcely less so in her response.

Literary Takedowns

I don’t think I’ve ever read anything by Thomas Friedman before (it’s hard to be sure about such things when I read so many articles online), so I don’t particularly have anything against him. However, Matt Taibbi’s hilarious critique of The World Is Flat actually makes me want to rush out and buy a copy just for the humor value. Taibbi starts well:

Name me a herd animal that hunts. Name me one.

This would be a small thing were it not for the overall pattern. Thomas Friedman does not get these things right even by accident. It’s not that he occasionally screws up and fails to make his metaphors and images agree. It’s that he always screws it up. He has an anti-ear, and it’s absolutely infallible; he is a Joyce or a Flaubert in reverse

It could be argued that a pack or pride is really the same as a herd, so wolves and lions (at least) would answer Taibbi’s implied question, but it’s still a great lead-in. The bit about reversal of flat vs. round is good, but then Taibbi gets bogged down a bit in the middle, but he recovers his form nicely at the end.

The walls had fallen down and the Windows had opened, making the world much flatter than it had ever been–but the age of seamless global communication had not yet dawned.

How the **** do you open a window in a fallen wall? More to the point, why would you open a window in a fallen wall? Or did the walls somehow fall in such a way that they left the windows floating in place to be opened?

Four hundred and 73 pages of this, folks. Is there no God?

Libertarian Logic

Story: a developmentally-disabled high school girl is sexually abused while students watch, and administrators handle it badly.

Conclusion: public schools are bad.

Taking advantage of a tragedy like this to push one’s agenda is bad any time, but it’s especially despicable when the relationship between the event and the conclusion being drawn from it is so tenuous. Somebody’s just a little too eager to co-opt anything and everything, including others’ pain, as an excuse to ride their favorite ideological hobby-horse.

Frames and Foundations

By now, just about everyone who follows politics, especially online, has heard George Lakoff’s “frames” proposed as an antidote to everything that ails US liberals. For those few who haven’t heard and are too lazy to do a simple web search, frames are basically a linguistic concept (Lakoff is a linguist) referring to the terms we use to describe things. Pick good terms, the theory goes, and you all but dictate the outcome of the debate. The best example is using “death tax” to describe the estate tax. Once you get people thinking of it as a tax on death instead of on inheritance, on a sad moment instead of on a windfall, you’re most of the way to convincing people that it’s bad.

As a liberal, I suppose I’m supposed to buy into the theory that choosing the right “frames” will increase acceptance of liberal beliefs and allow Democrats to win the next election. Yeah, well, actually…I think that’s a bunch of crap. It’s not that I don’t believe in the power of language. I am a writer, after all, both here and elsewhere. I know all of the sneaky ways that people manipulate terms, definitions, and axioms to get their way in a debate. However, I still believe that concepts matter more than presentation. Lakoffism is like worrying about the paint while the roof falls in. The anti-liberals have not gained ground by coming up with better phrases or metaphors; they have done so by coming up with solid, hard-edged logical constructs that they can use to support their agenda. Consider that estate-tax example. The “death tax” phrasing might have some immediate effect, but such misrepresentation can be dealt with quickly and effectively. What’s much harder to address is the arguments that are based in an absolutist view of property rights that can trace its roots from Rand and Friedman back to the early Enlightenment (or even before). Because the anti-liberals have made the investment in compiling this large body of basic theory, they always have plenty of quotes and counterarguments ready at hand. Untouched by the grime that accompanies actual application in the real world, furthermore, their ideas always seem shinier and newer than liberals’. This puts liberals, who are too often bogged down in actual details to spend much time on theory and whose every failure can be held up to ridicule while the libertarians’ failures remain only potential and are thus easily ignored, at a distinct disadvantage.

The only perceptual problem with liberalism is that most liberals have forgotten – or never knew – the “grand theory” behind all of the specific programs they believe in. Basic ideas of a commons and a social contract receive scant attention except from opponents. More modern lessons from game theory, chaos/complexity theory, or social-network theory are not widely appreciated. With the unifying philosophical framework falling apart, liberals are left defending specific policies with specific and well-studied flaws. They’re like soldiers who have allowed themselves to become isolated, pinned down, and outflanked over and over again. Instead of Lakoff’s tactical thinking, what we really need is a strategy that encompasses the entire ideological battlefield instead of just a few positions within it. To do that, we need to remember and expand upon the philosophical themes that differentiate liberalism from alternatives.