Skip navigation

Tag Archives: Linux

Who is this article for?

This article was written for users who have large collections of music, which are sick and tired of the long load times, slow response, and horrible interfaces associated with iTunes, Windows Media Player, and the Zune Software (just to name a few of the widespread players). This article is NOT written with any sort of bias towards Apple, Microsoft, and/or any other parties, but rather from personal frustrations, experience, and findings to solve a problem encountered by myself.

A little background…

I’ve finally centralized all of my music collection onto a new D-Link DNS323 NAS in my home. No longer are the days of switching between four different machines to try and find a certain album or song. With this consolidation came a catalog consisting of over 70GB of MP3s, which amounts to approximately 17,500 songs. I’m not sure if anyone else has tried managing this amount of music in iTunes, Windows Media Player, or the Zune Software, but you end up with a hell of a mess…It’s tough or takes a while to edit multiple files at the same time to organize your collection, it takes FOREVER to load (especially over the network), and you’re locked in to a product that’s made for your mainsteam, “I don’t want to have to think, thinking is hard.” type of user that requires flashy, stupid people, waving their arms all over the place in a TV commercial.

The solution?

Amarok. This music player just kicks ass. It uses SQLLite internally, but can also use PostgreSQL or MySQL as well for its cataloging and statistics. This in-turn makes for a damn fast loading catalog and it even works fast with your catalog attached over the network! It has lots of great features, is easily extensible, and makes editing multiple files and organizing your catalog easier than before!

The problem?

It runs on Linux and is not native to Windows. I need to be running Windows XP Pro on this machine, because it’s mainly built for my gaming addiction…However, I want to use Amarok at the same time, so I decided to find the easiest way to run Amarok on top of XP…and so the trials began…

KDE on Windows…aka, crap, I can’t believe I bothered trying.

Well, I first tried the method described on the Amarok download page for Windows, which resides here. This required installing KDE on Windows…I figured this would be pretty sweet, since it would pretty much be a seemless desktop integration. Well, I got Amarok up and running in it, but it was an older version, and I couldn’t get it to catalog my music on my network share what-so-ever. The only other option would be to figure out how to compile the latest, stable, version of the code for Amarok and get that into KDE on Windows…Yeah, I’m all set with spending all that time.

andLinux…and, if you have x64 you’re screwed

Second, I decided to try a solution that uses andLinux, which is posted on the Amarok forums here. Well I can’t say that this does or doesn’t work, because low-and-behold, there is no 64-bit andLinux build, so I couldn’t test this at all.

MS Virtual PC…better, but still nothing

Third, I decided to just say screw it and install Ubuntu 8.10 into a Virtual Machine using Microsoft Virtual PC 2007. Now MS Virtual PC 2007 only supports 32-bit OS’, so I downloaded the 32-bit image of Ubuntu and gave that a go…Holy crap was the video messed up during the installer, so I pressed F6 and switched into the ‘Safe Graphics Mode’ and was able to install. Once I finally got it up and running, there were still some issues like messed up graphics during boot and no sound. So I tried all the tricks that are hanging around the net for the graphics, and that worked…Then I tried the sound-card tricks, but no go with 8.10…It just won’t see the emulated Sound Blaster 16.

VirtualBox…F**k yeah! (to the tune of DVDA’s America F**k Yeah!)

So, I searched some more, and then realized that VirtualBox is now available for Windows AND has a 64-bit version too…go figure! So at this point I decided to install VirtualBox and try out Ubuntu 8.10 in a VM through that instead. I also downloaded the 64-bit ISO of Ubuntu at this point, since there’s no point in not using my machine’s 64-bit capabilities. I fired up the VM and got an error saying that the 64-bit OS wasn’t supported (can’t remember the exact wording)…The answer to this problem? Go into the Settings of the VM and then to the Advanced tab. You’ll see a property called Enable VT-x/AMD-V, check this box off, then go to the Audio properties and select the ICH AC97 controller and the Windows DirectSound Host Driver, and you’ll be good to go.

You’ll probably still see some whacky video issues, but just disregard them for now. After installing Ubuntu, make sure you run the Update Manager (System -> Administration -> Update Manager) Once that’s done, open up a new Terminal (Applications -> Accessories -> Terminal) and type in sudo aptitude install amarok and you’re on your way to a much faster and enjoyable music-playing and cataloging experience!

One remaining thing you’ll want to do after getting your Ubuntu Guest OS up and running, is to install the Guest Additions for a more seamless experience. To do this click on the Devices menu within the window the OS is running in, then click on Install Guest Additions… This will mount a new image to cdrom0, which you’ll see appear on the desktop of the Ubuntu machine. Ignore the error about not being able to run it, and open a new Terminal (Applications -> Accessories -> Terminal) Then go to the mounted cdrom image by typing cd /media/cdrom0 Next, if you’re running 64-bit, type sudo ./VBoxLinuxAdditions-amd64.run otherwise type sudo ./VBoxLinuxAdditions-x86.run Enter your password, and then reboot when it’s done installing. Done!

One AMAZING difference I found between running Ubuntu on MS VPC vs. VirtualBox was about a 4x improvement in overall performance! It loaded 4x faster, it compiled and installed the same updates approximately that much faster, and there was no ‘visual lag’ when attempting to move the mouse around or click on a menu or button.

Other

Sound issues? Check here.

Need to mount a remote share on your NAS? Check here.

It is very important that the Development Environment a programmer uses in his daily duties is as pain free as possible. The more irritating an IDE is, the more you’ll hate all the work you do with it. I have found that Visual Studio is a big pain to work with. Since I have started using Eclipse on Linux I have seen that not all IDEs are as painful as visual studio. I am going to discuss in detail my comparison of Eclipse and Visual Studio.  Below is a detailed list of the categories I think are important in the overall experience of an IDE.

Install / Setup / Plugins

Installation may not seem like an important thing to discuss about an IDE. You are probably thinking: “Meh, I only have to do it once.” It is still a part of the overall experience, and you’ll see why I decided to discuss this momentarily.

First, I will discuss the Visual Studio install. As far as Microsoft installers go, this one is very straightforward and simple. As a matter of fact, random people talking about how awesome Visual Studio makes their lives, it’s actually a very good installer. My only gripe with it is the fact that it takes so long. Even on a high end machine it will take at least an half hour, maybe an hour. That’s only the initial install. After you’re done installing that, you then need to pull down the 400MB SP1. SP1 takes more than an hour to install, even longer if you have Team Suite. Not to mention the fact that the service pack doesn’t seem to do much. I didn’t notice any improvement over the vanilla version.

Next we’ll talk about the eclipse installer. Oh, wait, there isn’t one! If you are an Ubuntu / Debian user, (or you have a package manager like yum), you can install through your package manager. The problem with that is the repositories contain an older version and most plugins require the newest version. So, I’d recommend “installing” manually. I say “installing” because all you have to do is download a tar file and extract it. Oh yeah, the whole thing is like a 60MB download. I think Visual Studio starts at around 2GB. Once that is done, you can find all the plugins you want using the update manager (help -> software updates -> find and install). Even most third party plugins have their own update site. All you have to do is grab the URL, paste it in and bam! You can install the plugin. It is even very good at managing dependencies.

So, to summarize, the install process for Eclipse is obviously a lot quicker. Also, because everything you need for the IDE exists in one folder, you can easily back up your IDE by archiving it and throwing it on a pen drive or something. That way, if you ever manage to screw it up, all you need to do is delete your messed up folder, and paste the old one back in. Just remember to never store your source files in the Eclipse folder.

II. Performance

Performance is vastly important when it comes to an IDE. Because we developers spend so much time in the IDE, performance issues can really get under our skin. Visual Studio is absolutely dog slow. Most of the projects I work on are pretty big (the one I’m on now has about 17 projects in the solution). However, they’re not so big that you would expect anything to slow down. I worked on one solution that had 75 solutions in it, and it was absolutely unusable. Now, that solution had no business having 75 projects, I will admit that.

We use Team Foundation at work, which is okay. Just like any other Microsoft product, it leaves something to be desired, but it works. It’s actually really quick. Getting the latest version is very fast (although sometimes doesn’t actually get the latest version of the files you select, go figure). However, when everything is done downloading from the server, projects (and sometimes the solution) have to be reloaded. When many projects are updated, this can take well over a minute.

Here’s my biggest issue with Visual Studio, right here. Opening a markup file such as an .aspx or .ascx file, is retardedly slow. It can hang anywhere from 20 seconds to a minute. Absolutely unacceptable, it really is. When I’m dealing with a bunch of markup all day long, the last thing I want to do is sit around and wait while Visual Studio does god knows what “behind” the scenes. Oh yeah, again, Microsoft, what ever happened to multi-threading? Not only that, it doesn’t even show some sort of messaging to let me know it’s doing something, it just hangs. Classic Microsoft.

Now on to Eclipse. In general Eclipse is very very quick. Start up of the IDE is similar to Visual Studio I think. However, once in the IDE there’s no comparison. Eclipse is a lot faster. Loading an html file takes zero time. The WTP plugin for Eclipse even runs through all of your files and validates the HTML / JavaScript / CSS. Oh yeah, and it uses something called a background thread, fancy that. Not only that, it shows a message at the bottom with a progress bar letting you know it’s validating. This is something Eclipse does every time it’s doing anything that may interrupt you. It will tell you what it’s doing and usually give you a pretty accurate progress bar.

I admit I have seen eclipse freeze up at times, but usually it’s because I did something stupid. There are very rarely any hangs of any kind, unlike Visual Studio which hangs very predictably. So, Eclipse wins this round as well.

III. Customization

Customization is very important because, I don’t know about you guys, but I’m very picky about the way my IDE is organized. This is one category that I can’t complain about on the Visual Studio side. Visual Studio is pretty customizable. Microsoft made it easy to put your tool windows and whatnot wherever you want and dock them how you want. I like my left monitor to have only my editor window, and the right to have all of the tool windows such as Solution Explorer / Source Control browser etc. I like to have different layouts (or perspectives as they’re called in Eclipse) and Visual Studio kind of supports this, but it’s a hidden feature. There are a couple of macros that allow you to save your layouts, so you have to set up keyboard shortcuts to macros to make this work.

The one annoying thing is the “springy” tool windows. Especially if you hide a window like the errors window. Whenever there’s a parser error or warning the stupid thing springs out. This even happens when you’re TYPING in an html / aspx /ascx file. How can you validate if I’m still typing Microsoft?? Also, Visual Studio makes it easy to color your code the way you want to. It even throws in a nice import / export feature for all of your settings. And as a bonus a bunch of people have created color schemes for Visual Studio that are very good.

Eclipse is very similar in the way it handles customizing the UI. You can easily dock and move the tool windows anywhere you like. It also has built in and readily apparent support for perspectives. This means you can create a layout you like for one language, and save it, and then switch to another project and use another layout very easily. It comes with some basic built in perspectives that are good. Also, when you install new plugins a lot of them come with their own perspectives.

Eclipse also has support for importing / exporting color schemes. Which is nice, but nobody has created any color schemes (that I can find).

IV. Source Control / Team

Source control, very very important. Every developer knows this. And just as important as keeping your source uh, safe, heh, is the manner in which the source control plugin for your IDE works.

Like I said before, Team Foundation is pretty good. It’s definitely a lot better than Visual Source Safe. I guess I shouldn’t say pretty good, I should say better than Source Safe. But, I think a file share is almost better than Source Safe, so… The biggest problem with TFS is the way it handles workspaces / getting latest. I don’t know why this happens, but sometimes you get latest version, and it skips files or something. Because someone will fix something, I’ll get the latest source on the entire solution, and it doesn’t really get the new file. I have to do “Get specific version” and force a get on all files. I don’t understand why this happens, it’s so simple, download the mfing file. Also, in TFS there is no easy way to find a changeset. You have to go to “Get specific version” pick by change set then click find. Once you do that there’s a great search tool, but it’s just so annoying to get to.

I almost forgot about the worst part of TFS, conflict management. If you can call it that. A coworker literally showed me a conflict TFS complained about today where he had added a newline before an ending curly brace and TFS didn’t know what to do. Simply stunning. Conflicts are seemingly random, some things it knows how to merge perfectly, others it just runs away screaming. “WHAT DO I DO??? YOU ADDED A SPACE ON A LINE SOMEONE ELSE CHANGED!!!!!!” Seriously, I don’t know how they managed to make such a terrible conflict management system.

The rest of Team Foundation is okay. It’s pretty straightforward to add and manage tasks / bugs. There are a few quirks (the worst being this one). For the most part it works really well. It deals with links very oddly. When you click a link it launches IE inside of Visual Studio, regardless of your default browser setting. When you try and select a link to copy it, it opens in IE inside of Visual Studio, awesome.

Again, Eclipse wins. I use the Subclipse plugin, which is a plugin for Subversion. Subversion is very good, it’s fast, it’s simple it’s free. It can do everything Team Foundation source control can do it does it better. It’s really easy to get a project and to add a project to the repository. You can deal with multiple repositories at a time (unlike TFS). When you to an update (get latest in M$ speak) it actually gets the latest version. There’s an on the fly conflict view that you can have a look at that shows you where differences are between your file versions and the servers (TFS has nothing like this, and it’s very handy). I have never seen a conflict in Subversion while using Subclipse, I’m sure they happen, but the project I’m working on only has two active developers at the moment. So, I can’t really tell you how good or bad Subversion / Subclipse is at dealing with conflicts, but the diff tool is very good!

V. Integration

Well, Visual Studio’s section on this is pretty simple. If it isn’t Microsoft, it’s not in Visual Studio. Obviously, everything you do in Visual Studio involves .NET, or SQL Server, or MS C++.

This is where Eclipse really shines. I have used plugins for C++, the Web (html, css, JavaScript, DOJO and more), Python and PHP. They are all very good, easy to install, and easy to use. Check it out, you can even get a C# plugin for eclipse. Add another win for Eclipse.

VI. Conclusion

Well, there you have it. Eclipse is the winner. In pretty much every area I can think of, Eclipse beats out Visual Studio. If you’re doing .NET you’re pretty much stuck with Visual Studio. If you can settle for Mono, Monodevelop has come a long way. I am actually trying to get away from .NET and do some open source work since I have started to use Linux so much. It’s nice to build applications that run on more than one OS. Also, I do a lot of web work and I have discovered that ASP.NET definitely isn’t the best tool for the job. Yes, C# is probably just about the easiest language there is (Visual Basic doesn’t count, it’s not a REAL language), and the .NET Framework is very well organized, but even still there are a million ways to accomplish your programming goals. As far as development environments go, Visual Studio is definitely not the best.