ZFS Build Checklist

I’ve decided to replace the Windows Home Server Vail server with something capable of handling newer builds of ZFS and the inherent deduploication.

Here’s a quick kit list and build diary I’ll try to keep up-to-date as I go along.

Kit:

  • Dell Perc6i – this is essentially a port multiplier. I scored it from eBay on the cheap, though it was delivered from Israel, took awhile, and had neither cables nor mounting bracket.
  • OCZ RevoDrive 120GB – Though the RAID controller on this card is not supported in Linux/Solaris, the drives show up as two separate devices as long as you make sure to put it in the right PCIe slot. That means it’s perfect for both ZIL (log) and L2ARC (cache).
  • 2x Intel 80GB X25-M SSDs – these will house the virtual machine files to be deduped. Very reliable drives, and though they might not be the fastest in terms of writes, the speeds are relatively constant which is quite handy compared to solutions that attempt compression like SandForce controllers. ZFS will take care of that, thanks.
  • (IN TRANSIT) 2x Dual Port 1gbit Intel PCIe NICs – I’ll use these for the direct connection to the virtual machine host. Currently one link is used, but when reading from the SSD drives the line is saturated.
  • (IN TRANSIT) 32 Pin SAS Controller To 4x SATA HDD Serial Cable Cord – This is needed to plug in 8 drives to the LSI controller.
  • 5x 1.5TB Seagate hard drives – These will be the bread-and-butter storage running in RAID-Z2 (similar to RAID 6).
  • 3x 3TB Seagate hard drives – These might simply be a large headache, but the plan was to have an extra 3TB RAID-Z2 for backups in another machine. Unfortunately there seem to be issues with drives that are 4k presenting themselves as 512b. I may be able to get around this by hacking or waiting as they become more popular. For now 2 of them are in software RAID1 on a Windows 7 host, and the other remains in the external USB 3 case and is used as a backup drive.
  • NetGear GS108T Switch – A cheap VLAN-capable switch should I decide to use more than 2 bonded ports (I doubt it), currently running the lab.

Design Useable Applications

I’ve been reading the IndieHIG (Independent Human Interface Guidelines) a lot lately, being a fan of Apple’s original HIG, and (to a lesser extent) the Sun Java HIG as well.

While it’s great that they are taking on the Macintosh apps that are not aligning to standards, they don’t really apply anywhere else at all, and that’s a real shame. What the venerable Apple HIG really had going for it was that it could be applied anywhere, and that’s why it was so popular.

I really think the new HIGs to be watching are those from Gnome HIG and KDE HIG as more app development experts are involved and the rules can be applied to all types of applications, and in many environments.

But hey, keep up the good work IndieHIG – just change your name to something more suitable like Indie Apple HIG.

Make Prototype.js TINY – Keep Compatibility

Prototype.js is a very popular AJAX framework used when building dynamic websites. You will find Prototype in most Ruby on Rails projects as it is included by default, and for good reason; Prototype.js is a great library that includes a lot of functionality.

Unfortunately it is rather large in size, weighing in at roughly 50KB.

Although many have managed to reduce the file size of Prototype by paring down the code and gzipping the file, we’re going to use an additional tool to approach the problem, one from the Mozilla foundation that appears to work very well – Rhino.

(Oh, in the interest of full disclosure, I am a Java fanboy, having studied at a university that got a lot of Sun funding back in the day. I hope you can see past that and check out this Javascipt hack, I really do.)

An informative quote from the Mozilla page for the Rhino project goes like this:

“Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.”

Alright then, so what you have is a Java bytecode version of Javascript that will work in most browsers.

Sounds interesting, let’s see what we can do with Protoype.js!

I decided early on to use a Rhino tool that I found on the Dojo site that allows me to compile Javascript and make it Rhino compatible. The page give you a brief walkthrough and some examples on how to use the tool, so I won’t need to cover that here in detail.

So we compile our Prototype Javascript file, let’s see what our results are then, shall we?

Before: 47445

After Rhino: 32716

After Rhino and gzip: 9454

So it’s at about 9KB now!

In order to utilize the new file, upload it to the directory that houses your original Prototype javascript file, then any instances of prototype.js in your code to prototype.jgz (zipped javascript).

You’ll also want to change your .htaccess file so that you handle the new script properly by typing pico (or nano or vi or what-have you) .htaccess:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
RewriteCond %{HTTP:Accept-Encoding} !gzip
RewriteRule (.*)\.jgz$ $1\.js [L]

AddType "text/javascript;charset=UTF-8" .jgz
AddEncoding gzip .jgz

You'll notice here that we're doing user agent detection for Safari. When I did my testing it seemed to be spotty, so what we're doing is falling back to javascript if we see that the user is using Safari. We're still compatible, and the code works everywhere else.

Parallels for Mac to support Vista and Leopard

I’ve been using Parallels Workstation on my beefy Windows test host alongside VMWare Server and Windows Virtual Server. Parallels, though a relatively new piece of software, is remarkably good.

Recently I received an email about the new Apple Mac version which adds a lot of features that have me very excited. I have been debating a MacBook Pro purchase, and this announcement just may be the tipping point.

So let’s hear them out on this spam, and have a look at why I’m so excited.

Big features to mention:

  • Support for new quad-processor Mac Pro towers outfitted with up to 3.5GB of RAM
  • This addition means that Parallels Desktop for Mac is now compatible with all Intel-powered Apple computers, which in addition to the Mac Pro includes the MacBook, MacBook Pro, iMac, and Mac Mini!
  • Compatibility with developer build of Mac OS X 10.5, code-named “Leopard”
  • Experimental support for Windows Vista

Bugs Fixed:

  • Solaris guest OS no longer hangs after suspend/resume
  • An improved Parallels Tools package
  • Full support for OpenBSD 3.8 as a guest operating system
  • G4U hard disk cloning tool now works in virtual machines

The new Parallels release candidate adds many exciting features including (but not limited to):

  • USB improvements — easily use multi interfaced and isochronous USB devices (including Windows Mobile 2005 and webcams)
  • Mac OS X performance improvements — optimize Mac OS X or guest OS performance by switching off the Mac cache function
  • Graphic performance improvements — enjoy faster, smoother video playback
  • Keyboard support improvements — use all of the keys on your Mac keyboard, such as the eject CD button, right-left and Shift/Ctrl/Alt (option)/Windows keys, in any virtual machine
  • Unicode path support improvements — name files and paths in national languages
  • Shared folders performance improvements — open folders and files faster, and transfer data across OSes with almost zero lag

read more at www.badcreditmobiles.net

Make A Solaris 10 DVD Image On Windows

Firstly, grab all of the image files from Sun

You’ll need a Sun ID, and you don’t need to use the Java download helper, but if you’re on a slow connection it will certainly help (if anything, it helps by queuing your downloads).

Once all of the files have been downloaded, you will need to extract them. I use WinRAR to do this, but the choice is yours.

Navigate to the folder you have downloaded the files to. Select all of the files, either by dragging a selection box, or by ctrl-clicking, or shift-clicking. Right-click, then click on “extract files here”. Wait a while (this is a full DVD image).

Once this process has completed we will need to concatenate the files together.

The next step is not required, but I find it will help with everyday computing as well so I have included it.

You’ll need to somehow run a command in the folder that you have all of the Solaris files in. I use the Microsoft PowerToy to do that. Download and install it.

(Or you can use many other ways to do the same thing if you wish – the choice is yours)

Then find the folder you have downloaded the files to and right-click it. You will be offered the option to “Run Program” from the context menu. Click that button and paste the following into the resulting window.

copy /b
"sol-10-u1-ga-x86-dvd-iso-a"
+"sol-10-u1-ga-x86-dvd-iso-b"
+"sol-10-u1-ga-x86-dvd-iso-c"
+"sol-10-u1-ga-x86-dvd-iso-d"
+"sol-10-u1-ga-x86-dvd-iso-e"
sol-10-GA-x86-dvd.iso

you’ll see (if your files are on the drive “D” and you use Windows XP):

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\sol-10-u1-ga-x86-dvd-iso-a
D:\sol-10-u1-ga-x86-dvd-iso-b
D:\sol-10-u1-ga-x86-dvd-iso-c
D:\sol-10-u1-ga-x86-dvd-iso-d
D:\sol-10-u1-ga-x86-dvd-iso-e
1 file(s) copied.

Voila! You can now burn the image using free software like IMGBurn, or commercial such as Nero, Roxio EasyCD, or Cheetah.