21 November 2008

Arms

I am flushing the buffer of old posts. Here is one I delayed posting because it's just too boring. Well, I'm posting it anyway. Sorry.

xkcd has a provocative comic about cryptography.

I imagine many geeks are moderately in favor of gun control but staunchly opposed to cryptography control. The two issues are very similar.

Having a gun lets you do two basic things: intimidate unarmed people; and resist armed or otherwise violent people. (You can of course just shoot people, but the power of a gun starts working at some remove from that eventuality. Most cops never shoot anyone.) Neither ability is necessary unless something has gone wrong; and both abilities can themselves go wrong in spectacular ways.

I believe in a fundamental human right to self defense, and for both moral and pragmatic reasons I tend to prefer individual rights to the common good where they conflict. So ab initio I pretty much have to oppose gun control unless there is a strong reason to think it's pragmatically the only way to go.

But I also believe gun control is an all-or-nothing proposition in practice: imposing a five-day waiting period before someone can buy a handgun, for example, makes no sense at all to me. Measures that are obviously easily circumvented, like the current U.S. background check, also make no sense. These measures seem squarely targeted at established, law-abiding gun sellers and their law-abiding customers. Effectively preventing criminals from having guns would require serious bookkeeping requirements and a tremendous enforcement effort. Judging by the results in the places where that has been tried (Illinois, the UK) it just doesn't seem worth it.

18 November 2008

Recently I learned...

  • Some people are, at this moment, running around the world. As of this writing they're about 16% done.

  • Seattle is farther north than MontrĂ©al. It is in fact farther north than all but the northernmost tip of Maine.

  • Someone with a browser history like mine is more likely female than male.

    (My history includes a lot of pages on bugzilla.mozilla.org and developer.mozilla.org, which should peg me as a male nerd with high confidence. But that page only checks whether you've visited the front page of a few very popular sites.)

  • In 1905, the President of the United States threatened to abolish football unless something was done to reduce the number of fatalities. Colleges established a rules committee and made radical changes to the game. Hurdling (jumping feet-first over other players) was banned. Roughing penalties were introduced. Six men were required on the offensive line. The forward pass was added.

    [T]he new rules committee further opened up the game by requiring the offense to advance ten yards in three tries for a first down instead of five yards, which previously had been a great inducement for bruising, battering line play from which no form of mayhem was barred.

    Principles of Coaching Football by Mike Bobo and Spike Dykes, citing 100 Plus Years of Football by Jerry Brondfield, 1975.

    This, in addition to earlier reforms banning things like piling on the ball carrier and the flying wedge (in which offensive players would build up momentum before the play started by charging en masse toward the line), made football the genteel pastime it is today.

I'm starting to learn random stuff by reading source code. Technically I've been doing this for ten years or more, but I recently have made a conscious effort to be more aggressive.

  • lighttpd has a very simple scheme for exploiting multiple CPUs. After binding the server socket to an address, it simply forks a few times. All the worker processes do the same thing: listen on the socket and serve HTTP requests. There's no load balancing and no communication between the parent process and the worker processes.

  • On x86, at least in glibc's implementation, setjmp saves five 32-bit words of state: three callee-save registers and the caller's stack pointer and instruction pointer.

I also learned a lot last week about David Humphrey's awesome Mozilla project course at Seneca College. It builds on a foundation of C, C++, and UNIX knowledge that Seneca's CS program lays down in required freshman courses. It has a lecture component and a lab. Any time you spend on your project is on top of that. It has a reputation as a killer course.