I'm looking at the feature list for Ubuntu 8.04 "Hardy Heron" and wondering how they're trying to appeal to the masses with this list.
Xorg 7.3...Linux kernel 2.6.24...GNOME 2.22...as if these names and version numbers are supposed to mean anything. Fortunately I've been with Linux for a while and can understand what these mean, although the version numbers are usually news to me (I know that GNOME is version 2-point-something and the Linux kernel is 2.6.something). Who gives a shit about this stuff? the "Completely Fair Scheduler"! Stop the press! Why not just say, "things go faster"? Or instead of saying "dynticks support for amd64" say that it uses less power.
Instead of saying GNOME 2.22 and all this Nautilus/GVFS garbage, why not just say "You can now restore files from the trash" (something Windows has been able to do for a long long time, why did GNOME just get this now?) or "You can pause file copying or undo it" (pretty sweet).
PolicyKit looks pretty handy, although I don't really see how it makes anything easier. We'll just have to see when it's there.
PulseAudio - no idea what that is. Don't really care.
Firefox 3 Beta 4 - This is a bad idea. Don't ship beta software with your release. Beta software is beta because it's not supposed to be released yet. What are they thinking? Hopefully this idea gets changed before the actual release.
The first thing that I see on this list that actually is interesting is Transmission. Finally, a more useful torrent program. I can dump my bloated ass Java program or the one that only works under wine and have something that fits.
The next thing that raises my spirits is Brasero. Oh my god. A graphical application that burns CDs. I don't have to use Nautilus or cdrecord anymore. I can point and click. This is a large step forward for Ubuntu. It's a shame that such a mundane task has been neglected until now.
Never had to use Inkscape, but this will be good to have. Not sure why they have it installed by default though. Same goes for the virtual machine software, VNC and the world clock applet.
Wubi and umenu are excellent additions for promoting Ubuntu, although the spiel about "WinFOSS and the Windows...replaced by umenu" is pretty irrelevant, why would a person interested in getting Ubuntu care about this?
Ultimately, the only things that are interesting to me as an Ubuntu user here are Brasero and Transmission. To a non-Linux user, I have no idea what would be interesting about this showcase.
Maybe if they want to advertise to human beings, they should actually get a human being to write about the software and advertise it. Write about things that human beings actually care about, not underlying software that nobody actually knows the names for unless they actually research into it (I'm talking about you Xorg and Linux kernel).
Apr 16, 2008
Apr 11, 2008
Profiting From Open Source
Believe it or not, there is a way! As we all know, you can give the software away for free - even the code - and then make people pay for support. Red Hat has been doing this for years, looks like Canonical is doing it too. And why not? Linux (and lots of other open-source software like Apache, MySQL, etc.) definitely have a learning curve to them, and many people need help along the way. While there is a vast community out there and plenty of documentation, you don't always have time to search for it, dig through all the search results, etc. to find what you need. Try searching for iPod rhythmbox on Ubuntu Forums, most of the results are either people asking about amarok or telling people to switch to amarok (I should probably take a hint here) or of course the various people who feel the need to tell the world they're switching back to Windows. Note that although I had an easy time with iPods and Rhythmbox, my roommate did not have such an easy time with her Nano.
The point is, sometimes what you're looking for is either difficult or impossible to find. You could post something in a forum about it, but most of the time you'll either get flamed by an elitist Linux guru or somebody will give you a fix that probably won't work for you (I'm still trying to get my printer to work again after my last kernel update). Either way, this takes as much if not more time than searching through existing posts about the problem. That is where support comes in. You give a call to someone who is paid to help you immediately. This is a huge bonus when it comes to businesses, where you need things fixed ASAP.
Now the economist in me yells out, spouting things like "incentive" and "price discrimination". There is some incentive here for the developers/maintainers to keep the program hard to use in order to keep making some cash. While the application is open-source and eventually somebody is going to create a nice GUI front-end, you'll probably have a few years before anybody makes something functional and talked-about enough to be widely adopted.
There's also price discrimination, in that an advanced user will probably never use the support, a pseudo-advanced user (no pun intended) might only use the support once in a while, but an inexperienced/dumb/lazy user will have to pay through the nose for it. Unfortunately, this is probably not a safe long-term investment, because eventually that somebody is going to make a nice easy-to-use front-end for the program.
The more I use it, the more I love open source. It's just so much easier sometimes.
The point is, sometimes what you're looking for is either difficult or impossible to find. You could post something in a forum about it, but most of the time you'll either get flamed by an elitist Linux guru or somebody will give you a fix that probably won't work for you (I'm still trying to get my printer to work again after my last kernel update). Either way, this takes as much if not more time than searching through existing posts about the problem. That is where support comes in. You give a call to someone who is paid to help you immediately. This is a huge bonus when it comes to businesses, where you need things fixed ASAP.
Now the economist in me yells out, spouting things like "incentive" and "price discrimination". There is some incentive here for the developers/maintainers to keep the program hard to use in order to keep making some cash. While the application is open-source and eventually somebody is going to create a nice GUI front-end, you'll probably have a few years before anybody makes something functional and talked-about enough to be widely adopted.
There's also price discrimination, in that an advanced user will probably never use the support, a pseudo-advanced user (no pun intended) might only use the support once in a while, but an inexperienced/dumb/lazy user will have to pay through the nose for it. Unfortunately, this is probably not a safe long-term investment, because eventually that somebody is going to make a nice easy-to-use front-end for the program.
The more I use it, the more I love open source. It's just so much easier sometimes.
Apr 9, 2008
The Peasant and the Programmer
After a brief stroll past the old university campus, I saw several signs for things like "anti-capitalist presentation" or "communist club", etc. I couldn't help but wonder, where do these people get these ideas that what they're talking about is really better than what we have? Have they that much experience with a non-capitalist society that they can actually say it is better?
Admittedly, I was once a bit of a socialist. Back when I was in school I was all for the whole lower tuition thing, better public transit, better socialized medicine, yadda yadda yadda. As one of my economics professors once said to me, "I was a socialist when I was your age, but fortunately I got over that pretty quick. It's funny how your opinion changes once you become a tax-payer." Once you get out into the real world and have a decent salary (not that difficult to obtain) all these things like student loans don't really bother you nearly as much. In fact, the whining about "the burden of debt" tends to get more annoying than anything else. I remember a demonstration downtown Montreal about how "education is a right." Yeah sure, that's fine, but look at it this way. University graduates make a fair bit more than the average person. Suppose you get $20k of debt at about 7% interest rate. If you pay back around $500 a month, it'll probably only take you about 3 years to pay it all back. That's less time than it took you to accumulate that debt. So how is it a burden?
A lot of these protesters tend to attribute certain things to a capitalist society. Things like poverty, exploitation, mass media brainwashing, things like that. It seems like they haven't really studied their history very much. Poverty has been around since the ability to gain more than another person has been around. There have been beggars for thousands of years (they talk about beggars in the bible), long before capitalism was around. There has been exploitation for centuries (feudalism anyone?), mass media brainwashing (Roman Catholic Church, Soviet propaganda). These are not new things, why blame them on capitalism?
One word that is no longer heard nowadays is "peasant." Imagine yourself 500 years ago. What are the chances you'd be of nobility? Not very high. Chances are, you'd be a peasant. You'd probably be working on a family farm, or possibly apprenticed to a blacksmith or something like that. Where has capitalism gotten us? We have been able to break away from this class subordination and do what we want to do.
Admittedly, I was once a bit of a socialist. Back when I was in school I was all for the whole lower tuition thing, better public transit, better socialized medicine, yadda yadda yadda. As one of my economics professors once said to me, "I was a socialist when I was your age, but fortunately I got over that pretty quick. It's funny how your opinion changes once you become a tax-payer." Once you get out into the real world and have a decent salary (not that difficult to obtain) all these things like student loans don't really bother you nearly as much. In fact, the whining about "the burden of debt" tends to get more annoying than anything else. I remember a demonstration downtown Montreal about how "education is a right." Yeah sure, that's fine, but look at it this way. University graduates make a fair bit more than the average person. Suppose you get $20k of debt at about 7% interest rate. If you pay back around $500 a month, it'll probably only take you about 3 years to pay it all back. That's less time than it took you to accumulate that debt. So how is it a burden?
A lot of these protesters tend to attribute certain things to a capitalist society. Things like poverty, exploitation, mass media brainwashing, things like that. It seems like they haven't really studied their history very much. Poverty has been around since the ability to gain more than another person has been around. There have been beggars for thousands of years (they talk about beggars in the bible), long before capitalism was around. There has been exploitation for centuries (feudalism anyone?), mass media brainwashing (Roman Catholic Church, Soviet propaganda). These are not new things, why blame them on capitalism?
One word that is no longer heard nowadays is "peasant." Imagine yourself 500 years ago. What are the chances you'd be of nobility? Not very high. Chances are, you'd be a peasant. You'd probably be working on a family farm, or possibly apprenticed to a blacksmith or something like that. Where has capitalism gotten us? We have been able to break away from this class subordination and do what we want to do.
Apr 4, 2008
Rhythmbox and my iPod
Rhythmbox is the default music player on Ubuntu. I've heard wonderful things about Amarok, however I still have yet to try it out. Rhythmbox is great, even makes me not miss Winamp so much anymore. It does all the normal stuff, like play my music, let me search through the library, sort by various things like artist, album, etc. It even keeps track of how many times I play a particular song. Shows which music on my list I actually listen to.
So I finally caved and bought an iPod not too long ago. I dislike Apple nearly as much as Microsoft, but I figured I'd give it a shot. I plug in the iPod and...nothing happens. Doesn't detect it or anything. So I do a quick Google search for "ubuntu ipod" which brings me to a page that says the iPod must first be formatted before I use it. Ok then, I reboot into Windows, download iTunes, and format the thing. Cool, so Windows now sees it. I reboot into Ubuntu, and what happens? Something! Rhythmbox detects it and pops it up on the side with all the playlists and what-not that I can dump stuff into. So I can drag and drop music onto my iPod now.
So hooray, I can mindlessly stare out the window with white earbuds in my ears. Speaking of which, I wonder if my huge headphones will work with the iPod, I like those better.
So I finally caved and bought an iPod not too long ago. I dislike Apple nearly as much as Microsoft, but I figured I'd give it a shot. I plug in the iPod and...nothing happens. Doesn't detect it or anything. So I do a quick Google search for "ubuntu ipod" which brings me to a page that says the iPod must first be formatted before I use it. Ok then, I reboot into Windows, download iTunes, and format the thing. Cool, so Windows now sees it. I reboot into Ubuntu, and what happens? Something! Rhythmbox detects it and pops it up on the side with all the playlists and what-not that I can dump stuff into. So I can drag and drop music onto my iPod now.
So hooray, I can mindlessly stare out the window with white earbuds in my ears. Speaking of which, I wonder if my huge headphones will work with the iPod, I like those better.
Apr 3, 2008
Let's Get Parallel
I think it's time we start moving toward a more parallel style of programming. I'm not referring to academia (which has been working on the parallel problem for decades) or the educated individuals who study things like Lisp or Erlang. I'm speaking to the other 80% of programmers who are embedded in a Java/PHP world where parallelism is unheard of. OK, Java has threads, and a rather good threading model to boot, especially with that nice little synchronized keyword.
However, the threading model itself is flawed. When working with shared mutable values, there are huge issues when it comes to parallelism. First, we have race conditions. So we create things like mutexes to prevent race conditions. Then, we have deadlocks. So we have things to fix deadlocks, leading to livelocks. It seems like no matter how many times we fix something, new problems crop up.
Functional languages, having no mutable values - unless of course you're programming in a functional language with an imperative accent and use set! - do not have this problem. They are inherently parallelizable. However, functional languages confuse a lot of people, so they aren't the best for business. How much easier is it to find someone who can program in Java or PHP than in Lisp or Haskell? Yikes.
The most promising of what I've seen is the actor model. This is sorta like object-oriented programming, except when one actor makes a method call (called sending a message in actor-speak) the caller doesn't block. The method is sent out and then the actor continues what it was doing. This is similar to programming as part of a team using an instant messenger, where each programmer is working independently and when they need to talk to another programmer, they send them a message.
One cool thing about the actor model is that it is pretty easy to scale. You could put all the actors on one machine, or across several machines. If the language or platform or whatever that you're using supports it, you could have network transparency from the programmer perspective. I actually worked on a project on this called RTSync that used an actor-synchronizer model where there were synchronizers included that managed timing among the actors, thus allowing for real-time programming with timing constraints and what-not.
Why should we be reconsidering our parallel programming? Because computers are going parallel. Now there are dual-cores, I'll bet in a few years we'll have quad-cores in people's houses, maybe oct-cores (is that a word?). So I can imagine that in 10 years if you don't have some good parallel programming experience, you're not going to be a very marketable programmer. So get on it.
However, the threading model itself is flawed. When working with shared mutable values, there are huge issues when it comes to parallelism. First, we have race conditions. So we create things like mutexes to prevent race conditions. Then, we have deadlocks. So we have things to fix deadlocks, leading to livelocks. It seems like no matter how many times we fix something, new problems crop up.
Functional languages, having no mutable values - unless of course you're programming in a functional language with an imperative accent and use set! - do not have this problem. They are inherently parallelizable. However, functional languages confuse a lot of people, so they aren't the best for business. How much easier is it to find someone who can program in Java or PHP than in Lisp or Haskell? Yikes.
The most promising of what I've seen is the actor model. This is sorta like object-oriented programming, except when one actor makes a method call (called sending a message in actor-speak) the caller doesn't block. The method is sent out and then the actor continues what it was doing. This is similar to programming as part of a team using an instant messenger, where each programmer is working independently and when they need to talk to another programmer, they send them a message.
One cool thing about the actor model is that it is pretty easy to scale. You could put all the actors on one machine, or across several machines. If the language or platform or whatever that you're using supports it, you could have network transparency from the programmer perspective. I actually worked on a project on this called RTSync that used an actor-synchronizer model where there were synchronizers included that managed timing among the actors, thus allowing for real-time programming with timing constraints and what-not.
Why should we be reconsidering our parallel programming? Because computers are going parallel. Now there are dual-cores, I'll bet in a few years we'll have quad-cores in people's houses, maybe oct-cores (is that a word?). So I can imagine that in 10 years if you don't have some good parallel programming experience, you're not going to be a very marketable programmer. So get on it.
Apr 2, 2008
Why Windows has viruses and Ubuntu (or another non-Windows platform) doesn't
The most obvious answer to this question can be summed up by a picture:

This is a pie chart of OS market shares, from Google Analytics. This comes from a fairly popular website, so the percentages are fairly accurate. The blue section is Windows. Green is Mac. That little orange slice is Linux (Ubuntu is a flavour of Linux designed to be easy for users). The rest is random other things like Playstation 3, iPhone, etc.
This is enough to convince most people why Windows has viruses. Many Linux advocates argue that the viruses to users ratio for Linux is much lower (by much lower I mean much much much lower), but this doesn't mean anything. Why would a virus maker make a virus for Linux when he/she could make one for Windows instead, and have a much higher target market?
Now for a little thought experiment. Suppose these three platforms had equal market share. Since the target market is the same for each platform, there is no preference based on market share for virus makers. So put yourself in the shoes of a virus maker. Which platform would you write your virus for?
For Windows, there is no concept of a superuser. Most of the time, the user logged in has access to the entire system. That means so do the programs that are running, like viruses. So if I were to write a virus for Windows, this means that I can start deleting files and installing things to my heart's content. Compare this to Linux, where this is not an option, you need a root password. You could probably get the root password by having a program simulate the password request screen or some junk like that, but that's a lot of work. On top of that, in order for the virus to propagate, it would then have to install itself on other systems, meaning you'd have to get the root passwords for those ones, etc. So in order to make a virus for Linux, you have a lot more work cut out for you, just by the nature of the system. Therefore, even with equal market share, I would instead build a virus for Windows where it would actually have enough of an impact to be worth the effort.
In Windows, there is a standard set of software: Microsoft. If biology tells us anything, it says that homogeneity is a breeding ground for extinction. If a virus is able to use an exploit in Outlook to infect the system and broadcast itself, any other computer with Outlook (a large number in the Windows world) is also easily infected. Compare this to the Linux world, where there is a heterogeneous mix of software: Evolution, Thunderbird, KMail. Although a virus may be able to exploit a bug in Evolution, it may not be so successful with Thunderbird, thus decreasing the spread of the virus. Same goes for distributions, if an exploit in Ubuntu is found, it may not affect Fedora or Mandriva (or even Kubuntu).
This is not necessarily true and is completely speculation, but it is even possible that the anti-virus software companies may not be working completely in your favour. Their goal is not to keep you safe, but to make a profit. Although competition drives them to create a better product, they'll still want to have a high demand for it. This means that it is in their interests to keep viruses out there that infect systems and are able to get around their software. I've seen situations where Norton was completely oblivious to viruses that free virus scanners like Avira caught. So it is profitable for an anti-virus company to be slow on catching new viruses, or to even create new viruses to make a profit.
Since Windows is so easy to infect, the market share of Windows would have to fall so low that the virus makers wouldn't even have the incentive to use a tiny effort to create a virus for the system. Since this probably isn't happening any time soon, it looks like Windows users will just have to deal with it.
This is a pie chart of OS market shares, from Google Analytics. This comes from a fairly popular website, so the percentages are fairly accurate. The blue section is Windows. Green is Mac. That little orange slice is Linux (Ubuntu is a flavour of Linux designed to be easy for users). The rest is random other things like Playstation 3, iPhone, etc.
This is enough to convince most people why Windows has viruses. Many Linux advocates argue that the viruses to users ratio for Linux is much lower (by much lower I mean much much much lower), but this doesn't mean anything. Why would a virus maker make a virus for Linux when he/she could make one for Windows instead, and have a much higher target market?
Now for a little thought experiment. Suppose these three platforms had equal market share. Since the target market is the same for each platform, there is no preference based on market share for virus makers. So put yourself in the shoes of a virus maker. Which platform would you write your virus for?
For Windows, there is no concept of a superuser. Most of the time, the user logged in has access to the entire system. That means so do the programs that are running, like viruses. So if I were to write a virus for Windows, this means that I can start deleting files and installing things to my heart's content. Compare this to Linux, where this is not an option, you need a root password. You could probably get the root password by having a program simulate the password request screen or some junk like that, but that's a lot of work. On top of that, in order for the virus to propagate, it would then have to install itself on other systems, meaning you'd have to get the root passwords for those ones, etc. So in order to make a virus for Linux, you have a lot more work cut out for you, just by the nature of the system. Therefore, even with equal market share, I would instead build a virus for Windows where it would actually have enough of an impact to be worth the effort.
In Windows, there is a standard set of software: Microsoft. If biology tells us anything, it says that homogeneity is a breeding ground for extinction. If a virus is able to use an exploit in Outlook to infect the system and broadcast itself, any other computer with Outlook (a large number in the Windows world) is also easily infected. Compare this to the Linux world, where there is a heterogeneous mix of software: Evolution, Thunderbird, KMail. Although a virus may be able to exploit a bug in Evolution, it may not be so successful with Thunderbird, thus decreasing the spread of the virus. Same goes for distributions, if an exploit in Ubuntu is found, it may not affect Fedora or Mandriva (or even Kubuntu).
This is not necessarily true and is completely speculation, but it is even possible that the anti-virus software companies may not be working completely in your favour. Their goal is not to keep you safe, but to make a profit. Although competition drives them to create a better product, they'll still want to have a high demand for it. This means that it is in their interests to keep viruses out there that infect systems and are able to get around their software. I've seen situations where Norton was completely oblivious to viruses that free virus scanners like Avira caught. So it is profitable for an anti-virus company to be slow on catching new viruses, or to even create new viruses to make a profit.
Since Windows is so easy to infect, the market share of Windows would have to fall so low that the virus makers wouldn't even have the incentive to use a tiny effort to create a virus for the system. Since this probably isn't happening any time soon, it looks like Windows users will just have to deal with it.
Apr 1, 2008
Major security flaw in PHP found
A security flaw in PHP POST variables allows a virus to fake an upload form and submit itself to any form on a website. If the site is using PHP, the virus is able to upload and inject PHP code onto the site, with full access to whatever PHP has access to. It can then re-propagate itself to anybody using the site, which then propagates to sites that the user visits.
Read more about it here.
Read more about it here.
Subscribe to:
Posts (Atom)
