Showing posts from February, 2007

A Thought Experiment in Morality

Here's some reasoning I genuinely agree with. (Via Boris's comment)

Taxation is inherently immoral. We, the people, do need an entity into which to vest our powers in order to efficiently maintain the standards of civilization. But the minute we let this entity get a mind of its own - especially in such vital matters as deciding how much everyone must pay for its existence - it begins to assume the natural role of any entity with superior power: it becomes the oppressor we wanted to get rid of. We create the government as a guardian to protect our freedom - but we give it too much power, so the guardian turns the tables on us, and makes us all its captives.

It doesn't need to be this way. We could have a guardian that would be much more limited in what it can do, and certainly would not be able to extort its funding out of anyone. (If someone doesn't want to pay for the guardian, then obviously she doesn't perceive its services to be worthwhile, and shouldn't be …

Popularity of computer language proportional to coolness of name

Here's an amusing article I agree with about how to ensure the non-proliferation of a good product by naming it unappealingly. It starts with Slug Cola, the apparently much better tasting predecessor to Coke, and then proceeds to discuss programming languages.

Lisp. I never learned Lisp as Lisp. I still avoid Lisp. I only started to get real respect for Lisp as I learned Scheme. Scheme is effectively the same language as Lisp, but with a cool name. Yet, even though I know it's essentially a dialect of Lisp, I still cringe internally when I see people refer to Scheme as a Lisp. Lisp - distasteful. Scheme - cool. I can see myself programming in Scheme, but I can't see myself doing the bulk of my work in a language called Lisp... no matter how great it is.

Still, it's not all in the name. Lisp and Scheme and Smalltalk all share another disadvantageous trait. They are closed ecosystems which do not fit seamlessly into the surrounding OS environment. That, more than anything,…

Church of the Flying Spaghetti Monster

A compelling open letter from the Church of the Flying Spaghetti Monster to the Kansas School Board.

Company claims working 16-qubit quantum computer today, 1024-qubit in 2 years

If this is true (via Larry O'Brien), then security on the Internet is up for some serious rearchitecture.

I may be wrong because I don't know how long it takes for a quantum computer to run one iteration of Shor's algorithm, but they only need four to eight runs on a 1024-qubit machine to break a 512-bit RSA key. In a few years, it sounds like they will be able to break them. And once they have 1024-qubits, why couldn't they have 2048 or 4096 a few years down the road?

On the up side, as far as public key cryptography is concerned, it does look like the only way to access these quantum computers for the next decade or so will be to purchase services from a company that has one. Even so, it's going to be disconcerting to know that there will now be people on the net who will be able to forge any public key signature and decrypt any public key-encrypted communication, if they deem it expedient to do so.

Then perhaps in a decade or so, the first quantum computers are goi…

A simple program to crash Windows Vista x64

Two months into my use of Windows Vista 64-bit Edition, I now stumbled upon a design flaw which allows any user, regardless of privileges, to make the OS totally unresponsive, even on a dual-core system.

The flaw is that the operating system allows the user to write a tight loop of calls to CreateThread() which effectively hogs all the resources on the system. When the system is in this tight loop, and in particular after creating 37,000 or so threads and counting, it starts thrashing and becomes totally unresponsive, even on a dual-core system. Ctrl+Alt+Del doesn't work and a hard reset is necessary to regain control of the operating system.

In 32-bit Windows, this method won't lockup the machine because the limited virtual address space doesn't allow you to create more than about 1,500-13,000 threads anyway (depending). In 64-bit Windows though, the virtual address space is many factors of magnitude larger, so the system starts thrashing long before it exhausts the virtual…