Saturday, December 31, 2011

Predictions for 2012

It's hard to know what's going to happen even three months from now, but I'm going to stick my head up and make some predictions about what will happen over the next year. Let's see what I get right!

January

The little known "Year 2012" problem causes problems with the Pontiac Aztec's onboard computer. There is much celebration as every Pontiac Aztec in the country blows up simultaneously.

Romney continues to lead in the Republican nomination fight, with a gay sex scandal causing upcoming rival Rick Santorum to drop out. Ron Paul continues in second place, though nobody thinks he will win anyway so who cares?

February

Apple releases the iPhone 5. Considered "snappier" than the previous iPhone, it comes with the ability to make phone calls, surprising pundits who were unaware of this lack of standard functionality present in all featurephones before now, a surprise that followed voice dialing, multimedia messages, tethering, and the ability to install apps. Reportedly the iPhone 6 will include the ability to send text messages, and the iPhone 7 will be able to take pictures.

Romney continues to lead in the Republican nomination fight, despite the Republicans  rallying around Joe the Plumber, who subsequently drops out after photos emerge of an "accident" involving a small pipe and something slightly too large stuck inside of it.

March

Nobel Peace Prize Winner Barack Obama declares war on Brazil after it is reported that Brazil is made up of foreigners, some of whom are Muslim, and after John Bolton claims that the country is attempting to acquire Nuclear weapons.

Liberals are divided between those sure that Obama has good reasons to be starting another war and who wouldn't do it if it wasn't the right thing to do, and those concerned Obama might be in the pockets of big coffee.

A surprise surge by serial killer Charles Manson threatens to knock Romney off his front runner status in the Republican nomination, until Manson's views on State's Rights ensure his rapid downfall.

April

With the war in Brazil causing coffee prices to be at all time highs, Nobel Peace Prize Winner Barack Obama invades Colombia. Liberals are divided amongst those who argue we should trust Obama's judgement on such matters and not question him, for fear of having some Republican war monger win the next election, and those who call for more tea drinking in order to wean America off of its addiction to coffee.

The Simpson's Montgomery Burns temporarily challenges Romney's lead in the race to the Republican nomination, but most Republicans unhappy with the contest reluctantly withdraw their support after hearing that Burns is a cartoon character and not real. This is despite last minute from Glenn Beck who claims that rumors Burns is "not real" are liberal media lies, and that he has "hundreds of hours" of video evidence, including a major feature film, showing Burns in person.

May

Nobel Peace Prize Winner Barack Obama announces the war in Brazil is over after President Rousseff is captured and waterboarded for several weeks. Obama announces a "complete" withdrawl of troops that will leave only a "skeleton force" of ten million soldiers in the country. Liberals are divided between those who praise Obama and feel vindicated, and those who roll their eyes and shake their heads in frustration.

Republicans coalesce around surging candidate Dennis Miller, until they realize they don't think he's funny either.

June

The new Facebook Phone is announced, which differentiates itself from other phones by transcribing everything the owner says, regardless of whether the caller is on a call, and posting it to the Internet.

Republicans express relief after little known Presidential candidate Margaret Thatcher leads Romney by two points, despite the fact that she's not a natural born citizen (or a citizen at all.) After being accused of hypocrisy given the Republican's "birther" movement, Republicans argue that they're not hypocrites, you're a hypocrite. Touche.

July

The iPad 3 is finally released. At 20", it's the largest tablet ever released, can only run three apps, and weighs over a ton. It sells one billion units in the first week. Other tablet makers, who have tried to focus on, you know, usefulness, give up.

Nobel Peace Prize Winner Barack Obama announces a new war with France, with rave responses from Dick Cheney and many liberals. Meanwhile, the Republican nomination race intensifies with "Barry O'Bama" temporarily leading Mitt Romney, with over 90% of the vote, until it's discovered that Barry is, in fact, Barack Obama, wearing sun glasses and a hat.

August

Texas and Alaska both secede from the union. To the surprise of both, the rest of the nation reacts in celebration, until Nobel Peace Prize Winner Barack Obama invades both, pointing out both states have oil. Liberals are strongly divided like never before, with a small minority feeling that we must trust Obama's judgement, and the rest utterly bewildered.

Mysterious candidate "Ron Mitmey" challenges Mitt Romney for the Republican nomination, but even Republicans can tell it's Mitt Romney pretending to be not Mitt Romney.

September

With time running out, Republicans race to find a Presidential candidate they all like. Discovering the constitution makes no mention of Presidential candidates needing to be living, top Republican scientists attempt to re-animate the corpse of Ronald Reagan, who immediately starts campaigning on deficits not mattering, banning black people from owning guns, and on how Hollywood Celebrities make the best Presidents.

October

Realizing his support has plummeted, Obama immediately runs a campaign against himself, saying "Vote for me, Barack Obama, and not that guy who's currently President - isn't it George W. Bush? I think it is. Yeah, he's the President." Meanwhile, the re-animated corpse of Ronald Reagan beats Mitt Romney for the Republican nomination.

November

In a surprise upset, Paul Krugman is elected President. Virtually every incumbent in Congress is defeated, even Joe Lieberman who wasn't even supposed to be up for election. Realizing it's the end, the entire government is transfered over to the newly elected two months early, and by the end of the month, a strong stimulus, the worldwide withdrawal of troops, and the legalization of drugs has resulted in peace and prosperity across the world.

December

Unfortunately the world ends.

Monday, December 26, 2011

Got a Kindle Fire

Generally liking it, but I have to admit my major objection to it right now is that there's no Google. This means you can't, for example, install software you legitimately bought on the Android Market, unless you buy it a second time on the Amazon App Store. Not good.

Also meant I had to do some fancy sideloading to get Google Music installed - as Google Music has my entire music library, and Amazon Cloud doesn't (maybe the latter would if it (a) supported more formats and (b) had an automatic Ubuntu uploader like Google Music does.) And what's with it only having 6G of storage? Where did that come from?

Plusses - perfect size, not too big (I've used 10" tablets before - they're not portable and anyone who tells you otherwise is a fanboi), not too small; UI is pretty decent for the most part. Battery life seems to be excellent, better than my Android phone indeed.

I'm thinking though it's highly likely that the rumored CyanogenMod 9 version for Kindle Fire (that's Icecream Sandwich) will end up on mine, simply because I can't do without teh Google, and quite honestly, I trust Google more than I trust Amazon as far as giant faceless corporations go.

Tuesday, December 20, 2011

Politifact, handwaving, and "Both sides do it"

Both sides do do it.

Democrats complain about abuses of civil liberties outside of office, then go in and do the same thing that Republicans complain about.

Democrats express concern about the unemployed with out of office, and then suddenly don't give a rat's ass when in office.

But that doesn't mean you can simply point at any random fact and say "Oh, both sides do it". For example, both sides lie, but that doesn't mean you can point at a random fact stated by one party and say "It's a lie".

Politifact has decided that Democrats who argue that the Republicans plan to abolish Medicare are lying. It has no basis to make this claim, given Republicans did, actually, plan to abolish Medicare. And Politifact knows that. This is the first paragraph of its attempt to argue that Democrats are "lying" when they claim Medicare is being abolished:

Republicans muscled a budget through the House of Representatives in April that they said would take an important step toward reducing the federal deficit. Introduced by U.S. Rep. Paul Ryan of Wisconsin, the plan kept Medicare intact for people 55 or older, but dramatically changed the program for everyone else by privatizing it and providing government subsidies.

OK, that looks like abolishing Medicare to me. People over 55 will eventually die. For the rest of us, we won't get what we know as Medicare, we'll get its replacement, which is government subsidized private system. Of course, Politifact is leaving itself wiggle room for its attempts to call Democrats liars later on - it says Ryan's proposal is about "changing the program" rather than "replacing it", but, well, what is described is clearly not, by any definition, Medicare.

So, what statements does Politifact claim are lies? Let's look at what riled Politifact:

But more often, Democrats and liberals overreached:

They ignored the fact that the Ryan plan would not affect people currently in Medicare -- or even the people 55 to 65 who would join the program in the next 10 years.

They used harsh terms such as "end" and "kill" when the program would still exist, although in a privatized system.

They used pictures and video of elderly people who clearly were too old to be affected by the Ryan plan. The DCCC video that aired four days after the vote featured an elderly man who had to take a job as a stripper to pay his medical bills.


So, let's see:
  • Democrats didn't mention that some people will be grandfathered in. And?
  • Democrats said the system would be killed, when in fact an entirely different system with the same name will exist. This means they're lying... how?
  • Apparently only young people are affected by changes to Medicare.
Of the three objections, the first is protesting that the Democrats need to explain points irrelevent to their argument. The fact some people are going to be grandfathered in does not mean that the program isn't being abolished.

For the other two complaints, it's Politifact that's lying. Politifact is trying to argue the following:
  • That a system utterly unlike Medicare is Medicare if it has the same name going forward.
  • That people who are young now are not going to get old, and thus it's not legitimate to make a complaint that abolishing (or completely replacing with something else) Medicare will affect people who are going to be old when they themselves suffer the effects.
According to Politifact's logic, the campaigns going forward should show young, healthy people, instead of the elderly, when depicting victims of Ryan's proposals.

I'm not suggesting that no campaigns contained a minor misleading point or two, but that's true of any campaign. To describe, however, the general thrust of the Democrats objections to the Ryan's proposals as "lies", when actually they were fundamentally true and alerting people to a real danger, is hideously wrong.

Of course, even Paul Ryan has walked back the proposals. What we're now seeing is a proposal to offer people a choice of Medicare or subsidized private services. We can argue about the wisdom of such a choice, but there's little doubt that the revised proposal exists because people were concerned about Medicare going away.

In their efforts to appear non-partisan, Politifact has resorted to sophistry and demands parties be actively misleading, both of which are opposite to its supposed advertised purpose. It's difficult to take the group seriously going forward, and that's a shame, because a group that actually fact checks campaign statements, rather than criticizing anything it deems unbeltwayish, would be actually very positive.

Instead, we see handwaving, sophistry, and in some cases the shoring up of actual lies, in an attempt to portray one party as actually lying about an issue. One thing's for sure - Politifact isn't a fact checking organization any more.

Monday, December 19, 2011

IT IS THE YEAR 2000

The Earth is ruled by FOUR GIANT CORPORATIONS!  The largest, VT&T keeps its people distracted by DEATH MATCHES between CONDEMNED PRISONERS. The CITIES of LOS ANGELAS and SAN FRANCISCO have been turned into a GIANT MEGA PRISON. Meanwhile, people are falling ill DUE TO  A MYSTERIOUS VIRUS and TURNING INTO ZOMBIES! Doctor Ann Ordinary must TRANSPORT a mysterious BABY to the YOOGLE CORPORATION OFFICES in New Seatle. Can this BABY be the KEY TO MANKIND'S SURVIVAL? And does YOOGLE have a SECRET AGENDA?!

(The other two corporations are Microflacid and Ben and Jerry's. No, I don't know how Ben and Jerry's got to be a megacorporation ruling the world either. I mean, they make nice ice cream, but I personally always thought it was a little... well, overrated. I mean, I like their politics, and I'm glad they're successful, it's just, well, not for me. Anyway, they're a megacorporation by the year 2000.)

Sunday, December 4, 2011

LXC

So, it's been over a week since I switched to LXC from Xen. I thought I'd post something about my experience with it.

Why did I switch?

Quite simply, I had two problems with my existing Xen set up, neither of which is the fault of Xen. I want to make that clear: I love Xen, I love the concept, it's a great system.

But I'm also a Ubuntu guy, and (problem #1) frankly, Xen is one of those things Canonical has never taken seriously. Getting a Xen compatible kernel usually means downloading it from somewhere obscure, and the repositories are far from ideal. You can't, in a 8.04 VM, upgrade to a more recent Ubuntu simply by using the usual upgrade tools. And I needed to upgrade. Everything I was running, from the version of Ubuntu Hardy (8.04) to the version of Xen was old, had little support, and didn't really work the way I wanted. In fact, bugs in the versions of Xen and Linux I was running meant that if any VM had to do a lot of disk activity, the chances were that one or more VMs would crash.

The second issue was my CPU. It's a 64 bit Intel contraption, but unfortunately it doesn't have native virtualization. This is fine for Xen, if you have operating system support (but I'm running Ubuntu, so I don't) but it's not fine for any of Ubuntu's supported virtualization platforms. KVM, as provided by Ubuntu, requires full virtualization be supported in the CPU. Other options such as VirtualBox likewise require CPU support. I still find it ludicrous that Canonical (and, to be fair, the organizations Canonical relies upon) decided to support KVM over Xen when Xen is clearly more efficient and has a much better architecture for this kind of thing. And yes, I know that KVM pays lip-service to paravirtualization, but in practice you can't use it.

This doesn't leave many options without spending money, and right now I didn't want to do that if it was avoidable. That meant looking at other technologies supported (enough) by Ubuntu, and frankly, there aren't many. After reading about OpenVZ (a common technology deployed by VPS vendors), I decided to give LXC a try.

LXC is essentially a "supported" version of OpenVZ - the latter requiring kernel patches, just like Xen. LXC is pseudo-virtualization. Rather than actually emulate a full computer (virtualization) or provide an infrastructure for multiple operating systems to share a computer and allocate resources (para-virtualization), LXC's approach is to have a single operating system kernel run multiple operating system userlands.


About LXC

LXC's approach is interesting. Services provided by the kernel - file systems, networking, process scheduling, memory allocation, etc, exist once. The kernel hides (or tries to hide, see later) anything that doesn't belong to a process's userland. chroot is used to provide a completely distinct part of the core file system (of course, the administrator can  still give a "VM" - called a container - a disk or partition of its own by mounting a disk and chrooting to it.) Each container is given certain rights such as devices it can access and memory and disk usage quotas (which can be unlimited.)

This approach leads to advantages and disadvantages. The primary advantage is efficiency. If there's one kernel running, there's no need to have a layer arbitrating between competing systems or, worse, emulating hardware so that operating systems "think" they have the run of a system. Better still, resources not in use by one environment aren't wasted as they might be in a virtualization or paravirtualization system if the latter has no specific strategy to handle them.

The major disadvantages are:

  • Each container's "operating system" must support the provided kernel. In practice, this just means "run something recent, and don't try running an operating system that has wild requirements." The standard Ubuntu kernel is able to host all the major distributions, other Ubuntus (including older versions, see below), CentOS, etc. And yes, you can have different containers have different operating systems. It's just they all have to run Linux.
  • LXC is unfinished. As an example, go into a container and type "ls /sys/class/net" and compare it to the output of ifconfig -a in both the container and the "host" system. Both sysfs and procfs have problems with containers, and in some cases, there are actually real security holes - as in you can have a container execute a local script in the host environment. Also there are other little things that don't work, like rebooting or halting containers using the reboot and halt commands.
  • LXC doesn't have the more advanced features offered by virtualizers. For example, you can't take snapshots or migrate running VMs from one computer to another.
The latter is considered a major issue by LXC's developers and is being worked on, but it takes time. 

The concept behind LXC isn't new by the way. LXC is Linux's answer to BSD's jails system, and jails is often seen as a "fixed" version of chroot, a technology that appeared in Unix a long, long time ago. 


Migrating to LXC

I'm bothered by the security aspects of LXC, but for the most part I'm OK using the system, at least in my own environment. There's not a lot worth hacking about my own computer network. Still, I'm looking forward to LXC being finished.

To set up LXC in a Ubuntu 10.04 environment, this is what I did:

1. Installed the latest version

LXC doesn't actually work in the official Ubuntu 10.04 release. You heard that right. It ships with a major bug that causes problems starting up a container if you have multiple volumes mounted. As my /boot is on another partition (2T drive on a BIOS that doesn't support disks that big) mine failed every time with an error about not being able to unmount the root file system.

So the first thing to do is add a third party repository that provides a more recent LXC:

# add-apt-repository ppa:ubuntu-lxc/daily

Networking needs to be manually configured, you don't want Network Manager getting in the way. The easiest way to fix that is to uninstall it:

# apt-get purge network-manager network-manager-gnome

And then there's the installation of lxc and some other important tools:

# apt-get install lxc bridge-utils debootstrap cgroup-bin


2. Configured networking

Networking requires configuration of tunnels, which isn't that hard fortunately. The key thing to understand is that tunnels replace your existing networking configuration. When you configure eth0, for example, you have to do leave as few options (IP addresses, etc) configured as possible. Here's what my /etc/network/interfaces looks like:

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
   address 10.0.X.X
   netmask 255.0.0.0
   gateway 10.0.X.Y
   bridge_ports eth0
   bridge_stp off
   bridge_maxwait 5
   post-up /usr/sbin/brctl setfd br0 0

At this point you should reboot to make sure everything is working as wanted.

3. Made a space for the containers to live

I decided to create a user "lxc" which I did using the adduser command in the usual way. Under /home/lxc I put my containers. Each container is a directory, and each directory contains the configuration file, file system mounts, and root directory of the container itself, like so:

/home/lxc/endothelial/lxc.conf
/home/lxc/endothelial/fstab
/home/lxc/endothelial/root/

I'll explain how to create those files and directories shortly, the important bit right now though is that /home/lxc/container-name exists.

4. I was migrating my existing Ubuntu 8.04 Xen systems. To do this:

4.1 Mount the VM's file system

losetup -f /path/to/disk.img
mount -r /dev/loop0 /media

4.2 Copy the contents making sure permissions etc remain unchanged

cp -a /media /home/lxc/endothelial/ ; mv /home/lxc/endothelial/media /home/lxc/endothelial/root

4.3 Modify the VMs to remove anything that'll interfere with the new environment

cd /home/lxc/endothelial/root/etc/init.d
mkdir DISABLE
mv checkfs.sh  checkroot.sh  udev  udev-finish DISABLE/

4.4 One more modification - Xen uses /dev/xcv0 for the console, change it to /dev/console

vi /home/lxc/endothelial/root/etc/event.d/tty1

Change the last line to:

exec /sbin/getty 38400 console


5. Create the configuration files mentioned above.

lxc.conf looks like this:

lxc.utsname = endothelial
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.mtu = 1400
lxc.network.name = eth0
lxc.network.hwaddr = (my VM's mac address)
lxc.network.ipv4 = (my VM's IPv4 address)
lxc.network.ipv6 = (my VM's IPv6 address, I'm sure this is necessary but...)

lxc.cgroup.devices.deny = a
#/dev/null/zero/random
lxc.cgroup.devices.allow = c 1:3 rwm
lxc.cgroup.devices.allow = c 1:5 rwm
lxc.cgroup.devices.allow = c 1:9 rwm
lxc.cgroup.devices.allow = c 1:8 rwm

#Consoles
lxc.cgroup.devices.allow = c 5:1 rwm
lxc.cgroup.devices.allow = c 5:0 rwm
lxc.cgroup.devices.allow = c 4:0 rwm
lxc.cgroup.devices.allow = c 4:1 rwm

#Ptys
lxc.cgroup.devices.allow = c 136:* rwm
lxc.cgroup.devices.allow = c 5:2 rwm

#rtc
lxc.cgroup.devices.allow = c 254:0 rwm

lxc.tty = 4
lxc.rootfs = /home/lxc/endothelial/root
lxc.mount = /home/lxc/endothelial/fstab

fstab looks like this:

none /home/lxc/endothelial/root/dev/pts devpts defaults 0 0
none /home/lxc/endothelial/root/proc proc defaults 0 0
none /home/lxc/endothelial/root/sys sysfs defaults 0 0 


6. We want the server to start automatically, so create symlinks in /etc/lxc/auto

# ln -s /home/lxc/endothelial/lxc.conf /etc/lxc/auto/endothelial.conf


7. Start the session

For now, we'll start it interactively. We can always shut it down and start afresh once we know it's working.

# lxc-create -n endothelial -f /home/lxc/endothelial/lxc.conf

(Note, each time you change lxc.conf you need to do an lxc-destroy -n container-name and then do the above command.)

# lxc-start -n endothelial

If everything's set up correctly, your console session should become the container's console and you should be able to log in and all that jazz. To shut down the container, open a different console on the host, and type lxc-stop -n container-name.

In use

The above works for me and I was somewhat surprised by how well it works. Despite the 8.04 images I migrated being completely unaware of the LXC system's existence, they run well with no noticeable problems.

Everything's much faster. I'm sure part of this is that I never had a particularly optimal Xen environment to begin with, but, well, the LXC environment is much more efficient anyway, and it really shows.

Things I'm happy about:
  • Fast, efficient, and reliable
  • Power management is reliable. Xen had a habit of running everything at full blast
  • Migrating back ot Xen should be easy. At worst, I can run LXC within Xen VMs without penalties.
Things I'm uncomfortable with:
  • Not 100% transparent. I don't know what will break as a result. Nothing as yet, but it doesn't help my confidence in the platform. Supposedly Oracle will not install because the LXC APIs tell it there's no virtual memory available - but my view is that's a bug in Oracle, who the hell codes that kind of logic into their systems anyway?
  • Security issues
  • No scope for experimentation with operating systems other than those based on Linux. No Solaris or BSDs for example.
  • I'd like to make containers that have no virtual memory for those few applications that absolutely definitely must be available at a moment's notice - Asterisk for example. This isn't possible in LXC, to the best of my knowledge. Still, Asterisk works pretty well in the new environment, while it crashed a lot under Xen.
The list of things I'm uncomfortable with is longer than the "things I'm happy about", but that's a little unfair. Most of the uncomfortable issues are theoretical. The platform is working very well at the moment, and I hope the developers can get the kinks worked out so I can feel more comfortable about the security of my system while running it.

Thursday, December 1, 2011

Republican presidency? Can't be worse

It's looking increasingly like the Republican nominee for President will be either Mr Romney or, slightly less likely, Mr Gingrich. Romney has been the front runner for most of the campaign (and when not, the man to beat.) Gingrich follows a trail of beaten down nominees of the moment - Bachmann, Perry, and Herman Munster, who have had a few moments in the Sun before it become obvious they were unelectable lunatics.

From the point of view of this liberal, I'm down with either. I wouldn't vote for either, don't get me wrong, but Obama needs to be thrown out at this election, and pretty much the only reason not to vote him out is if the Republicans nominate someone much worse. Given that, I can safely cast a vote for a liberal third party candidate at this election knowing I will not be throwing the country to the wolves by not voting for a lesser-of-two-evils candidate.

Why Gingrich and Romney? Well, I'm sure the former is going to be more controversial, but actually I'd like either to win because I don't believe, at heart, either's evil, and Romney has the added benefit there's a 10% chance or so that he'll completely divide conservatives when he becomes President.

While the knocked down candidates may have been loonies, neither Gingrich nor Romney are. Both are to some degree technocrats, they may rant and rave in public and occasionally say some very extreme things, but in power they try to find academically smart solutions, according to their respective ideologies, to real problems.


Is there any evidence Romney would be worse than Obama on the issues that matter most to me? I don't see any. Obama's far right views on the surveillance state, on torturing whistleblowers, on extra-judicial executions, do not seem to me to be bettered by anything either has said. Indeed, it seems probable that those views both has put in public that appear to show fear of terrorism are as much to do with appealing to the Republican base as anything else. There is a strong chance that Romney would actually be more liberal than Obama, and a slight chance that Gingrich would be too.


Romney would be an interesting President because he's a city man in a party normally associated with country politics. That means he takes some interesting positions not normally widely associated with Republicanism such as gun control. If Romney can engineer a Republican dominated Congress, that could be his - and the Republican's - undoing. Conventional wisdom is that Republicans would never vote for a gun control bill. But the reality is that dominating congress can only be done by taking seats from Democrats, and in general the pro- and anti- gun-control lines are drawn not by ideology but by location and demographics. This is why someone like Guiliani, considered far-right by most liberals, takes the pro-gun control line. And while Democrats are scared to go there, Republicans have no reason to be. A Republican party dominated and controlled by City-Republicans may well pass some laws that undermine key planks of its support for decades to come.

Gingrich's major problem is that he's also somewhat on the slimy side when it comes to politics, he wants power (which is why he keeps running for President despite - this time excepting - always being knocked out at an early stage.) He was extremely successful with the framing exercises of the early nineties and practically made "Liberal" a bad word. He went after Clinton for consensual sexual transgressions and almost brought the country to its knees in doing so despite his own, somewhat worse, private life.

But Gingrich is, at heart, a technocrat. He tries to find free market solutions to real problems rather than pretending the problems do not exist. While Romney's healthcare reforms may have formed the roots of Obamacare, the reality is that they first cropped up during Gingrich's leadership of the opposition at the time of Clinton's health care proposals. The healthcare proposal, which included an individual mandate, never went anywhere, but it was typical of Gingrich's approach, an attempt to craft a system that would leave the majority of the health system in the free market, while creating an infrastructure to ensure it was available to everyone, the goal of any real healthcare reform.

Gingrich is also notable as being one of the early supporters of the Internet, at a time when it was barely heard of outside of nerd circles.

The bottom line is that I don't think either candidate will cause the collapse of America, or if they do, Obama would do it sooner. As such, given a vote for Obama is a support for torture, executive ignorance of the rule of law, unnecessary and blatantly illegal wars, compromises that are worse than doing nothing, and not giving a rat's behind about the unemployed, victims of corporate malfeasance, and general cronyism, I believe that it would be better to vote for a liberal third party thereby allowing either candidate to win, than to vote for Obama.