At the moment, I'm currently exploring the concept of minimalism in the design on content management systems. This concept isn't really explored at all because the design of content management systems is generally irrelevant to the user: as long as it works and their site design looks the way they intend it to, they could care less about the working internals of the content management system.

However, I disagree. I think that the way the data is stored should be elegant, and that retrieval should be as fast and use as little server resources as possible. Thus, I'm now currently working on a content management system which employs many of my minimalistic ideals so that the website that's produced is both easy to configure, and has elegant data storage, easily user-editable, as well as serving up pages that are quick to load.

Being minimalistic also has the added advantage of having less susceptibility to bugs: less lines of code generally means less area for problems to exist in.

Let me know what you think. I know that many people can't live without a user login system on their website, and flashy emoticons and the whole works, but on the other hand, surely there must be some people that simply aren't using a content management system because it offers too many features, their hosting doesn't offer the necessary features, or they simply require speed on their site, and a content management system slows the whole thing down too much.

I'm not anywhere near releasing my new CMS yet, but hopefully it's somewhat unique in its abilities and features.

It's a fact that Internet Protocol version 4, IPv4, the current protocol that the internet runs on, is old and battered. But it works. And it works well. The biggest issue with it now seems to be the shortage of addresses, with the 32 bit addressing scheme only supporting about 4.23 billion unique addresses. While techniques such as NAT seem to alleviate the problem, this is of course, only a temporary solution. Estimates seem to show the IPv4 address pool running out within 2-3 years, which doesn't give us much time to upgrade the internet to IPv6 (the vast majority of the internet is still running on IPv4). It's quite possible that there will be a day when people are unable to get onto the internet because they can no longer acquire an IPv4 address.

This is the day I'm looking forward to. It makes me excited to think about it. Here's why: IPv6 rocks. It improves and adds so many things to the internet which would otherwise be unable to be added. Without requiring techniques such as NAT, devices are now exposed directly onto the internet. Any device added to the internet can now be communicated to by any other device connected to the internet. The possibilities are endless. On the nitty-gritty details of the implementation, device autoconfiguration is simpler, there's a special version of the protocol being deployed for mobile devices, and security is more integrated into the protocol itself.

Why am I not simply looking forward to the day that my ISP starts providing IPv6 connectivity to its clients? Simply put: because they won't. They won't, unless the pressure is great, and that pressure comes with IPv4 address exhaustion. Yes, while thousands of people are scrambling to upgrade their network equipment so that it is IPv6 capable, I'm cheering every time another IPv4 address gets used up.

The two biggest bottlenecks with IPv6 adoption appear to be router manufacturers and ISPs. An alarmingly few number of routers come equipped with IPv6-capable firmware, and you'll be hard-pressed to find an ISP offering IPv6 connectivity in North America (in Europe and Asia, the situation seems to be a bit better). The only way to make these bottlenecks disappear is for the situation to get more serious.

And as a result, I'm preparing my own network for IPv6, by tunneling IPv6 over the IPv4 internet provided by my ISP to offer my entire network IPv6 addresses. This way, when it's time to make the switch, it will only involve a few commands at my gateway shell.

Down with IPv4!

Update

Well, it's been a little while since I wrote in this blog. I've been quite busy, although you might find some of the stuff that I'm doing interesting:

  • I've started a new website, tuxation.com. Well, not quite new. It was hosted on a friend's server until recently. The server was down for a few months, and now I've moved the site so that GoDaddy is hosting it. Tuxation contains Linux articles and tutorials, and (hopefully) the Linux side of this blog. I'm also working on a new layout/theme for the whole Drupal setup, complete with Google advertising and user accounts.
  • Software development has come to a screeching halt. I currently maintain a web store written in C#, as well as writing code in C for my own personal projects. The main reason I stopped programming? No hard drive space left.
  • Because I generally tend to be more productive in a Unix environment, I usually have some kind of *nix operating system installed on my hard drive. I had to redo my entire partition setup on my hard drive recently, and have been having a heck of a time finding a good *nix replacement. Previously, I used Arch Linux for most of my work, but when reinstalled again on my partition, the latest version of gcc/libgcc had some bug with building my kernel. I got ticked, tried a few other operating systems, and now I'm back in Gentoo again. It's working well so far.
  • I've finally realized that my MacBook's 60 gigabyte hard drive is a bit too small to store several operating systems and some data on top of that. So, I've purchased a 500 gigabyte 3.5" IDE hard drive and a USB/firewire hard drive enclosure from NewEgg.com.
So, expect more articles and tutorials on both this blog and on Tuxation.com, but first expect some silence while I try to catch up on everything!

Mac laptop battery saving tips

Interestingly enough, most laptop users rarely get even close to the advertised battery life on their laptops. Apple advertises 6 hours for their MacBooks; in real life use it only gets around 2-3 hours. Why this discrepancy? Part of it is due to using way too many things that you don't need. Here are some tips for gaining optimal battery life without dropping a few hundred dollars on an extra battery.

Calibrate your battery.

If you want to make your battery last as long as possible, perhaps you should try to make your battery hold as much power as possible in the first place. Apple recommends calibrating your battery once a month; you're supposed to do it even more if you don't run off your battery a lot. The process of calibrating your battery is actually quite simple: you charge up the battery, unplug it and let it sit for a few hours. Then, run down your battery until the MacBook puts itself to sleep, and finally, wait a few more hours before charging it back up again. Completing this process will ensure that your battery is charged up as full as possible.

Don't use too many applications.

Probably the first (and most obvious) thing you should do to conserve your battery consumption is to reduce the number of applications you're using at the same time. Many require loads of RAM, and if your system's RAM is all used up, it will use your hard drive as a form of virtual memory. The more this happens, the more power is used to spin up the hard drive, and the more power is used up from your precious battery. So only run the most essential applications if you wish to stretch your battery's length.

Turn off Airport.

If you're not using your built-in wireless, Airport, you should turn it off as it uses power even when not connected to any networks. If the Airport icon is on the menu bar, you can enable it from there by clicking it and choosing "Turn Airport Off" (duh). If it's not on your menubar, you'll have to open up Internet Connect (it's in your Applications folder), switch to the Airport tab, and hit the "Turn Airport Off" button.

Turn off Bluetooth.

Another thing that uses power when you're not using it, and should be turned off to preserve your battery life: Bluetooth. If it's on your menubar like Airport should have been, just click the icon, and hit "Turn Bluetooth Off". If for some reason you've disabled the menubar icon, head over to the Apple System Preferences, choose the Bluetooth preference pane, and there should be a large "Turn Bluetooth Off" button.

Turn down screen brightness.

Not much to say about this one. If you're in a darker environment, you won't need all the screen brightness that Mac laptops provide you with. Turn down the brightness with the dedicated buttons on your keyboard.

Change battery scheme to 'better battery life'.

When you stop using your laptop for a few minutes, you'll probably want your Mac to turn off the screen and hard drive to save power. Make it do so more quickly by going to your menubar, and beneath the battery icon, choose "Better Battery Life". (Again, if this isn't on your menubar, you can access it from System Preferences->Energy Saver.)

Disable dual core processing.

If you've got one of the new Intel Macs, you're probably aware of the fact that they contain Intel Core [2] Duos processors, which means that your Mac has essentially two processors inside of one. While this is a nice feature for speeding up processing tasks, the extra core consumes more power. You can save more power by disabling the second core. And while this does decrease your computing power, you probably won't even notice it if you're only running 1 or 2 applications.

Open up the System Preferences, and open up the Processor pane, Click the check box beside "CPU2" to disable it. For some strange reason, the second core is always re-enabled whenever the Mac is restarted or woken up from Sleep. So you may want to make the task of disabling the second processor core a little bit easier by hitting the "Show control in menu bar" option in the Processor pane. You can then control how many processors are enabled right from the top of your screen.

Stop using hard drive-intensive applications.

Try, whenever possible, to avoid the use of hard drive-intensive applications. A program like iTunes may seem like a relatively easy program for the computer to run, and the processor doesn't have to work very hard. However, the program requires constant disk access to play the song files, and this eats up your precious battery far quicker than you think. Something like Microsoft Word or TextEdit uses almost no battery power because it runs mainly from the RAM.

Choose a good location.

Where you decide to use your laptop also plays a small factor in determining how long your battery charge is going to last. If you look closely at the bottom of your Mac laptop, you'll notice little "feet" near the corners. These raise up the laptop to allow airflow underneath the laptop. If you use your laptop on your lap or another soft surface, beware: the bottom of the laptop is not exposed, and very little air can get underneath the machine to cool it down. When this happens, your laptop warms up, and the fan is required to stay on longer to cool everything down, using your precious battery juice. Whenever you use your Mac laptop for extended periods of time, use it on a flat surface where air can flow underneath it. It's not just saving battery power, you're also making your laptop's life a little bit longer.

FreeBSD 7.0

FreeBSD 7.0 was released last week, and while the beta's been available for quite a while now, I'm quite excited to see it finally released. It's supposed to run faster, have a better kernel, and updated software. Here's the release notes from freebsd.org:


The FreeBSD Release Engineering Team is pleased to announce the availability of FreeBSD 7.0-RELEASE. This is the first release from the 7-STABLE branch which introduces many new features along with many improvements to functionality present in the earlier branches. Some of the highlights:

* Dramatic improvements in performance and SMP scalability shown by various database and other benchmarks, in some cases showing peak performance improvements as high as 350% over FreeBSD 6.X under normal loads and 1500% at high loads. When compared with the best performing Linux kernel (2.6.22 or 2.6.24) performance is 15% better. Results are from benchmarks used to analyze and improve system performance, results with your specific work load may vary. Some of the changes that contribute to this improvement are:
o The 1:1 libthr threading model is now the default.
o Finer-grained IPC, networking, and scheduler locking.
o A major focus on optimizing the SMP architecture that was put in place during the 5.x and 6.x branches.

Some benchmarks show linear scaling up to 8 CPUs. Many workloads see a significant performance improvement with multicore systems.
* The ULE scheduler is vastly improved, providing improved performance and interactive response (the 4BSD scheduler is still the default for 7.0 but ULE may become the default for 7.1).
* Experimental support for Sun's ZFS filesystem.
* gjournal can be used to set up journaled filesystems, gvirstor can be used as a virtualized storage provider.
* Read-only support for the XFS filesystem.
* The unionfs filesystem has been fixed.
* iSCSI initiator.
* TSO and LRO support for some network drivers.
* Experimental SCTP (Stream Control Transmission Protocol) support (FreeBSD's being the reference implementation).
* Much improved wireless (802.11) support.
* Network link aggregation/trunking (lagg(4)) imported from OpenBSD.
* JIT compilation to turn BPF into native code, improving packet capture performance.
* Much improved support for embedded system development for boards based on the ARM architecture.
* jemalloc, a new and highly scalable user-level memory allocator.
* freebsd-update(8) provides officially supported binary upgrades to new releases in addition to security fixes and errata patches.
* X.Org 7.3, KDE 3.5.8, GNOME 2.20.2.
* GNU C compiler 4.2.1.
* BIND 9.4.2.

For a complete list of new features and known problems, please see the online release notes and errata list, available at:

http://www.FreeBSD.org/releases/7.0R/relnotes.html
http://www.FreeBSD.org/releases/7.0R/errata.html

For more information about FreeBSD release engineering activities, please see:

http://www.FreeBSD.org/releng/


Well, I don't really have time to write now, I've got an operating system to install.

Adding a hard drive to a Mac

No, this isn't a howto hardware-oriented tutorial for adding more hard disks to a Macintosh computer. What I'm going to cover is what to do after you've added the hard drive(s) to your computer.

Typically, Mac users run out of hard disk space, and they buy a new hard drive, format it, see it on their desktop, and start putting files on this volume instead. While there's nothing really wrong with this approach, there's a lot more useful ways to put your hard drive into use.


Since it's a Unix system, you can mount filesystems into any directory (permissions allowing). What this means is that you can virtually integrate a new hard drive into your existing filesystem, so that you won't even notice it. It's fairly simple, actually.

  1. Once you've installed your new hard drive and confirmed it's working, you need to draw up some sort of plan as to how you're going to use the disk space. This will become your partition map. To integrate extra hard drive space into your existing filesytem, the partition must be based off of an existing partition. Here are the most common directories you would want to mount from the new hard disk:
    • /Applications - where all the system's applications are stored

    • /Users - where all the userdata is stored

    • /Users/yourname/Music - where your music is stored


  2. Fire up Disk Utility from /Applications/Utilities, select the new hard disk, and go to the 'partition tab'. Now select a partition scheme that has enough partitions for you, and make sure that they're sized appropriately. You'll probably want to use Journaled HFS+ (case insensitive) as the partition types. You can also create an extra partition if you still want an extra volume on your desktop for storing "extra" files.

  3. Copy all files from the old folders into the new ones. For example, if you're mounting a new /Application folder, copy the contents of /Applications into the new partition that is going to hold the applications.

  4. Start up Terminal from /Applications/Utilities, and type the following at the prompt:
    diskutil list

    This lists all the hard drives and partitions on your system. Make sure you write down the identifier for each new partition that you created on the new hard drive, as you'll need them for the next step.

  5. Now enter the following command at the prompt:
    sudo nano /etc/fstab

    Enter your password when prompted, and then proceed with creating the fstab file. The format for every mount point you want should be:
    identifier  /mount/point hfs rw 1 0

    Create a new line in between each mount point. Replace "identifier" and "/mount/point" with the appropriate entries that you want.

  6. Now move the contents of the old folders somewhere else (in case the mounting doesn't work out). Remember, it's only the content -- for example, if you were mounting /Applications, you would have your /Applications folder empty, ready for it to be mounted when you reboot.

  7. Reboot, and all the partitions should be integrated right into your filesystem.

Useful irssi commands

I love the IRC client irssi; it's very fast, simple, and solid. Simply said, it does what I want, although a command-line application often sacrifices an easy-to-learn interface for a quick, shortcut-oriented one. While I'm not completely on either side, I do tend to like irssi's focus on fast commands.


Here are some useful commands that I use often:

  • vim ~/.irssi/config - a configuration file for irssi that quickly allows one to set up accounts on different servers, and configure command shortcuts.

  • /ig AnnoyingPerson msg ignores private messages from 'AnnoyingPerson', but you can still see their messages in channels. You can also use a wildcard '*' to block all private messages, extremely useful if you don't like getting bombarded by PMs from people you don't even know. Use /unig to reverse.

  • /wjoin #channel creates a new window in the chat interface and joins #channel in that window. You can switch between windows with Control-P and Control-N.

  • /kb nick[tab] An extremely quick way of kicking+banning a user. Type the first few letters of their nick, hit tab, and the rest of it will be autocompleted. Hitting enter will ban the user's hostname and kick them off the channel.

  • /mub - remove all bans from the channel.

  • nick[tab] Saves you the trouble of typing out a really long nickname in a chat. When used at the beginning of a line, it changes to "nick: ", assuming that you're addressing someone.

  • /t [tab] - quickly allows you to edit the channel topic. Ah, the joys of tab completion!

  • /help allows you to get help from within irssi. Use /help command for help on a specific comamnd.

New web host found!

I'm pleased to announce that I've found a new (and supposedly free) web host which will allow me to create a full-blown website. I won't disclose the domain yet, as I've got a bit of work to do in the coding of the design and such, but I will mention that it is *nix related and that I've written a number of articles for it already.


The goal of this new website is going to be simplicity. In design, I believe that simplicity is beautiful. Not that everything has to be black-and-white, but that one should use "features" sparingly to draw out important details in the content. I think I'm also going to simplify the backbone of this website so as to make less work in maintaining the whole thing, although I might possibly try to integrate various php and cgi-based applications such as wordpress, drupal, phpBB, etc. as I see fit.


In the meantime, I hope to get some rough mockups done so I can begin some serious coding and uploading over the weekend.

codepad

An interesting little website I discovered today: codepad.org. It's a basic web-based compiler that supports C, C++, D, Haskell, OCaml, Perl, Python, Ruby, Scheme, and Tcl. It also creates a permalink to the source code, allowing it to be linked to in a similar fashion to how pastebin works.

It's not that this is anything new, but I love the simplicity of this website. It has a nice syntax highlighting scheme, and no bells and whistles to trip up the user. (Kudos goes to sarehu for mentioning the website in IRC.)

One thing I find interesting is that many people tend to overcomplicate things when trying to achieve nice things like shared music from a central location. Usually people achieve this by using Rendezvous for doing a multicast DNS server, and then using something like daapd to stream the files wirelessly over a network. While there is nothing wrong with this, and indeed, be my guest if this method suits you better,


However, there's a very simple way of doing this: make a file server! It doesn't matter what operating system the server is running, so long as it can serve files in a protocol your computer can understand. I recommend using the SMB protocol, as it's the easiest and most universal (and if you're using Windows, you'll pretty much have to). Another good choice is NFS if you're running mainly *nix-based systems.


Now, for connecting. On Windows systems it should be present under Network Neighborhood, or you can just type the server's IP address/hostname into the address bar: \\192.168.0.1. On Mac OS X, hit Apple-K in the Finder to bring up the connection window, and enter your server's IP address/hostname: smb://192.168.0.1. It should then prompt you for a username/password, after which it will mount the volume onto your desktop. Or you can do it from the terminal on any other type of Unix system:

mount -t cifs //192.168.0.1/share /mnt/point

...for example.


Copy your entire iTunes folder onto the file server. Everything: configuration files, library files, everything.


Finally, In iTunes, under Preferences/settings, go to the "Advanced" tab. For "iTunes Music folder location", go to the location of the network folder that you copied the iTunes folder to, and choose "iTunes Music". Hit "okay", and voila! You now have a shared library. This has some advantages to a streaming iTunes server, most notably a shared library. This way, your library can still keep track of play count, ratings, you can easily tag songs, and add to and remove from your collection. The only thing an iTunes server would have let you do would be stream the content!

Wireless hotspots are great, but unless you don't care about your privacy, you have to be careful what information you send/transmit through the connection. I recently found out an interesting feature of ssh: being able to double as a SOCKS proxy. Provided your internet connection is fast enough, it's a very useful way to transmit secure information from anywhere in the world. Setup sshd on your computer (assuming it's accessible from the internet), and then from your remote computer, simply open a SOCKS connection like so:


ssh -D 9090 user@server.com

Note that the port (9090 in this case) can be any port you want. Then configure a SOCKS-capable browser (such as Firefox) to use this newly created proxy. Note that in many cases it won't go through the SOCKS proxy for DNS lookup (for example, on Firefox you would have to change network.proxy.socks_remote_dns from about:config to true). But for most of us, this is more than enough security on a wireless hotspot.

VMWare has interesting software, for several reasons. It has one of the best emulation technologies available to the consumer virtualization OS market, but more interesting than that is the way VMWare provides it. They have three main products: VMWare Player, VMWare Workstation, and VMWare Server.


They're meant as their names sound: VMWare Player is simply for playing virtual machines (not creating them), VMWare Workstation is for a full-featured virtualization environment on a single workstation, and finally VMWare Server is for a multiuser environment.



VMWare Player

Using logic, you can probably figure out that VMWare Player is free or nearly free. Well, it is. You can download premade "appliances" (preinstalled free operating systems on virtual disks, such as Linux) which you can use like you would use a normal operating system.


It's possible to get around this limitation by using a third party application to create virtual disks (in most cases qemu is usually used), and a .vmdk file is written up in a word processor, which become the settings of your virtual machine. Nice, although most people can see why VMWare Workstation would be more convenient in this respect.


VMWare Workstation

VMWare Workstation is the full-featured virutalization program for the end-user. You can create and edit virutal disks, settings, and a host of other features. And as you might expect, it costs money.


VMWare Server

VMWare Server, is naturally, the most full-featured of the three. Setup the server, and clients can connect, create and edit virtual machines, run them, etc. And the added benefit of it is that the server is handling all the processing for your virtual machine, which means that the speed at which you run your workstation is completely unaffected. "But how much does this cost?" you might ask. Nothing... both the server daemon and the client that connects to it are absolutely free.

It's rather interesting, when you think about it... the basic version is free, the super-full version is free, but the one smack-dab in the middle isn't. Which begs the question, why use VMWare Workstation? If you simply want a basic version and like using premade appliances, go right ahead and use VMWare Player. On the other hand, if you want a full-featured emulation environment, go ahead and install VMWare Server on your workstation. Then simply install the client, and connect to your localhost. Everything is where you would expect it to be.

There's no denying the fact that eye candy is increasing in the commercial operating system's user interface. My guess would be that if the OS looks good, it's going to sell well, although it's also interesting to note that many people go even further with their user interfaces and pimp it out until it's barely recognizable. Does this eye candy make the operating system more enjoyable? Or does it just wear off and get in the way, sort of like that "in style" wallpaper you put on your walls?

I say this as I'm going through a minimalistic phase in my life (well, at least my computer life). At the moment I'm using wmii as my primary window manager, and I'm using more and more command line applications as replacements for previously GUI-based ones.

As already stated, the average user seems to enjoy the eye candy (enough to buy an operating system almost solely based on it, in some cases), so I decided to take my question to the tech forums to see what computer geeks thought of it. Sadly, the thread didn't receive much response, but the majority of the users seemed to dislike extra eye candy and preferred a minimal interface. Some of the reasons were:


  • Affects system performance

  • UI is more difficult to use

  • Just don't need it



There weren't any reasons stating why they liked eye candy, although I did find another thread that had drifted onto this topic, and one user argued that he/she was a computer graphics person, and needed color and eye candy to spark the imagination. It would be interesting to find out whether people who are more creative-minded tend to like their operating systems more colorful, and if practical people (e.g. programmers) like a more minimalistic interface. Unfortunately I don't have the resources to conduct such research, but it was interesting to find out what I did.

I've been participating in the forums at DaniWeb for the past couple of years now. Helping people fix their computers, giving tips to programming students claiming their assignments are urgent and due within the next two or three hours. I've seen it all, from members flaming until they must have smoke pouring out of their ears, and members who are almost in tears because they can't get something to work.

What I find interesting about forums is how they work. Numerous individuals will contribute to forums, posting for the sole purpose of helping other people. I'm one of those people. I don't know what it is. So many people ask their questions rudely, ignore rules and readmes posted liberally around the forums, yet I take pleasure in helping them out. And somehow, tons of other members do, too.

When I was recently offered a moderator position at DaniWeb, I expected this enjoyment to dissolve. Despite what the younger, inexperienced members think, becoming a moderator isn't exactly a promotion. Some see it as gaining power; I see it as being given the keys to a building and being told, "Here, clean up all the crap that people leave behind in there." And that's pretty darn nearly what I'm doing now that I'm a moderator. Cleaning up after members.

And yet, I enjoy it. Just one of life's smaller mysteries, I suppose.

Usability

Usability and design is an often-discussed topic when it comes to operating systems. Zealots of a particular operating system will argue that theirs is the best, the easiest to use, the best design. Fools! If only you knew that usability can't be measured that way; that there are so many factors affecting these two "qualities" that it's difficult to know even where to begin.



First of all, what is usability? This is obviously a very subjective term, and the root cause of why there is so much dissent among even experienced users of various operating systems. For the time being, let's say that usability is inversely proportional to two things: firstly, the degree of the learning curve required to use a particular software interface, and secondly, the average amount of work required to complete a task using said software interface. These two things are also very subjective, but it will help to break things down a bit when examining operating systems.



In this article, we will examine two main roots of operating systems: Unix and Microsoft Windows. They are both extremely different, have different philosophies of how interfaces should be, and have almost created cults following them.



Unix is, and always has been designed for use in the command line. Even the directory structure is designed around command-line use, keeping short folder names to save typing. It's been designed so that all its system configuration is stored in a number of easily-editable text files distributed around the hard drive. All a user needs is a root shell and a text editor, and they can configure almost any area of a Unix system. Not to mention that these shells have been designed for remote access, allowing a user halfway around the world to do at a command prompt exactly what a user sitting a foot away from that same Unix server can do. The design of it is superb, having networking built into its core, and being able to be fully operational from a simple command prompt.



Microsoft Windows, on the other hand, has a completely different approach. While it too started with a command line known famously as MS-DOS, it was nowhere near as powerful as Unix. Doesn't anyone remember that horrid 8.3 filesystem naming scheme? Naturally, Microsoft was soon trying to get rid of it in favor of their even-more famous GUI operating system, Windows. Windows has the philosophy that the user is incapable of configuring a system through the use of text files, and that they need a nice pretty GUI to do everything for them. Instead of text files holding configuration options, Microsoft instead opted for a database containing configuration for the entire system, even third-party applications. This configuration database is known as the Windows registry. If the user wanted to configure anything, they were supposed to use the GUI tool that Microsoft provided. Forcing the user to manually edit the registry was unheard of, and only leet hackers who wanted to risk messing up their system did it. As for MS-DOS, it was still there, but Microsoft had sort of pushed it under the carpet. By Windows XP, many DOS applications refused to work anymore under the provided command prompt, and developers were expected to write GUI applications if they wanted any chance at all of getting people to use their software.



Now, before we go any further, which is the technologically superior operating system? Which seems to be more powerful? I'd say Unix is. However, here is where people go wrong: they assume that good design means that an operating system will have good usability. Not necessarily! In fact, the reason Windows is so easy to use despite its bad design is because of its bad design. By having a crappy base system like DOS beneath Windows, by having a database that the entire system depends upon, Microsoft has essentially forced software developers to create nice pretty GUIs for every piece of software they want to have a chance at selling in the market. In fact, it is safe to assume that the average Windows user has never even used a command prompt before! GUIs are clearly easier to learn than a command line interface, as people tend to learn better through the use of pictures and diagrams than through text. The goal of Unix was never really to be easy to use in the first place. Power and flexibility was the central goal, and continues to be.



In fact, it really isn't fair to compare Windows and Unix, as they're two very separate beasts, with entirely different mindsets. People just have to choose whichever operating system suits their needs the best, or in the case of me, both. Suit yourself.

I found this file kicking around on my hard drive, and thought I should at least put it out there.

This guide outlines the steps an individual must take to get FreeDOS installed and running on an Intel-based Macintosh. An interesting thing about this process is that it seems that some people believe this isn't possible;



http://os.newsforge.com/os/06/09/12/1628227.shtml?tid=16

Mac users will need to run FreeDOS inside an emulator "for the foreseeable future" due to the lack of support for the Extensible Firmware Interface, which Intel-based Macs use to boot, and which Hall says is not on the list of future features right now.



So now we're out to prove them wrong!



Before you start



Before starting, make sure that you have at least a few gigabytes of free space on your hard drive. While FreeDOS is perfectly happy with less than half a gigabyte, you'll have a much lower chance of ruining your data if you have lots of free space.



You'll need to download FreeDOS, so point your browser to http://www.freedos.org/freedos/files/, pick an iso image and a mirror, and start downloading. To burn the resulting iso image, follow these steps:


  1. Locate Disk Utility, which resides in /Applications/Utilities. Start it up.

  2. Insert a blank CD into the drive. If a window pops up asking what program you would like to open it, choose "Disk Utility" and hit OK. A blank CD should show up in Disk Utility's left pane.

  3. Choose File->Open Disk Image... from Disk Utility, and choose the iso file that you downloaded.

  4. The iso image should also appear in the left pane as well. Select it, and hit the "Burn" button from the toolbar. Hit the "Burn" button to start the burn process.



Setting up the partitions



Now you need to shrink your existing OS X partition to make room for FreeDOS. Open up Terminal (/Applications/Utilities). First, you will want to find out your disk partition scheme, so enter the following:


diskutil list




This is what should get printed out:
/dev/disk0
#: type name size identifier
0: GUID_partition_scheme *55.9 GB disk0
1: EFI 200.0 MB disk0s1
2: Apple_HFS 55.0 GB disk0s2

There's two important things here. The first is the size of Apple_HFS, in this case it's 55 gigabytes. You need to decide how much room you want to allot to FreeDOS. 1 gigabyte is more than enough, so you want to shrink the Apple_HFS partition to 54 gigabytes. Get it? The other important thing is what is to the far right of Apple_HFS, in this case disk0s2. This is the device name of your OS X partition, and you will need this in your next command. But first, quit any open applications. You don't want to risk trashing your partition, so the only application that should be open is the Terminal. If you absolutely need your web browser open to read this, it's recommended to copy+paste the command into the Terminal, but don't hit enter until you've quit your web browser. Now that you're ready, type this:

diskutil resizeVolume disk0s2 54G "MS-DOS FAT32" freedos 1G



disk0s2 refers to the device name of your OS X partition; if yours is different, replace it with the correct one. 54 is the new size of the OS X partition, G refers to gigabytes (other units include M for megabytes and B for bytes). Finally, "MS-DOS FAT32" means that you want a Windows partition, freedos is the name that you want to give the volume, and 1G means you want to use the space left over from resizing the OS X partition for the FAT32 partition (1 gigabyte). The output of the previous command should look something like the following:



Started resizing on disk disk0s2 Untitled

Verifying

Resizing Volume

Adjusting Partitions



Finished resizing on disk disk0s2 Untitled

You will need to manually reformat your new partitions.

WARNING: You must now reboot!



Naturally, you will want to reboot, so do that right now. Boot back into OS X to make sure everything is alright, then proceed with installing FreeDOS.



Installing FreeDOS



Insert the FreeDOS installation CD you made earlier into your CD drive. Reboot, holding down the 'C' key until you see the FreeDOS startup screen. For some reason the keyboard would lock up when using the arrow keys at certain points, fortunately the defaults were alright for everything. It should at a certain point ask you if you want to format the C: drive. Choose yes. If it says you need to run XFDISK first, do not continue! XFDISK only works with MBR-based partition tables, and you are currently working with a GPT/MBR hybrid partition table. You've probably done something wrong along the way.



Once FreeDOS is finished installing, the rest is easy. Reboot holding down the option key, and you should be given a choice between OS X and Windows. Choose Windows, and you'll be sent to the friendly DOS prompt.

Since I'm more of a command line person, the first thing I did after I installed Linux was setting about to installing the bittorrent client. It actually worked quite well, I got decent download speeds on most of my torrents. However, I still haven't been able to rival the speed of which Azureus downloads my torrents. I don't know, it somehow gets faster connections with peers. Unfortunately, Azureus took some work.

  • Originally, I couldn't get Azureus to download anything. I figured this was due to a configuration problem, as this same machine dual-boots, and Azureus on Mac OS X never had a problem. Eventually I solved it by writing down the port numbers Azureus on OS X used, and plugged them into Azureus on Linux. Incoming TCP and UDP ports both set to 34226.
  • It took me quite a while to figure out why Azureus gladly downloaded updates, but after restarting, failed to update. I finally figured out that this was due to directory permissions (naturally). The solution to this one is to avoid using the package manager to install Azureus in the first place. Download it from azureus.sourceforge.net, install it in your home folder or something, and Azureus will not update itself.
Once that was out of the way, Azureus once again became my favorite bittorrent client. It's a shame that there's no command line version though.

Below is the kernel configuration I used on my MacBook. It supports EFI booting, GUID partition tables (GPT), framebuffer, sound, and other random crap which I'm too tired to think of right now.

http://tinyurl.com/yorrj9


 

Copyright (c) 2007-2008 by John Altenmueller