Tuesday, October 7, 2008

Computing Subversive's Bill Of Rights


Have you ever been told by an employer or academic institution that you MUST only use a specific hardware, operating system, or software solution? The reasons given are manifold and sometimes even appear rational and reasonable. Justifications that I have heard are: "We only want to support one system." "It is not allowed to use unsupported systems." "We cannot pay for support for any other system." "We don't know how to administer and support that system." "We don't know how secure the operating system that you want to use is." "There is no vendor contract or support for that software." "It might be spyware/malware/freeware/open-source." "It must be approved first." "We have an exclusive contract with a company that only provides their craptastic solution and the contract doesn't allow us to use other systems."

Even though the people carrying out the policy decisions of your company have every reason to suspect that your unsupported solution may be more secure, robust, or proficient than what they are using, they don't defend you. They only care that their costs 'appear' low or that there is an appearance that things are 'secure'. They want to legally protect themselves from you and the threat you pose by being a user of computing resources. You don't pass go. You don't collect $200. You are stuck with the shit you are given or you have to go through a painstaking process of proving one exception at a time that you have adequately prostrated yourself in the eyes of the policy managers. Then you might be able to use your unsupported system.

I am one of these subversives. I am a delinquent in the eyes of the policy mandate-ers with their cheeky pocketbooks, corn-fed contractors, and indignant securitizing homogeneity enforcers. I have been successful at using my choice of hardware, software, and operating system. I am able to do this because I am tenacious and because I demand that the computer systems that I use be flawless to the tasks that I have at hand. I am extremely proficient at my job and my use of computing systems. I outright refuse to accept any force-fed least-common-denominator solution.

My company has numerous policies setup to stop me. They want me to use any Microsoft supported version of Microsoft Windows and I have to always, always spend extra time justifying why each hardware purchase is not using the cheapest available solution. I abandoned the Microsoft Windows playground during my sophomore year as an EE student shortly after discovering the unnerving stupidity of Microsoft's basic design principles. I then immersed myself in world of Linux distros and command shell environments. I started my first post-graduate job expecting to use the most customized, specialized, and secure computer systems on the planet. And...I then quickly discovered that I was expected to throw away all of my hard-boiled Unix experience and to use a child's toy.

Ok. So you get that I am bitter. I get more bitter every time I am expected to justify myself. This happens every few months. Some new policy is born that has more or less ambiguous language that says I must not use what I am using. It will be taken away unless I can justify its use. Further, that I am not allowed to justify its use using an argument of personal preference or efficiency. And it doesn't matter that nothing has changed on my end. That the same justifications apply. I jump through the paper hoops of fire and navigate the gauntlet. I didn't choose to play a game of "hot lava" today, but am hop-skipping over imaginary flames nonetheless.  I can never guarantee that my efforts will be successful. I could end up with barbecued feet and an empty tool bag full of Fisher Price toys and a Dilbert etch-a-sketch to replace my sophisticated arsenal of computing tools.

I think that the problem is, however, far deeper than my unrest and unease. The problem is one of a large institution making a definitive choice of a specific implementation of a computer system, when, by definition each of these Turing machines is fully capable of emulating the others. The difference being in user familiarity, in implementation and user interface details, in their level of proprietary or open design, in their methods for product testing and making guarantees. Sure, I understand that an organization has needs, and when it needs one, an organization should acquire a large petaflop computing system and use it for boiling eggs or performing network and computing security tasks. But in respect to 'personal' computing, an organization doesn't use these, individuals use personal computers. I use personal computers. I might access mainframes, but my daily tasks are done right here in Sunnyland. And in Sunnyland I need a computing system built to the oddities of my brain, my experiences, and my tasks.

Even if the organizational organism itself uses a personal computer, it shouldn't ever specify one for you. Clearly you will use a personal computer in a very different way than an organization organism. You have hands! It would be slightly better if it were your office-mate or next door neighbor telling you what software you should run or what type of computer you have to buy. But even this is complete nonsense. Just because you sit in the same cubicle or live on the same street gives someone no insight into your cognitive abilities and peculiarities. If I've got a different driving style than you and am most efficient using a 6-speed manual transmission, I should damn well be able to..no..I should have the right to choose a the manual over any automatic.

So, you are reading this and being a business owner, or policy enforcer, you think that I am out of my fucking mind. If you let your employees drive whatever computing vehicle they wanted, you would not be able to afford the cost! You wouldn't be able to guarantee computer security! So, yeah, I'm not talking about cost. If you want to put a restriction on how much I am allowed to spend, do it, but if I am a expert and expect the best tools I will either quit my job or purchase them for myself. If I am expected to perform at my peak performance within the bounds of a budget I must still be able to choose the computing environment that fits my specific needs. And if you are smart you won't use cost limiting as a method to get me to use a pre-chosen solution. Clearly, if you are doing this, you've missed the point.

And as for the 'security' arguments...If you are only doing security on the host level...you've lost. If you want secure personal computers, the only way to do this is to educate your population! You don't tell your scientists that they can't use a hammer because they might smash their fingers! Just teach them how to hit the nails without damaging themselves, their tools, or their colleagues. So you don't have that type of security expertise in house? Pay for external security firms to educate them for you. You'll will be better off doing this instead of trying to keep up with the incredibly fast-paced world of software.

The proposal that I am taking my sweet time in getting to is this: A Bill Of Rights guaranteeing an individual free choice of human-machine interface. Give the individual the inalienable right to choose for themselves the type(s) of computing environment(s) that work best for their tasks. I am sure that this is the right approach. Our organizations, if they are mandating a specific environment, do not have your best interests at heart. Your health and cognitive proficiencies are being used against you. They are wasting you. They are throwing away tens of thousands of your precious life hours in order to fulfill some pre-ordained requirement created by financiers of big-business or big-government. I do not have the time to have my life wasted so blithely. I should have the right to work as proficiently and efficiently as I know how. The real screwed up part of this is, we are currently the minority. Most computer users don't care about computing environments because they don't know enough about their computing environments to give a damn. So when a bunch of don't cares are thrown on a balance scale against individuals organization make up any damn thing they choose and throw away their most proficient computing resources. Us!

I don't expect such a computing subversive's bill of rights to be mandated for all companies, except in the particular case when that company is the U.S. Government. As a taxpayers and employees we must repair this problem or risk everything by steeping our best and brightest in the mud of mediocrity. Just think this: if you were an Olympic runner, would you be able to perform if forced to run in flip-flops? Just remember, in respect to human-machine-interface, your flip-flops may just be my rocket-boots.

Some related examples of writing on computing consumer rights. Note that all of these are concerned with consumer rights in respect to product quality. These are necessary protections but I believe are related to basic product guarantees rather than providing users with the ability to choose HMI specifics.

I believe that for any of these usability and accessibility guidelines to make a difference, first and foremost, a user of a computing system must be able to choose an optimal solution for their individual characteristics.

Tuesday, May 20, 2008

Linux Grub bootloader harddisk UUID inanity

I spent the last couple of hours figuring out why my Ubuntu machine was not booting. Everything was fine...and then I removed a backup IDE hard-disk to place in my safe deposit box. Rebooted to remove it and then uhg....hang...then an initramfs. My Linux skills are rusty. WTF is initramfs? Oh yeah, low-level initialization and startup stuff that I don't want to know about. Super. So....UUID are supposed to make life easier by using a unique identifier for each device. However, it doesn't work like it should and the unique identifier is unique alright...unique to the machine and apparently impermanent as well, making the whole concept.....worthless. I personally can't tell one long sequence of hexadecimal from another. Meaningless noise. The old system of using simple cryptic names like /dev/sda1 etc. worked just fine and if there was a boot problem I could diagnose it by determining if my partitions had changed names (which they shouldn't, ever, but do and is thus a reason for UUID). Ending up at the initramfs prompt can be caused by lots of things that I don't really care to concern myself with. One of them is having incorrect boot parameters as specified in the /boot/grub/menu.lst.

So the fix was easy...just not documented in the startup or identified by the non-error-like weirdness of ending up with a non-bootable system only because a stupid machine-unique-id was rendered incorrect due to some inanity in IDE versus SCSI devices. Basically, at the Grub menu, hit ESC and edit the boot command for the kernel that you'd like to use. Where it reads root=UUID=somelongsequenceofhex just remove the UUID=somemachinereadablebullshit and replace it with the partition that you know contains the boot partition. In my case this was /dev/sda2 so it reads something like root=/dev/sda2. If you don't know your boot partition, boot off of a Linux distro CD, get a command shell, look at your /proc/partitions file and figure it out. Knoppix is good for that, or use your distro CD. I've got 2 raid arrays with 5 disks each and 2 IDE disks. I can spot my root disk solely based on partition size.

Once you've got the right boot command your system will then boot normally, like it should have done to begin with. Run the blkid command on your boot partition to retrieve its machine-unique-id and replace the invalid UUIDs in your /boot/grub/menu.lst file. You also need to change /etc/fstab to reflect the apparently random UUID changes. That was a complete waste of time, but now your Linux system will boot without being poked and prodded.

I really, really love Linux. I love the philosophy of open-source and I love the feeling of personal power that I have knowing that I can (and do) modify my system to my liking from the ground up. But I don't like arbitrary bullshit. Proprietary or open-source, it doesn't matter. These things should work...flawlessly...autonomously... My boot partition didn't fucking move, change, or disappear. The magic fucking 8-ball that Grub is using just gave the wrong answer even though the game itself is rigged.  Damn it.  Don't play games with my time.

Saturday, March 29, 2008

Extraterrestrial Population Control

If I were a space faring species who was non-conquest driven and didn't want conquest driven species from poisoning the galaxy like cancers... I would actively search for new species hell-bent on conquering the galaxy and stop them at their beginnings. I'd use effective long-term treatments to eliminate the disease. Probably the easiest: send asteroids big enough and numerous enough to prevent fast-paced development but not destroy them. Do this periodically. For most sentient species asteroids that weren't planet busting wouldn't eliminate them. Asteroid impacts would simply extend their gestation period, making it far more likely for a conquest driven species to self-terminate before becoming space faring.

The target species would likely fall into one of 3 categories

  • a) self-termination: die off due to stupidity or internal conflict
  • b) conquest-relaxation: successfully deal with the long-term environmental effects of asteroid impacts and subsequent delayed technological development
  • c) live long and prosper: prevent multiple, sustained asteroid impacts through cohesive action


The first possibility helps eliminate threatening species. The second is unfortunate for the target species, but increases the chances that, if they survive nuclear winter, they won't destroy the rest of the galaxy as conquistadors (due to the higher probability of self-termination occurring). The last possibility would mean that the species had successfully run the gauntlet and that the species is capable of acting in a cohesive manner against an external threat.

The idea here is that there must be some way to 'test' a species for suitability. It is intuitively the case that a species which is very conquest driven is very likely to be factional and unable to cohesively act when threatened (especially for extended periods of time). Another possibility is for a conquest driven species to to be totalitarian, which may mean that they can act cohesively over long periods of time, but are unlikely to have the technological resources necessary to prevent asteroid impacts.


A couple of years ago I was listening to the Astrobiology Magazine podcast on a regular basis. On one episode, Frank Drake, the originator of the Drake Equation was interviewed. The thought experiments that the Drake equation explores allow us to take an interest in our self preservation that is very non-homo-sapien-centric. In all likelihood there are many, many thousands of other sentient species in just our arm of the galaxy. It is in our best interests in taking this into consideration when solving human problems. The prospect of being seen as a threat as we slowly reach into interstellar space has potentially dire consequences.

So as we all have been told, asteroids have hit the Earth in the past with devestating consequences. We can estimate (in a similar way to the Drake equation method) the likelihood of a random asteroid hitting the earth. Now what is really interesting is that we can also estimate the increase or decrease in this likelihood based on current Earth politics and the status of human space technology and weapons using an estimate of the number of peacekeepers present within the galaxies sentient races.

A trilogy by the Welsh science fiction author Alastair Reynolds explores some of these ideas on a grandiose scale.