Can’t Leave Windows?

Well that’s debatable and many hard core Linux users would beg to differ.  I’ll take the middle road on this one.  If you can do I encourage you to dump Windows as your main operating system (OS).  Unlike many others I don’t advocate giving up Windows entirely as most of the world still run Windows.  When given the choice chose Linux, but when not give a choice like in most corporate settings you’ll be stuck with using Windows (at least for now).  I still keep a Windows boxes at home operational to keep up on my Windows skills.

windows-vs-macintosh-vs-linux

Why can’t there be a middle ground between the two OS’s?  You want your cake and Edith too right?  Well perhaps one of these solution will work for you.

You have 3 main choices:

  1. Keep a Windows box around

  2. Dual boot your PC

  3. Run an emulator or virtual machine

What I’ll be discussing below deals with emulators and virtual machines.  Emulators and VM’s provide functionality to emulate or install another environment from within your current environment.  What does that mean?  Well for the sake of keeping it simple, it means that you can run one operating system inside of another.

The first choice you’ll have to make is what OS will be be you base.  By base I mean what system will you run 98% of the time, Windows or Linux?  Again, I recommend Linux.  The OS you want to use that left over 2% of the time will be installed or emulated on top of your base system.  Once you have installed your base OS you must select an emulator / VM.  The emulators / VM’s I will be discussing below are WINE, Win4Lin, CoLinux, and VMWare.  The base OS you select will play a part in which of the products I discuss below you can utilize.  I use a combination of WINE and VMWare running on a base OS of Mandrakelinux 10.

So by now you are asking what do they do, how do they work, and what are their differences?

Wine

“Wine is an Open Source implementation of the Windows API on top of X and Unix.  Think of Wine as a Windows compatibility layer. Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available.”

It’s freely available with most Linux distro’s.  I have had some success with this for programs like WinZip and WinMX, but for the most part I have found that programs don’t install and or run very well.  It’s a great idea, but still a work in progress.  It probably works a lot better with older programs since the fake windows registry it sets up mimics the Win 98 registry.  This is most likely the cause of the install issues as well.

Win4Lin

“NeTraverse Win4Lin 5.0 enables Linux users to run the Windows operating system programs concurrently with their existing Linux operating system without additional hardware or the need to dual boot. This configuration dramatically improves productivity and saves you money by reducing hardware and OS license upgrade costs. “

Works with Windows 95/98/ME, but I don’t think it does 2000 or XP.  Never actually used it, but it sounds pretty good.  I have seen some decent reviews, but again I’m not interested in older Windows systems before 2000 or XP.  It’s not open source and does cost about $89 for a license.

VMware

“VMware Workstation is powerful virtual machine software for developers and system administrators who want to revolutionize software development, testing and deployment in their enterprise. Shipping for more than five years and winner of over a dozen major product awards, VMware Workstation enables software developers to develop and test the most complex networked server-class applications running on Microsoft Windows, Linux or NetWare all on a single desktop. Essential features such as virtual networking, live snapshots, drag and drop and shared folders, and PXE support make VMware Workstation the most powerful and indispensable tool for enterprise IT developers and system administrators. VMware Workstation works by enabling multiple operating systems and their applications to run concurrently on a single physical machine. These operating systems and applications are isolated in secure virtual machines that co-exist on a single piece of hardware. The VMware virtualization layer maps the physical hardware resources to the virtual machine’s resources, so each virtual machine has its own CPU, memory, disks, I/O devices, etc. Virtual machines are the full equivalent of a standard x86 machine.”

This one happens to be the most expensive one in the bunch at $189 for a license.  However, if you can afford it I feel it is the best!  I use this one the most.  You can install this on Windows or Linux.  Once installed you create separate virtual machines for each OS you would like to run.  It supports many versions of Linux, almost all versions of Windows, DOS, FreeBSD and Netware.  You simple boot your Linux or Windows PC, fire up VMWare, and put in the disk of the guest operating system you would like to install.  It will install the complete OS!  Then you simple boot the guest OS whenever you need it without having to shutdown your base OS.  You can ever share files back and forth between your guest OS and the base OS.

I have used this solution in the past.  I was running run Mandrakelinux 10 at the time and I had successfully installed Windows 2000 and XP virtual machines on top of Mandrake.  Both OS’s operated as if I was running Windows natively.  You even have the option to make them full screen.  It actually looks like you are running Windows.  Guess what?  When Windows crashes as it’s known to do, your virtual machine will most likely crash with it, but Linux contains the crash and continues to run unaffected.  You simply reboot the virtual machine.

Cooperative Linux (coLinux)

Last, but not least
we have coLinux.  This a relatively new project that is still
very much under development.  You may not have a use for it yet,
but keep an eye on it. “Cooperative Linux is the first working
free and open source method for optimally running Linux on Microsoft
Windows natively. More generally, Cooperative Linux (short-named
coLinux) is a port of the Linux kernel that allows it to run
cooperatively alongside another operating system on a single machine.
For instance, it allows one to freely run Linux on Windows 2000/XP,
without using a commercial PC virtualization software such as VMware,
in a way which is much more optimal than using any general purpose PC
virtualization software. In its current condition, it allows us to
run the KNOPPIX Japanese Edition on Windows.”

Good luck and happy emulating!

Linux Commands

For those of you familiar with UNIX making the transition to Linux is a breeze.  Those of you coming from Windows this will be quite an adjustment.  Luckily, it has gotten much easier over time.  Now with great desktop environments like KDE & Gnome the need to hit the command line to perform basic operations is minimal.   Average users who will utilize there PC for email, chatting, and browsing the net can probably skip this section as it will be more information than you need.

Now for those looking to explore the real power that Linux has to offer this is the stuff for you.  If you are coming from the Windows world the closest thing you have to compare the Linux shell with is the Windows command prompt and DOS.  Sometime things just can’t be done through a GUI or at least not done as well.  Therefore, it is often necessary to get behind the GUI interface (i.e.) Gnome, KDE, etc.  The Linux command line goes by many names (AKA: the shell, bash, , c-shell, k-shell, terminal, and/or konsole).

The most common uses of the shell for intermediate users will be launching applications, installing software, building RPM packages, etc.  I don’t profess to be an expert at the Linux shell.  I’m learning just like you.  There are so many commands you can’t possibly learn and/or retain them all.  Don’t worry about it.  You’ll find that you use the same dozen or so over and over again.  You’ll also find that Linux is so flexible that there are 10 different ways to do something,  You get to pick which way works best for you.  There are plenty of command reference sites and Linux even provides it’s own reference guides called the man and info pages.  Man meaning manual.  You can call these by typing “man” followed by the command you want to learn about (ex) man tar.

Here’s one reference site I use a lot.

Here’s a great tutorial on the use of the Linux shell / bash and the man pages.

The History of Linux

So you may be asking yourself what is Linux and/or how did it get started? Let start of with explaining what Linux is. Chances are you have probably heard of it by now, but I’ll pretend like you haven’t. Ever heard of Unix? Again, I’ll pretend like you haven’t.

I’ll start off with something I’m sure you are familiar with and then work into the unknown. Microsoft Windows is an example of an operating system. It’s the one people are most familiar with as it currently holds about 95% of the desktop PC market. They have many different version like Windows 95, 98, NT, 2000, and XP. Unix is also an operating system. It was developed around 1970 by a group of programmers working at Bell Labs. Mind you this was well before Microsoft Windows ever started. “After three decades of use, the UNIX computer operating system is still regarded as one of the most powerful, versatile, and flexible operating systems (OS) in the computer world. Its popularity is due to many factors, including its ability to run a wide variety of machines, portability to other systems, and its multi-user / multi-processing capabilities. ” (Quote taken from here)

Linux and Unix sound a lot alike don’t they? Well I assure you there’s a good reason for that. “It was 1991, and the ruthless agonies of the cold war was gradually coming to an end. There was an air of peace and tranquility that prevailed in the horizon. In the field of computing, a great future seemed to be in the offing, as powerful hardware pushed the limits of the computers beyond what anyone expected. But still, something was missing. And it was none other than the Operating Systems, where a great void seemed to have appeared. For one thing, DOS was still reigning supreme in its vast empire of personal computers. Bought by Bill Gates from a Seattle hacker for $50,000, the bare bones operating system had sneaked into every corner of the world by virtue of a clever marketing strategy. PC users had no other choice. Apple Macs were better, but with astronomical prices that nobody could afford, they remained a horizon away from the eager millions. The other dedicated camp of computing was the Unix world. But Unix itself was far more expensive. In quest of big money, the Unix vendors priced it high enough to ensure small PC users stayed away from it. The source code of Unix, once taught in universities courtesy of Bell Labs, was now cautiously guarded and not published publicly. To add to the frustration of PC users worldwide, the big players in the software market failed to provide an efficient solution to this problem. A solution seemed to appear in form of MINIX. It was written from scratch by Andrew S. Tanenbaum, a Dutch professor who wanted to teach his students the inner workings of a real operating system. As an operating system, MINIX was not a superb one. But it had the advantage that the source code was available. Anyone who happened to get the book ‘Operating System’ by Tanenbaum could get hold of the 12,000 lines of code, written in C and assembly language. For the first time, an aspiring programmer or hacker could read the source codes of the operating system, which to that time the software vendors had guarded vigorously. A superb author, Tanenbaum captivated the brightest minds of computer science with the elaborate and immaculately lively discussion of the art of creating a working operating system. Students of Computer Science all over the world poured over the book, reading through the codes to understand the very system that runs their computer. One of them was Linus Torvalds.” (Quote taken from here)

“In 1991, Linus Benedict Torvalds was a second year student of Computer Science at the University of Helsinki and a self-taught hacker. The 21 year old sandy haired soft-spoken Finn loved to tinker with the power of the computers and the limits to which the system can be pushed. But all that was lacking was an operating system that could meet the demands of the professionals. MINIX was good, but still it was simply an operating system for the students, designed as a teaching tool rather than an industry strength one.

At that time, programmers worldwide were greatly inspired by the GNU project by Richard Stallman, a software movement to provide free and quality software. Revered as a cult hero in the realm of computing, Stallman started his awesome career in the famous Artificial Intelligence Laboratory at MIT, and during the mid and late seventies, created the emacs editor. In the early eighties, commercial software companies lured away much of the brilliant programmers of the AI lab, and negotiated stringent nondisclosure agreements to protect their secrets. But Stallman had a different vision. His idea was that unlike other products, software should be free from restrictions against copying or modification in order to make better and efficient computer programs. With his famous 1983 manifesto that declared the beginnings of the GNU project, he started a movement to create and distribute software that covered his philosophy (Incidentally, the name GNU is a recursive acronym which actually stands for ‘GNU is Not Unix’). But to achieve this dream of ultimately creating a free operating system, he needed to create the tools first. So, beginning in 1984, Stallman started writing the GNU C Compiler (GCC), an amazing feat for an individual programmer. With his legendary technical wizardry, he alone outclassed entire groups of programmers from commercial software vendors in creating GCC, considered as one of the most efficient and robust compilers ever created.

By 1991, the GNU project had created quite a few open source applications. The much awaited Gnu C compiler was available by then, but there was still no operating system. Even MINIX had to be licensed. Work was going into the GNU Kernel HURD, but that was not supposed to come out for a few years. (Sidenote: HURD is still being developed to this day. Designers have changed paths several times continuing to delay it’s release.)

That was too much of a delay for Linus.” (Quote taken from here)

So to help understand this, think of the programs you use most often like Internet Explorer, chat programs, email programs, and Microsoft Office (i.e.) Word, Excel, Outlook, etc. Those are stand alone applications, all built to run on top of the Micro$oft Windows operating system. The Gnu project was helping to lay the groundwork that would eventually help to form the application side of their operating system. Their hope was that someday their applications would site on top of the GNU Kernel HURD. The major component behind any operating system is the Kernel. So what is a Kernel? Basically, it’s the mediator between the computers application software and its physical hardware. It helps to manage things like the PC’s memory and the CPU.

Linus was searching for the power of a UNIX machine in the comfort of his own home. The average user could never afford to purchase UNIX or the hardware needed to run it. Linus was determined to built such a system. He buckled down and coded away and by mid September 1991 Linux version 0.01 was released. He released the source code for his Kernel on to the Internet for others to grab and use. He though of it as a personal hobby and never thought it would amount to much. He asked for suggestions and comments on the Kernel. People latched on. Many people began hacking away at the Kernel and offering suggestions and patches Linus became the gatekeeper of the Linux Kernel source code. From that point on all the way up through to present day, Linus has decided what makes it into the official Kernel source code. Each version has become increasing faster, more stable, and offered increased support for newer types of hardware. In fact, Linux tends to require a less powerful PC that Windows to run.

It didn’t take long for people to put the two projects together. Linus had created the very thing that the GNU project was lacking. People began running the Linux Kernel with the GNU applications on top of it. Over time more and more application were being developed and support for hardware was growing. “Soon, commercial vendors moved in. Linux itself was, and is free. What the vendors did was to gather up various software applications and put them in a distributable format, more like the other operating systems with which people were more familiar. Red Hat , Debian, Mandrake, and some other companies gained substantial amount of response from the users worldwide. With the new Graphical User Interfaces (like X-windows, KDE, GNOME) the Linux distributions became very popular.” (Quote taken from here) This commercial vendors took the Linux Kernel, bundled it with GNU projects and other open source applications, added a few of there own tweaks, and released it as a complete operating system. Each distribution has it’s own claim to fame. Some claim to have rock solid security, others claim to look and run just like Windows, and some focus on user-friendliness, etc.

As a closing note it’s important that you realize that Linux is not the whole operating system. It’s simply the Kernel which helps power the operating system. Many people believe that the entire OS is Linux. Richard Stallman would prefer that everyone call Linux distributions, which bundle Gnu apps with Linux, Gnu/Linux. I would say that’s not a lot to ask from the man who gave a the Gnu Project and the Gnu General Public License (GPL) license that so many open source applications utilize.

MP3_Player

MP3 Players & Linux

This article will be a bit off my normal routine.  I usually like to try things out before I write about them, but in this case I am making an exception.  Mostly because I’m not sure when I’ll have the time to try some of this stuff out, but I thought it was interesting enough that I wanted to share with everyone now.  Anyway, this article will focus on popular MP3 players and open source programs that either work on them or with them.

MP3_Player

The Apple iPod

Below are a few projects that may interest iPod owners…

iPodLinux

First up is the iPodLinux project.  The goal of this project is to port Linux to the iPod.  Meaning you actually run Linux directly on your iPod.  The project has been successful in porting a kernel and has developed a user interface called podzilla.  It also appears a bunch on small applications have already been developed like file browsers, image viewers, games, etc.  You can find details on the applications here & some screenshots here.  It looks as if they have even had some success getting video to play on the iPod Photo.  So what versions of the iPod work?  From their site, “iPodLinux is currently safe to install on 1st, 2nd, and 3rd generation iPods. Development is currently on-going on later generations of iPod, including the fourth generation click wheel, mini, U2, Photo/Color, Nano, and Video.”

The only iPod I have is the Shuffle so I will not be trying this out for a while.  When my Dell DJ breaks down and it’s time for a new player perhaps I will buy an iPod then and try it out.  When that happens I’ll report my impressions of the project.  However, from the outside I have to say it looks promising.

Next up….. an iTunes like application

SharpMusique
Ok so the iPodLinux project is for putting Linux on your iPod, but what about something that lets you purchase music for your iPod like iTunes.  iTunes only runs on Windows and Macs so what is a Linux user to do?  Don’t fret.  That’s the gap SharpMusique tries to fill.  An application developed the by the man many have come to know as DVD Jon (the man who brought DVD copying to the masses).

SharpMusique, originally known as QTFairUse, can now be used on Linux systems.  It bypasses Apples DRM allowing iTunes bought music to be played on Linux.  The application allows users to perform the following actions with the iTunes Music Store:

  • Preview songs
  • Signup for an account
  • Buy songs and albums
  • Redownload songs that you bought with SharpMusique
  • Redeem Pepsi caps
  • Redeem gift certificates

You can find out more information about the project here.

gtkpod
Next up is something to manage your music files, sync them with your iPod, etc.  That is the goal of the gtkpod project, “gtkpod is a platform independent Graphical User Interface for Apple’s iPod using GTK2. It supports the first to fourth Generation as well as the iPod mini, iPod Photo and the iPod shuffle.”  Here are some good screenshots.

Next up is the Dell DJ…

Dell’s Digital Jukebox (Dell DJ)

There are several interesting projects involving the use of the Dell DJ with Linux.

Gnomad2
First up is Gnomad2.  “Gnomad is a GTK+ client program for the NOMAD Jukebox, using libnjb and libid3tag to handle the jukebox communications and ID3 tagging procedures.”  Not originally written for the Dell DJ, but does work since the Dell DJ is based on the player that Gnomad was created for.  This basically works like the Dell Jukebox Explorer works in Windows.  Here are a few screenshots.

DJSync
Gnomad2 is great for managing your music files, but it lacks the ability to sync up with your DJ.  That’s where this project comes into play.  DJSync allows you to sync the DJ with your local music library on Linux.

So that about wraps it up for this article.  Hopefully you have found this useful.  If you have any experience with, opinions about, or alternatives to these projects please post your comments.

jchat

jChat – YUI, Jaxer, & ActiveRecord

jchat

For those familiar with MiaCMS you’ll already know I’m a huge fan of the Yahoo! User Interface Library (YUI).  I recently finished up the JavaScript work for version 4.8 of MiaCMS.  With some free-time on my hands I figured what better way to fill it than with a new project?  So I set out to learn some new technology and see how I might mash it up with some existing skills like YUI.  The new technologies I decided to experiment with were Aptana’s Jaxer and their new ActiveRecord.js framework.

Jaxer ships with a number of basic samples, but I’ve seen quite a few people online in search of more complex examples and specifically ones that make use of the new ActiveRecord.js library.  The extended example I developed is called jChat.  jChat is fully functional chatroom application that demonstrates integration of the following web related technologies; HTML, CSS, JavaScript, MySQL, YUI, Jaxer, and Activerecord.js.

jChat’s DOM access/manipulation, event handling, and animation code makes heavy use of YUI.  The YUI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.

Jaxer is an Ajax Server that will allow us to built entire applications using JavaScript and Ajax.  The theory being that JavaScript experts can build applications without needing additional server side languages (ex) PHP.  There is nothing wrong with PHP, in fact is just so happens to be one of my favorite languages, but the important point to be made here is that Jaxer eliminates the requirement for additional server side languages.  That being said you don’t have to do away with server side languages and in some cases it might make a lot of sense to utilize Jaxer with a server side language like PHP.  Another added bonus developers get with Jaxer is code reuse.  Typically we see develops implementing similar functionality in multiple languages to handle things like data validation for example.  With Jaxer it is possible to write the JavaScript validation code once and utilize it both client and server side.  This could therefore lead to less debugging, simpler testing, and faster time to market.

ActiveRecord.js is a cross browser, cross platform, JavaScript ORM.  ActiveRecord.js makes it easy to begin working with databases in JavaScript on the client or server, with Google Gears and Chrome, Aptana Jaxer, Adobe AIR or any platform supporting the W3C HTML5 SQL Specification (currently Webkit and iPhone).  Overall I found ActiveRecord.js simple to integrate and a pleasure to use.  I found a few bugs initially (mostly just some sytanx issues preventing proper minification).  Thanks to the power of github I was able to fork it, make some modifications, and submit a pull request which they ultimately accepted and merged with the master branch.  I’ve been working on another Adobe AIR related project which I started before the first beta release of ActiveRecord.js.  It makes use of AIR’s native support for SQLite, but I’ll more than likely rewrite the database code to make use of this new library which should have the added benefit of easing application updates/database migrations down the road.

I’ve put all the source code up on github so that others can benefit from my learnings.  Chatrooms have been done a million times so jChat is less about the overall application functionality and more about the pairing of technology.  Feel free to download, learn from, and/or fork jChat on github – http://github.com/cauld/jchat/tree/master.  Comments, suggestions, and contributions welcome.

mambo

Mambo Forked, Meet MiaCMS

mambo

I am very excited to announce the release of a brand new CMS, content management system, named MiaCMS.  Regular readers know that I have been heavily involved with the Mambo CMS project for the last 3 years.  Six months ago I stepped out of my leadership role with the Mambo project partly to spend more with my family and partly because of internal issues with the project.  We’ll I’m back, but this time I’m working on a fork.  Why a fork? We felt that the policies, processes, and priorities of the official Mambo Foundation were having a negative impact on the code and the community. Innovation, creativity, and team spirit have all but been eliminated. Trolling the internal forums has become depressing and de-motivating to say the least.  Trying to push new code or even fixes to existing code into the core results in nothing except for long drawn out fights.  Version 4.6.4 should have been released ages ago and version 4.7 has been sitting in an almost beta state for months now with no activity.  Version 4.6.4 was pretty much complete when I left in January (not MiaCMS 4.6.4, but rather Mambo 4.6.4).  The major of 4.7 was written over 1 year ago and you’ve yet to see it!  Those two things along should tell you something.  While the community expands the project is collapsing from the inside out.  The very group created to protect the project is having the reverse effect.  The Foundation’s grip on the code and project is so tight everything is tied in a virtual knot.  Since I left six months ago several other key members have also split including two that had just recently assumed core team leadership, Ozgur Cem Sen and Al Warren.  Thus the fork.

So development continues on the same award winning software base that everyone has come to know and love, but now outside of the Foundation and under a new project/name.  The MiaCMS project was initiated by four individuals with profound knowledge of the Mambo CMS system. Much of the same crew that helped bring the world Mambo 4.5.3+ through 4.6.3 is now working on Mia.  The founding team includes Al Warren (alwarren), Chad Auld (cauld), Ozgur Cem Sen (ocs), and Richard Ong (arpee). Together we have held the following roles within Mambo over the years; project leader, board member, steering committee member, core team leader, quality team leader, documentation team leader, and server administration.

Those who know the project well will recognize the names listed above as what was the majority of the current core Mambo development team. Who is left to carry on Mambo development? The answer is, not many. We plan to continue down the revolutionary path we laid out for Mambo before ultimately cutting our ties to the Mambo Foundation. Just that we will be doing it as MiaCMS from this point forward. So again… this is a fork, we do give credit to Mambo for past work done, and we do aim to make MiaCMS even better (we happen to believe it already is) !  In just a few short weeks since we decided to fork tons of progress has already been made.  So enough about Mambo, it’s all about Mia now.  Please have a look at the release notes here, don’t worry there are plenty of screenshots :)  I’ve already detailed it out over on the wiki so I’d rather not do it again here.  We will be working up a new roadmap for Mia soon so stay tuned.

I assure you the decision to fork did not come easily, but we do feel it was best for the future of the code and the community.  We hope you’ll join us on this new independent adventure.  Should you chose to do so we have created a simple conversion process which will bring your Mambo 4.6 sites over to the latest MiaCMS release.  Mia On!

MOStlyCE v3.1.0.1 Released

I just finished putting the final touches on the next release of MOStlyCE, version 3.1.0.1.  The biggest change for this release was an upgrade of the TinyMCE core from 3.0.7 to the latest version available 3.1.0.1.  This brings in lots of bug fixes and better support for Opera 9.50 and the Firefox 3.  Their full changelog can be found here.

I also did some general reworking of the compression feature.  It has not been functioning properly in recent versions of Opera and/or with the new FireFox 3 release.  It would appear I’ve got it working again for both Opera and Firefox.  Editor compression is important because it reduces the overall size of the editor by up to 75% and reduces the number of HTTP requests required to load the editor.  As always you can find the latest version on the projects SourceForge page.  Upgrade instructions can be found here.

This is a reminder that this release is for MiaCMS only.  The final release of MOStlyCE for Mambo was version 3.0.5 as noted in another recent post.

imia

iMia – iPhone™ Interface

imia

iMia is a web application focused on bringing a standard iPhone web interface to the MiaCMS, Mambo, and Joomla! content management systems. Yes, the iPhone does have a full web browser that is capable of displaying any site, so it is possible to use these content management systems without iMia. However, the experience is often less than appealing since users must constantly zoom in, zoom out, pinch to expand and contract, etc. As with most web sites and/or applications, these content management systems were coded with the desktop browser in mind. This is were iMia comes in…

iMia brings a simple web interface to the MiaCMS, Mambo, and Joomla! content management systems for iPhone users. The application is designed in accordance with the recommended iPhone interface design guidelines laid out by Apple. iMia makes use of the iui project’s fabulous efforts in this area.

Learn more on the product page here – http://wiki.brilaps.com/wikka.php?wakka=iMia.

screenshot000

Digital Content Your Way (Boxee)

screenshot000

A few years back my friend and I built our own Tivo like boxes with Ubuntu and MythTV.  The process was less than simple and involved a lot of tweaking and experimentation, but the end result was actually quite nice.  Today this process has been simplified a great deal and users can grab one of many pre-built MythTV Linux distributions such as Mythbuntu.  I ran my MythTV box for a few months before I ran into a hardware issue.  I swapped out a few parts with no luck and without much time to troubleshoot it the box sat idle for over a year.

Since that time I’ve experimented with a number of services to get my digital content; DirectTV, Tivo, the Galleon Tivo Media Server, Amazon Video On Demand, BitTorrent, Usenet, iTunes, Hulu, Joost, Schmooze.TV, Netflix, etc.  Each of these methods has its own set of advantages and disadvantages.  Some are fairly nerdy and unfriendly to the average user.  Others have a cost component that may or may not be within ones budget.  One component that has always been required in my setup was digital cable (i.e.) Comcast and/or DirectTV.  These services have worked without issue, but are very costly and come overloaded with commercial advertisements.  We have used Tivo for over 6 years now to morph digital cable into tolerable on demand and commercial free content.  I do not mind advertising in the free content found on sites like Hulu, ABC, CBS, etc, but when I spend as much money as I do with my digital cable service I don’t appreciate the additional marketing.  In recent years digital cable companies have started to create their own on demand services and Tivo like interfaces.  I’ve not been impressed with a single one thus far though.

With the amount of digital content available on the Internet these days I decided it was time to have a go at eliminating digital cable from my list of services.  The current economic crisis has made this even more appealing since who wouldn’t be up for dropping a costly monthly bill or two.  There are various methods of retrieving TV shows, movies, and music on the Internet in an illegal manner, but I am focused legal methods and as I stated earlier I am ok with advertisements in otherwise free content.  So I started by laying out what my ultimate setup would feel like.  I want on demand access to TV shows (past and present), a collection of Movies (past and present), my own library of digital content (music, dvds, pictures, etc), and a streaming music service.  I want all that in an single interface that I can interact with via my remote control over my broadband Internet connection.  Lastly, I’d prefer it be something based around open source technology.

MythTV and Tivo are great products, but they piggyback on the requirement of having digital cable and so for this effort those services are out.  I’ve selected a new product called Boxee to handle my requirements, “boxee gives you a true entertainment experience to enjoy your movies, TV shows, music and photos, as well as streaming content from websites like Hulu, Netflix, ABC, CBS, Comedy Central, Last.fm, and Flickr.”  Boxee is still in an alpha state, but in reality I’ve found the product to be quite stable.  They offer downloads for the Mac OS X Leopard or Tiger (Intel only) and the Ubuntu 8.04 or 8.10 (32bit) platforms.  I setup an account, downloaded Boxee to my Apple Mac Mini, went through the simple installation process, and tied it into my various services.  I challenged the family to spend the weekend without using the DirectTV box.  We consumed all our digital content via Boxee running on our Mac Mini plugged into our big screen TV.  We’ve actually found ourselves watching more content and even exposing the kids to quite a few shows we had as children like Bewitched, I Dream of Genie, Perfect Stangers, etc.  We’ve looked through our photo albums and those of our friends hosted on flickr.  We’ve watched a number of  movies streaming from Hulu and Netflix, and listened to music streaming from Last.fm as we did some chores around the house.  We took a family poll and Boxee is a winner.

I’ll be canceling my digital cable and Tivo subscriptions today.  I have two Tivo boxes and one is a lifetime subscription so I can always bring it back online as needed.  It is pretty simple to manage the other via Tivo online as well.  I have already scaled back my Netflix service from 4 dvds at a time to 1.  This is an effort again to save money and because after 5 years we just aren’t using the service as heavily as we once did.  I am keeping Netflix mostly because I want access to their streaming service, but also because I am a big fan and want to support their efforts.  I’m a huge fan of Tivo as well, but without digital cable there just isn’t a reason to keep it right now.  In addition to recording TV I also used it to access my digital library and rent movies from Amazon, but these functions will be replaced by Boxee.  It is worth noting that Netflix and Tivo have partnered to deliver streaming movies as well, but this service is only available for TiVo® HD, TiVo® HD XL and TiVo® Series3™ DVRs.  I have two older series 2 models that work just fine outside of being able to access the Netflix service and I’d rather not purchases new ones at this point.  Another interesting option for Netflix fans is the Netflix Player by Roku.  I’ve heard good things about this one too, but again I’m not looking to purchase any new devices and I really want just one interface for everything like what Boxee provides.  Overall, I think we’ll probably save about $100 a month which I am quite pleased with.

After a successful weekend with Boxee I decided to tear apart that old MythTV machine and try to setup a Boxee Media Center for the bedroom with Ubuntu as well.  I’ll keep that for another blog post since it is less about why I’ve selected Boxee and more about how to setup Boxee with Ubuntu.  I hope you found this helpful and that you decide to give Boxee a shot in your home as well.  Enjoy!

boxbee

Setup Boxee on Ubuntu 8.10

boxbee

As I mentioned in a previous post I recently switched over to Boxee for all my digital content needs.  My initial Boxee setup was done with an Apple Mac Mini.  The installation/configuration process in that case was extremely simple.  The first Boxee Media Center worked out so well that I wanted a second one to replace digital cable and Tivo in the bedroom as well.  I have a second Mac Mini, but it is a bit older and I quickly realized it would not work with Boxee since they do not support the G4 chip.  In addition to Mac OS X boxee also supports Ubuntu 8.04 and 8.10.  So I decided to tear apart some old boxes I had laying around from past MythTV experiments and build a myself a new Boxee Media Center with Ubuntu 8.10.  The Boxee setup process for Ubuntu 8.10 was not as simple and so I wanted to document it here for the benefit of others.

Let me first talk a bit about the hardware. I want to keep this fairly generic so I will not go into great detail on most of the hardware specs. It is Linux after all and should work well with just about anything.  I am using a standard tower, a 430 watt power supply, 1.5 gigs of memory, a standard motherboard with SATA support, an AMD64 2GHz processor, a wireless G network card, an Nvidia graphics card with HDMI and S-Video out, and a 400gig SATA hard drive. The only specific piece of hardware I want to mention is the TV tuner card, a Hauppauge WinTV-PVR-150. I originally purchased this for a MythTV box where video capture was an important component. For Boxee this is less of an issue since it is not about video capture, but rather about digital media consumption. I am using it in this case because it comes with a Hauppauge remote control and IR Blaster. The Mac Mini ships with a remote control and so this is not an issue, but with Ubuntu we’ll need to configure this after market remote. I believe Boxee has support configured for the Microsoft Media Center Remote out of the box, but for those of us not using it more work is required. OK on with the setup…

1) Once your hardware is ready, start by downloading Ubuntu 8.10 and creating a CD.
2) Install Ubuntu and use the update manager to get the latest updates.
3) Use Synaptic to install the ivtv and ivtv-util drivers for the WinTV card.
4) Use Synaptic to install lirc for dealing with the remote control.
5) If you are using an Nvidia graphic card you might want to enabled Nvidia Accelerated Graphics driver under System->Administration-Hardware Drivers.
6) Prepare to install Boxee.
1. Go to System > Administration > Software Sources.
2. In Sources Software dialogue, select Third-Party Software tab, click Add,
and enter: * deb http://apt.boxee.tv intrepid main
3. After closing this dialogue you can either use Synaptic and select Boxee for download, or use a terminal window, and enter sudo apt-get install boxee.

7) If you are using the Microsoft Remote you can skip this step. If you are using the Hauppauge remote control read on. If you are using something else then you are on your own.

For the Hauppauge remote control you’ll need to do the following:
a) Replace default remote control keymap file with one more suited for this remote:
cp ~/.boxee/UserData/Lircmap.xml ~/.boxee/UserData/Lircmap.xml.org
vi ~/.boxee/UserData/Lircmap.xml

Add a new remote option to the existing remote list in this file with the contents of this thread: http://forum.boxee.tv/showthread.php?t=2765&highlight=hauppaugehttp://forum.boxee.tv/showthread.php?t=2765&highlight=hauppauge

b) Update the /etc/modules file:
echo “lirc_i2c” | sudo tee -a /etc/modules

c) Update the /etc/modprobe.d/aliases file:
sudo vi /etc/modprobe.d/aliases

– Now look for the char-major section and add the line below the right order:
alias char-major-61 lirc_i2c

d) Verify and/or update the /etc/lirc/hardware.conf file:
sudo vi /etc/lirc/hardware.conf

– Verify your setup matches the following and/or change if not:

#Chosen Remote Control
REMOTE="Hauppauge TV card"
REMOTE_MODULES="lirc_dev lirc_i2c"
REMOTE_DRIVER=""
REMOTE_DEVICE="/dev/lirc0"
REMOTE_LIRCD_CONF="hauppauge/
lircd.conf.hauppauge"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""

#Enable lircd
START_LIRCD="true"

e) Update the /etc/lirc/lircd.conf file: sudo vim /etc/lirc/lircd.conf – Add the following to the bottom of this file:

begin remote

 name hauppauge_pvr150
 bits 13
 flags RC5|CONST_LENGTH
 eps 30
 aeps 100

 one 0 0
 zero 0 0
 gap 200000
 min_repeat 4
 toggle_bit 2

 begin codes
 POWER 0x00000000000017BD
 GO 0x00000000000017BB
 TV 0x000000000000179C
 VIDEOS 0x0000000000001798
 MUSIC 0x0000000000001799
 PICTURES 0x000000000000179A
 GUIDE 0x000000000000179B
 RADIO 0x000000000000178C
 OK 0x00000000000017A5
 UP 0x0000000000001794
 LEFT 0x0000000000001796
 RIGHT 0x0000000000001797
 DOWN 0x0000000000001795
 BACK/EXIT 0x000000000000179F
 MENU 0x000000000000178D
 PREVCH 0x0000000000001792
 MUTE 0x000000000000178F
 VOL+ 0x0000000000001790
 VOL- 0x0000000000001791
 CH+ 0x00000000000017A0
 CH- 0x00000000000017A1
 RECORD 0x00000000000017B7
 STOP 0x00000000000017B6
 PLAY 0x00000000000017B5
 REW 0x00000000000017B2
 FFW 0x00000000000017B4
 REPLAY 0x00000000000017A4
 PAUSE 0x00000000000017B0
 SKIP 0x000000000000179E
 1 0x0000000000001781
 2 0x0000000000001782
 3 0x0000000000001783
 4 0x0000000000001784
 5 0x0000000000001785
 6 0x0000000000001786
 7 0x0000000000001787
 8 0x0000000000001788
 9 0x0000000000001789
 * 0x000000000000178A
 0 0x0000000000001780
 # 0x000000000000178E
 RED 0x000000000000178B
 GREEN 0x00000000000017AE
 YELLOW 0x00000000000017B8
 BLUE 0x00000000000017A9
 end codes

end remote

8) Now that should be it, but I ran into a few issues with Boxee on Ubutnu 8.10. I’ll discuss them below and perhaps they will help others with similar issues. You should try starting Boxee at this point and see if you have any issues. You can find Boxee under your Applications->Sound and Video menu. If everything seems fine you’re done. If you get the black screen of death then read on.

Troubleshooting:
After launching Boxee I received a black screen which I could not escape from. None of the normal keyboard escape methods worked and it required a hard reboot. To work around the black screen issues I took two steps.

a) Removed PulseAudio as outlined in bullet point 2 of the following article – http://www.highonsolder.com/blog/2008/11/22/boxee-ubuntu-810-setup.html

b) Downgraded the Nvidia Accelerated Graphics driver under System->Administration-Hardware Drivers from version 173 to 96. The latest driver simply would not work.

Additional Notes:
1) A good many popular multimedia codecs are not shipped with Ubuntu by default due to legal restrictions.  You can add them into your installation with the following command:
sudo apt-get install ubuntu-restricted-extras

2) The Netflix plugin is not currently available on Linux.  More on the Netlfix encoding/streaming process here – http://blog.netflix.com/2008/11/encoding-for-streaming.html.

3) If you’d like Boxee to automatically start on boot then go to System->Preferences->Sessions and add an entry for Boxee with the same command being used in the Boxee menu entry noted earlier (right click on that menu entry to determine the proper command). Reboot and verify that Boxee and lirc start on boot.

4) If you are looking for ways to pull in additional content I suggest you have a look at Bittorent, Tranmission, and Ted.

Enjoy!