Dec 27, 2007

Love: Speed

One thing I've noticed about Ubuntu (or Linux in general) is that it is much faster than Windows. XP might run faster when it is first installed, but for the amount of junk that I have installed on my Ubuntu partition, that is not surprising (including Apache/MySQL for web development). Vista however, is a whole new story. I haven't tried it on my machine, but I tested it out for a while on a machine similar to mine and wow, is it ever slow! It doesn't even have Aero enabled. I'll bet Compiz Fusion will run no problem. Anyway its slow to open up Firefox, it's slow to run messenger, and I tried to install something but it wouldn't let me since I wasn't an admin. Could I at least install it to my local folder? It seems like a rather weak security construct, like they pulled the solution out of their ass. Ubuntu runs faster on the Live CD! God damn. I heart the relative speed of Ubuntu.

Dec 21, 2007

Hate: The fragility of Linux

Linux is very reliable...provided you don't touch it. It's like a card tower. Once built up (and it takes a while), it's great, but the slightest touch will knock it all down. Such is the case with Linux. You accidentally mess something up in a config file, and there goes your system. Fortunately it's usually fixable, depending on if you have anything to do in the next few days and have another computer handy for forum-searching or another Linux geek around to help you. Failing these, Ubuntu allows you to use the LiveCD to screw around. But again this requires you to know what you're doing (if I had known what I was doing though, I probably wouldn't have been in this situation in the first place!). In contrast, Windows (and probably Mac too, but I haven't used Macs enough to know) generally take a lot of work to bring down the system. Unless you're an idiot and open the "is this a picture of you?" MSN messages or use IE6 to browse porn sites, in which case the seventeen million viruses that you just picked up will bring your system down. However for you to sit there yourself and bring it down, you have to know what you're doing. Funny how in order to fix things under Linux you need to know what you're doing, but you need to know what you're doing under Windows in order to break things.

Dec 10, 2007

Hate: Linux Drivers

This is not specific to Ubuntu, but since Ubuntu is based off Linux, it gets the flak too. Ubuntu does provide a little thing that gives hardware information, but unfortunately it's a bitch to navigate, and when you finally find the device you're looking for, it probably won't have the information you're looking for (like what driver the device is using).

One of the golden rules I've learned of Linux is: if it's only semi-broken (working by Linux-geek standards) then don't try to fix it, you'll only make it more broken. Today I tried to fix my sound. The surround sound and everything works already, but I want to get the headphone jack at the front of the tower working. Even better, it would mute the speakers while the headphones are plugged in. I haven't tested it under Windows yet, so I don't know if it's a hardware thing or not. Anyway, I found a nice post on Ubuntu Forums that apparently made it work. So I followed what it said, but ended up borking the entire sound system. The system didn't even detect my sound card anymore (weird, since it detected it when I put in the LiveCD). Oh well. I eventually had to reinstall the drivers by hand from the alsa source - not cool. This got me back to square one, with the sound actually working but no headphone support. I've decided not to touch anything anymore. I think it's funny that Ubuntu works so much on next-to-useless things like Tracker and Compiz Fusion but when it comes to important things like device management or office software, it is sorely lacking. Times like these make me miss Windows.

Dec 9, 2007

Love: Kate

No, Kate is not a girl. Kate is a text editor. It comes with KDE by default, but unfortunately not with GNOME (probably because it is a KDE program). I've noticed that I really prefer the set of KDE apps to a lot of their GNOME equivalents. Kolourpaint is much better than gPaint, KDevelop is better than Anjuta, and I like KPDF as the default PDF file viewer. Unfortunately I don't like the amount of options given by KDE, so GNOME stays. I do think though that KDE is better for beginners, as it looks nicer and I think it is easier to use. GNOME has a bit of a boring look to it.

So now to Kate. Why is it awesome? It just is. There is syntax highlighting, intelligent indenting and support for a lot more languages than with Gedit (like bison grammars). It keeps all your open documents in a vertical, hideable list on the side. If I have over 20 documents open, the clutter is about the same as if I have one document open. With Gedit for example, I can have about 5 documents open before I have too many tabs to fit on the screen. With a vertical bar, I can just click the one I want to switch to.

Kate lets you configure it more. I don't like the default shortcuts for changing the current document, so I put it to the way Firefox switches tabs: Ctrl+Tab and Ctrl+Shift+Tab. Hooray! Much easier than what was there before. There are also lots of plugins out there, so I have things like code-folding and bracket-matching. Awesome. What finally takes the cake is that the highlighting schemes and all that are shared between KDE apps. So KDevelop and Quanta will have my code look the same as Kate does. That way if I have a tiny change to make, I can just open Kate instead of an IDE and that takes a lot less time.

Nov 30, 2007

Hate: Open Source Zealots

Definition: Open Source Zealot - (n). One who supports open-source software (OSS) religiously. Will refuse to use software unless it is open-source. Has many insults and assumptions about closed-source software.

Personally, I think that these guys are one of the things that hold Ubuntu back. They demand that everything be open-source on Linux, and then wonder why many hardware manufacturers do not make drivers for it. And when the manufacturers actually do make drivers for it, the OSZs call it "buggy closed-source software." Last I checked, the open-source equivalents are generally buggier, or less functional. Compare ATIs closed-source drivers to the open-source ones. Proprietary: probably won't support your hardware, but very functional when it does. Open-source: 2D graphics only, no 3D hardware support (so effectively the same).

The Ubuntu developers are aware that the proprietary drivers are better, but they can't have them enabled by default or they will be demonized by the open-source zealots. Instead, they have to label them as "Restricted" and specifically ask the user if they want to install them. If average Joe uses Ubuntu (it is important to note that Joe does not know anything about open-source, nor does he care) and sees this little pop-up that says "Restricted drivers..." he will think it's a bad thing like a virus and panic. "This whole new operating system is already scary enough and now it's telling me that I have restrictions!" Gobuntu should be the only one that differentiates between closed and open source, the other versions of Ubuntu should by default have closed-source enabled and if the open-source zealots want to disable it, they can by all means do it.

The one thing that open-source zealots really do not understand is that the computer market (probably more than most markets) is governed by economics. Economics dictates that firms are rational, profit-maximizing firms (with exceptions of course). The majority of firms are in the business to make money. They can't make money off of open-source software, so why would they make their software open-source? The costs of making the software open-source by far outweighs they cost of making it closed-source and charging for it (the cost here is that they have to take flak from open-source zealots). Also, the money that comes in from sales can be used to pay lots programmers to work full-time and even overtime. Large teams of programmers working 40+ hours a week and not having to work elsewhere to earn a living can get a lot more done than one or two hobbyists programming in their spare time on open-source stuff. In the days when Richard Stallman first started the Free Software Foundation, most pieces of software could be made by under five people in six months to two years. How many man hours went into designing Visual Studio, or Oblivion? These could not have been done in a reasonable amount of time under an open-source license. On a side note, one should observe that Vista took 5 years to come out not because the programmers were not productive, but due to the fact that Microsoft has the desktop operating system market in a choke hold and has no pressure to release the software on time.

Nov 27, 2007

Love/Hate: aMSN

aMSN is an open-source MSN client written in Tcl/Tk. It is probably the best MSN client I've found for Linux, which is one reason why I love it (love it because there is nothing better, awesome). I also love it because it is more customizable than regular MSN, it uses less memory than regular MSN (somehow), and it doesn't use ads.

Now for the fun part. Why does aMSN suck? The first thing that you will notice about it is the look. Before I get started, I will say that the developers have done an excellent job in this department compared to previous versions. Anyway it doesn't look so good. Being written in Tk, which is an inherently hideous library (looks like it's from a ghost of OSs past), the menus and dialogs look like garbage and do not fit into any theme. Under Windows it looks even more like garbage, with random colourings everywhere (who made checkboxes with a red background? First time you see it you think they are already checked). Also under Windows it never remembers any settings. So every time I restart the computer - which in the Windows world is a lot - I have to click the "I would like to minimize to system tray" when I click close. Nor does it remember any of the other settings like fonts or layout, so it just reverts everything to the default. Not that the default is that bad, a rare thing among open-source software, but I like a little bit of customization and I don't like having to redo my customizations every time I start the program.

For external programs like browsers, file browsers and opening files, it would be nice if aMSN figured it out for you what to do. It's easy to fix this, but annoying nonetheless (especially for non-computer-savvy people who wouldn't bother to check and would probably just dump the software). It would also be nice if the preferences dialog fit on the screen so that I could push the "Save" button without having to resize or move it. I have a fairly high resolution so there shouldn't be a problem here.

The final thing I have to say about this is it's stability. For the most part, the app works fine. However when the network goes down, the app freezes temporarily. If I click a menu, it shows the grey box after a while but with nothing on it. The repainting stops working and I don't see anything at all on the window. It also slows the rest of my system down a bit (weird on a dual-core CPU). This is slightly annoying when it happens, but the other day it happened while I was running two Java apps (Azureus in the background and Netbeans) which already used up most of the system's resources. Well that caused the entire system to lock up for about ten minutes before I pushed the reset button. This leads off-topic into the question of Linux's stability. The claim is that Linux freezes far less than Windows, however I find that Windows never freezes for me unless a driver is broken (which also happens in Linux). Linux on the other hand freezes when: a bug in GNOME or Compiz Fusion crops up (not so often with Gutsy but fairly often under Feisty), or when Java, aMSN or another one of the many programs written in a slow-ass interpreted language eats all my system's memory. I have 1GB of memory! Where does it go? Anyway this rant will be saved for another day.

Nov 23, 2007

Love/Hate: Netbeans

Although this is not related to Ubuntu, I am doing part of a contract in Netbeans and decided to describe the annoyances of it.

I used to love Netbeans. As a matter of fact, I still think it is the best Java IDE out there (although I still use Kate). Compare it to its main open-source competitor, Eclipse. My first experience with Eclipse was that it was a huge pain in the ass to do anything, and it ran slow as hell. Before I loaded a project, it would use up over 150mb of memory. After the project was loaded it was closer to 200mb. Then if I pushed the . operator for an object, my computer would freeze. So Eclipse was tossed.

So why does Netbeans suck? Well, it's written in Java. Therefore, it's clunky and slow. Compare it to Visual C++ or KDevelop which are (I'm assuming) written in C++, it has a far higher memory usage and takes longer for dialogs and such to open. Not to mention that Java GUIs are pretty ugly next to the lovely GNOME themes.

The biggest pain is the editor itself. I will not get into the holy war between spaces and tabs for indents, but personally I prefer tabs. Netbeans does use tabs, but here's the interesting bit. I like my tab size at 4. So I press tab, and Netbeans inserts 4 spaces (even though I specifically said not to replace tabs with spaces). If I push tab again, it gives me a tab character and erases the 4 spaces. So if I have one line that has one indent, there are 4 spaces and the next line with two indents has no spaces and one tab. From my experience the two sides of the tab/space argument both agree that mixing the two is a bad idea, except in certain situations. So why does Netbeans do it? Anyway I figured it all out, you have to set the tab size in the main editor options and then in like 8 different places for each type of file (Java, HTML, CSS, etc.). What a mess.

There are a couple other things about Netbeans that are a pain. The GUI editor, although fantastic for Java, doesn't produce a GUI that when executed doesn't really look like it did in the editor. You have to put some space at the top to make room for the menu bar (which has different sizes on different computers), and sometimes widgets will have a different size than expected, or the text on the buttons will appear as "..." instead of what was intended. After working with Visual Basic or Visual C++, this is a big pain. Don't get me wrong, Swing is a great library (especially compared to GTK+) but it still needs a good editor that will produce consistent interfaces (Java IS cross-platform after all).