On software liability laws

I came across this interesting opinion on software liability.  Just to keep them here for the context, the suggested software liability rules include the following:

  1. Consult criminal code to see if any intentionally caused damage is already covered.
  2. If you deliver software with complete and buildable source code and a license that allows disabling any functionality or code by the licensee, then your liability is limited to a refund.
  3. In any other case, you are liable for whatever damage your software causes when used normally.

Which sounds reasonable from the position of “let’s sort the security issues”.  Even though I’m not a big believer in legal system when it comes to technology issues.  But then, there is this:

The software houses would yell bloody murder if any legislator were to introduce a bill proposing these stipulations

with which I personally disagree.  I think software houses that do quality work wouldn’t mind at all.  The people who would mind are the clients of software houses.  Quality always comes at a cost.  And raising quality of software immediately means rising the cost of software.  And the majority of clients (in my experience) don’t care about quality to the point where they would pay for it.  And there are plenty of examples in other industries – food, automobile, furniture, clothes, etc.

Basically, this all just reiterates my points of security and privacy are mythical and/or dead.  Mostly, because most people don’t care enough.

Vagrant adventures on Fedora 21

I spent a large chunk of yesterday experimenting with Vagrant on my Fedora 21 laptop.  I’ve used it before of course, but a friend asked for help with something I was planning to play with for a long time, so it unexpectedly lead me into a journey.

Let’s start simple.  If you want the least possible amount of hassle with running Vagrant on Fedora, you should use it with Oracle VirtualBox provider (sometimes also called hypervisor).   It works great!  The only troubles with this approach is that VirtualBox relies on a kernel module (kmod-VirtualBox RPM), which has to match your current running kernel version to a digit.  This kernel module is NOT part of the official Fedora repositories, and, instead, can be found in the RPM Fusion yum repository (rpmfusion-free-updates).  This means that sometimes, when Fedora releases a kernel update, it might take a few days for the RPM Fusion repository to catch up with the kmod-VirtualBox updates.  And this, of course, might result in your Vagrant setup being broken.

The easiest way to protect against that is to disable automatic kernel, kernel module and VirtualBox updates.  To do so, add the following line to the [main] section of your /etc/yum.conf file, right after your VirtualBox/vagrant setup started to work:

exclude=kernel* kmod-* VirtualBox*

Now, if you forgot to do that a few times got pissed off with this situation (or don’t like Oracle for some reason), you might consider alternatives.  Which are a few.  Vagrant supports a variety of hypervisors.   One of the common alternatives is to use libvirt, which is shipped with Fedora distribution.

Installing libvirt is simple (thanks to this blog post).  Here’s pretty much all you have to do:

yum install libvirt libvirt-daemon libvirt-daemon-qemu virt-manager
service libvirtd restart

The problem that you might realize now is that libvirt is not the most popular provider for boxes in the Vagrant world.  Most people seem to prefer VirtualBox.  But if your choices are satisfied, I’m glad for you.  If they are not, however, there is a work around that you might go for – vagrant mutate plugin.  This plugin converts vagrant boxes from one hypervisor to another.

In order to install this plugin on Fedora 21 you’ll need a few development tools first (this StackOverflow thread definitely helped with the weird g++ error):

yum install ruby-devel gcc-c++ make

Once you have those, install the vagrant plugin with your regular user (the one who will run vagrant VMs):

vagrant plugin install vagrant-mutate

Now you can mutate Vagrant boxes.  Unfortunately, you might find that mutate plugin doesn’t like boxes with slash in their names (like chef/centos-6.5).  The suggested workaround is to either use box names without slashes, or to provide mutate plugin with the box URLs, rather than names.  The official boxes directory doesn’t give you URLs though, so you might be stack with random GitHub repositories or with an alternative directory, like Vagrantbox.es.

My adventures with this aren’t over yet.   Feel free to send suggestions my way.  From my side, here are a couple of other useful links on this subject:

One last bit of advise from me is that until you are absolutely sure that your Vagrant setup works perfectly, stick to 32-bit box images.  There’s nothing like ripping your hair out for three hours only to learn that your host hardware is 32-bit while you are trying to boot into a 64-bit operating system.

First computer – Tesla PMD 85-1

Once in a while people ask me what was the first computer I could get my hands on.  Mistakenly, I’ve often answered that it was Commodore 64.  But today I did some digging and realized that it wasn’t true.  I did use Commodore 64 too, but that was mostly for playing games – my uncle was a head of a nearby Fire Station and he had one of these in the office, but that wasn’t the first computer I used, and it wasn’t the one I learned to program on.  That honor goes to Tesla PMD 85-1.  Here is a picture to give you an idea (thanks to root.cz):

pmd85

We had a computer lab in school, with 11 of these things.  10 were used by the students and 1 was for the master station for the teacher.  Some of the highlights that I still remember: black and green monitor, cassette tape drive for loading and saving programs (sorry, no hard drives or floppies, or network really, except for printing on a slow and very load dot-matrix printer), a very uncomfortable yet colorful  keyboard.  The keyboard is worth a separate mention.  As seen above, it had blue, red, and grey keys.  It didn’t have an Enter or Escape keys.  But it had two EOL (end of line) keys right next to each other – I don’t remember why though.  And STOP and RST (reset) buttons.  And it was almost QWERTY.  Here is a close-up image from Wikipedia:

PMD_85-1

For some reason, I remember the keyboard slightly different.  Those blue K-keys were to the left of the main area, organized into two vertical columns.  But I was unable to find an image of such model, so it must be my memory failing.

When I was back in 5th grade (that must have been … hmm … somewhere around the year 1990), a new Informatics (that’s how Computer Science was called back then) teacher at school opened up an after hours Computer Club, which allowed all students, and not just the high graders access to the machines.  I don’t remember the name of the guy, or how I got involved with it, but I do remember that I got hooked on it pretty much immediately.

A few times a week, we’d stay for an hour or two after classes and learn Basic programming language.  He’d explain to us some basic concepts such loops, conditions, and variables, and then would let us work on our code.  For the rest of the days, I remember, I was walking around with the paper notepad, in which I’d write source code by hand, debug it, test it, and improve it, so that I could spend less time doing so in the lab.  Machine time was limited (an hour or two per session, with some of it taken for loading the program from tape, typing in changes, and saving back to tape), so you’d optimize for using it to actually run the program, verify the result, and, maybe, try one or two more ideas.

If I remember correctly, I worked on these machines for two or three years.  Then, my other uncle, who was the first real IT guy I knew, got me an IBM XT machine.  It wasn’t an original IBM, but a mix of Soviet countries manufacturers.  But that was great!  That was the closest thing to the modern PC – CGA graphics with 4 colors, 640 KB of RAM, 10 MB hard disk, and a floppy drive!  I thought nothing better was possible until I saw a VGA monitor with 16 colors.  I think then I realized that I’ll never catch up to the technology developing so fast.

And one last bit of memory.  Even though I wrote quite a bit of Basic code while learning English in a specialized school, it wasn’t until I came to Cyprus and started learning Pascal programming language in Intercollege, that I realized that all those words I’m typing into the computer to make it do things are ACTUAL ENGLISH WORDS!  Now that was both embarrassing and empowering at the same time…

Oh, good old days.

P.S.: Yes, I’ve played on Atari too at my friends’, but I never owned one of those.