Monday, February 09, 2009

sudo = Stupid Utility, Distinct Overkill

I think XKCD said it best...

"Make me a sandwich."

"What? Make it yourself."

"sudo make me a sandwich"


The UNIX OS was originally designed to run on computers that many people would use and in those situations you don't want every Tom, Dick and Janie installing stuff that could break a shared computer. However, on desktop Linux (which one person normally uses) , sudo is kind of useless. Why not just prompt for the user password without sudo (if root access is needed to install or change modifications)?

I guess sudo IS easier than logging out and then logging in again as root, but it's annoying (especially if you give your normal user permission to administer the system). It almost becomes a point of politeness (in which the word please would make much more sense). Instead of sudo apt-get install ruby you could just ask please install ruby. No wonder people think techies speak their own language. You are probably saying please out loud to your computer anyways when it doesn't work. I know I was when I was having trouble configuring the microphone for use with Skype.

Skype: Hello, welcome to Skype call testing service. After the beep, please record a message.

Me: Please please please work! I don't want to have to go back to Windows!

Ah yes, Windows. As bad as sudo is, it will never be as bad as Vista's User Account Control.

That's still no excuse though...

Life with Linux

I have been using Ubuntu Linux at home for the last month (courtesy of those folks over at Wubi). Overall I think it is great. So much faster than MS Vista and it helps inject life back into old machines.

However I have spent a fair amount of time configuring and re-configuring things (partly my own fault, and also partly because of the learning curve involved with any new OS). I even had to do one re-install (more on that later). Mostly though it worked out of the box.

So here are a few good ground rules for newbies...

1) Make sure you have more than one Internet enabled computer in the house before you do anything. If for some reason you have a hardware conflict (as I did with the wireless card on my wife's laptop) you will need to look up how to fix it.

2) Most of what you need is available through Synaptic Package Manager or Applications > Add/Remove. If you need a program or driver search there first before the Internet. The only notable exceptions I can think of are Skype and Adobe Flash. Basically Ubuntu has a number of great free programs available which you don't need to install externally.

3) Don't mess around with settings and config files unless you really know what they do. It was this that led me to my re-install, partly because of the next category...

4) When going online for info on configuring your computer, don't automatically use the first solution you read (especially if it asks you to update your settings and config files). Manually updating settings and config files with your text editor should be a LAST resort. More often than not the GUI tools are safer. You wouldn't normally update your Window's registry by hand would you? There are sometimes exceptions, but if an article tells you to go to your terminal and do anything with sudo, vi, pico, rm or gedit think twice. The only exception is sudo apt-get install (which is pretty safe because you are just using the command line version of Synaptic Package Manager). Also be wary of shell scripts (.sh files).

Apart from that I found Ubuntu much faster and easier to install than any Window's distribution (way faster). Provided you have the disk or the files on hand I would say it takes twice as long to install as Vista takes to boot up on an old machine.

Tuesday, February 03, 2009

On gambling and computer languages

Today's entry will be a bit more esoteric than most others, it's basically an broad analogy between gambling a choosing a software language to learn/specialize in.

Basically as a programmer you have many choices in your career as to how which languages to learn and what level. The main 2 choices though are whether or not to become a specialist or a generalist.

Take a roulette table, it's possible to make sure you will have a better chance of winning by spreading your money around it (being a generalist) but if you win, your win will be offset by your losses. If you put all your money on one square, if you will you will win big but your chances of winning are lower.

Now look at specializing vs generalization in programming. Some of the people I know who earn the most money as programmers (at least per hour) tend to specialize in small areas. I know one who only really knows JavaScript (at an architect's level), another who writes add ons for Outlook, and another who specializes Adobe Flash. On a per hour basis they are all doing quite well, however the number of companies they can work for are quite limited and while COBOL programmers were making great money up until Y2K, a lot of them aren't doing very much now.

The generalists may not make as much per hour, but the number of places they can work are much higher and if demand falls off in one of their languages then they can pick up another language and focus on that. They are also people who have the luxury of choosing which tool they want to use for a task as opposed to trying to make their only tool do the job (i.e. hammering in a nail with a wrench).

Roulette however is totally probability driven and not experience driven. Perhaps in that case a better analogy would be horse racing. Before one chooses a horse (or horses) one has to do a lot of research into how it's been doing as a predictor of how it will do in the future. The same applies to computer languages. Some will obviously be around for a while, some are on their way in, and some on their way out. If you learnt Java or C++ chances are you will be able to work in those languages for the rest of your career.

But as with horses, sometimes one chooses a language because one just instinctively likes it.

As for myself, I am an unabashed generalist. I will continue to back several horses and while I may not make as much, at least one of them will win.