2008/10/30 - computers
Operating system independence means not relying on a specific operating system to be productive and accomplish tasks quickly and efficiently. Everyone has a preferred operating system, and for a lot of us we stick to that operating system. However, when we are forced to use a different system like in the work place versus in our home, we feel like we lose a lot of control and compatibility. I am here to tell you; that is untrue. We can remain productive power users completely independent of our environment. Here I would like to discuss some software alternatives for different operating systems to meet some common needs. Here are a few scenarios to keep in mind: Dual Booting is the process of installing multiple operating systems on a single computer set up. This can be accomplished by using a file system that is compatible with both operating systems, or using completely separate partitions, an advanced boot-loader is needed to allow the user to choose at startup which operating system to boot into. In this scenario, the operating system runs on the native hardware, and only 1 operating system can be run at a time. Virtualization is making a computer emulate multiple computers. This works by having a main computer run virtualization software on the native hardware, we will call this our host. The host can now emulate the architecture of another computer by processing CPU and hardware device logic in software form instead of actual hardware. We will call these computers our clients. A virtualization solution can emulate multiple computers at the same time, meaning we can boot and run multiple operating systems in parallel.
Now let’s talk about some of the differences between operating systems.
The most obvious difference between operating systems is the graphical user interface or GUI for short. This is how an operating system looks, for example the start menu and desktop on Windows, or the Dock and Finder on a Mac. One of the hardest things for people to learn is how to use a different environment when it looks and acts completely different. But underneath it all, the environments are not very different at all. This is evident by the fact that they all have to run on the same type of CPU and hardware. There is software available that has the capability to drastically change the way Windows looks. We can make Windows look and act just like a Mac. Stardock and TweakUI are examples of this. They can apply user made themes to Windows. Some of these themes are vastly different from how Windows looks by default. Stardock has some more in depth features that includes a Dock that looks and acts like the one available in OS X. On Linux, a lot of theme functionality can be accessed using Emerald and Compiz/Fusion formerly Beryl.
A lot of functionality comes from the Dash Board available in OS X. Other operating systems like Windows and Linux can tap into this functionality as well through Google Desktop. Google Desktop enables functionality such as Quick Searches and system information right at your fingertips.
If you are a Mac or Linux user, you are probably familiar with the command line. This functionality can now be achieved on Windows. Microsoft Power Shell is software similar to the command prompt that exist on Windows by default, but is gives the user a lot more control, and it acts similar to Linux command line shells. If you are looking for a more in depth solutions, CygWin is for you. CygWin is a Windows port of a lot of UNIX functionality; maintained now by Red Hat and NetApp.
Software compatibility is, in many cases, a determining factor of what operating system to use. For example, not all systems are compatible with the advanced features of Microsoft Exchange. For accessing the Exchange online, browsers other than Internet Explorer have limited functionality; this could pose problems for Linux and Mac users. Contrary to that, some software is fully featured and available for both Windows and OS X. For example, Adobe Creative Suite has always been available for both operating systems. This still leaves a market, though rather small, in the dark. Linux desktop users are many times left out of the software circle and forced to fend for themselves. Luckily, there are Open Source community maintained software suites that can be compiled for any system. Open Office is a good example of this. Open Office supports many of the features that Microsoft Office does, but without the dependence on Windows.
Sometimes we wish to erase the line between software and the system it depends on. This can be done with cloud computing. Cloud computing is a term used to describe a solution that exists over the internet. These solutions hide the complexity of the infrastructure that supports them. Google Apps is a great example of cloud computing. It is in itself an operating system, which can be accessed and run by a web-browser. Development for the Google Apps platform is also made easier by cloud computing by abstracting the complex infrastructure into easy-to-use APIs. Remember our second scenario, Virtualization? There is a solution to becoming operating system independent that uses a similar idea called Web Desktop. Web Desktop is a method of accessing fully functional desktop environments, provided by any operating system, over the internet or local network. This relates to Virtualization by a single system used to serve out any number of desktops and environments to its clients. Many times, Web desktops are actually handled by virtual servers that can allow many connections to the same operating system but in a completely isolated user space.
Development solutions are an essential part to a Computer Scientist’s productivity. These solutions even have their own name/acronym, Integrated Development Environment or IDE. Now when it comes to cloud computing Integrated doesn’t sound like a friendly term; cloud computing tries to accomplish all the functionality without the need to be integrated with anything. Therefore, we as developers are still stuck using an operating system of a specific flavor. Fortunately, there are IDEs for every environment. Eclipse and NetBeans are cross platform IDEs built on the Java technology. Which IDE works best for you, is mostly personal preference since they all support plug-ins and extensions for expanding their functionality. If you are more of a text-based developer, TextMate is an excellent solution. Unfortunately, it is only available for Mac. However, E Text Editor is provided by a completely different company and is available for Windows. It even supports the exact same bundle files as TextMate. Now for the hard part: What about Linux? Adobe Creative Suite isn’t supported on Linux, neither is Visual Studio or TextMate. This means I can’t develop in anything .Net, and I can’t use Adobe’s unique suite of web-development tools like Dreamweaver. The only thing left to use is VIM. Fortunately, for Linux users, there is an entire community of people with this exact same problem. In addition, they can all pool together to make lots of open source software that can be accessed for free with a handy package manager. Nevertheless, it is Linux, and there is always a hard, longer path to take. Wine is an implementation of the Windows API for X, OpenGL, and UNIX. Wine can help us accomplish the overly difficult and tedious task of installing and running some Windows software on *nix. There is a lot of information available on getting Creative Suite to run on Linux, you just have to search for it.
Wine Running Photoshop
Our solution to developing .Net software on Linux is Mono. Mono is a cross platform, open source .Net development framework. It includes things like running ASP.Net on apache using the mod_mono module. They even offer and IDE for developing in .Net called MonoDevelop. Getting Things Done or GTD, is a popular method used to manage one’s time and resources to accomplish everyday tasks more efficiently. Managing tasks can be complicated but there is a lot of software available to help. On Windows, I have always been a fan of using the Microsoft Office Suite for task management. OneNote is handy software for taking notes in meetings or class. However, it can also be used for making lists of things I have to do, and organizing many list items by date or location that I have to accomplish them. OneNote can synchronize with other devices like a laptop or even my phone. It also connects to Outlook for creating appointments and sending e-mails. OmniFocus is popular GTD software for Mac. In addition Linux just takes a simple Google search to find open source software that will work just as well. You could even go a step further and implement your own cloud computing solution and use gtd-php, a web based PHP solution for Getting Things Done! Finally, one of the most important topics to becoming independent of operating systems is being able to play video games! Games are becoming more and more compatible with Windows AND Mac OS X. However, Linux users are once again left to fend for themselves. MAME is a cross platform arcade emulator. It can also emulate things like DOS for running older games. For newer games however, Cedega is a company dedicated to making games compatible with Linux. Cedega by TransGaming works closely with the Wine project, modifying some of Wine’s shortcomings in order to be compatible with newer games. They provide a full list of supported games and can guarantee they will work on your Linux system.
I hope I have convinced you that there are plenty of solutions for every use and operating system. We don’t have to be victim to operating system wars and, with a little effort, can always find alternative solutions to meet our needs. Here are some links to get you started on being independent of your OS: VMWare Make your Windows desktop look like OS X Stardock Compiz/Fusion Google Desktop Cygwin Open Office Sun Global Desktop Eclipse NetBeans TextMate E Text Editor Wine Running CS3 in Wine Mono OmniFocus gtd-php Using OneNote for GTD - via LifeHacker.com Cedega MAME