ZFS – neat system, still can’t boot into it?

About 3 weeks ago, I was going to setup a Solaris box we acquired for a particular task in the office. I chose this box and Solaris since I had read great things about ZFS. In the past I would play the role of ‘early adopter’ and try things out when they became available. Unless I absolutely need a particular technology, I now take the ‘late adopter’ role when we’re talking about Operating Systems. Too many companies release tech that isn’t stable.

At any rate, I remember the original ZFS release into Solaris. It was announced, and then it was held back because it wasn’t ready. No problem, I can wait. I thought that by now, after all the hype, things would be perfect. We would finally have a decent raid and filesystem from Sun without worrying about the capabilities of DiskSuite or shelling out $$ for Veritas. It took Sun a big kick in the head to figure out that, now, 10 years later, they needed to innovate.

So I go through the hassle of downloading Solaris (more on that later). I start the install. Things are going smoothly. I get to the partitioning step, I’m ready to see the magic. I have two hot-swappable 18 gig drives in this machine. I want to setup a mirroring system.

Fzzz. Show stopper. No ZFS. Where is the ZFS? I downloaded the latest Solaris… what is up?

Ah – after hitting Wikipedia’s Article on ZFS, I notice in the limitations:

> ZFS is currently not available as a root filesystem on Solaris 10, since there is no ZFS boot support.

No boot support!

I stopped the project right there. The whole reason I wanted to use Solaris was to be able to have a reliable, high-uptime system… and that means RAID. No boot into UFS and then mount ZFS.. I want a real RAID

Oh well, I’ll try again next year.

I sure hope Apple users will be able to boot ZFS when they get it in Leopard.

Update Some people have asked? Why not download OpenSolaris which just added this? Ah, yeah – see ‘late adopter’ above. Then read this “Where do I download OpenSolaris”?

Posted in General | 6 Comments

Yep, we’re in a bubble

Wow – more signal indicating we are in a bubble.

Expensive ad-campaigns of women with swords

Posted in General | 1 Comment

A simple directory-tree printer in Ruby

The other day, I came across this interesting post by Tom Moertel. The blog post is called “A simple directory-tree printer in Haskell”. Haskell is interesting and this kind of programming exercise would really show how Haskell deals with real-world resources (the filesystem) as well as rendering the output in a nice human readable representation.

Here is some sample output:

.
|-- haskell.hs
|-- test.rb
|-- tree.rb
`-- tree.rb.html

His post was well written and I really liked how concise the resulting Haskell code was. I also liked the way he dealt with tree printing. I had never seen a tree printer algorithm like this before since I’m used to graphical versions which generally end up having a lot more code. For example, if I was doing this, I would have built a generic tree printer class and passed a lot more state around to each node (like the depth, sibling count, layout algorithms, etc.) Tom’s method is a great little pattern for console style tree output (like pstree) with only a few lines of code. For some past projects, such a simple routine would have come in handy.

So last night, I wondered what the Ruby version would look like. I tried to keep the example in the same functional style… just like his first example. The Ruby code stayed pretty concise.

Here is my Ruby version of Tom’s Haskell version:

 1 
 2 require 'pathname'
 3 

 4 $ArmMap = Hash.new("|   ")
 5 $ArmMap[""] = ""

 6 $ArmMap["`"] = "    "
 7 
 8 def visit(path, leader, tie, arm, node)

 9   print "#{leader}#{arm}#{tie}#{node}\n"

10   visitChildren(path + node, leader + $ArmMap[arm])

11 end
12 
13 def visitChildren(path, leader)

14   return unless FileTest.directory? path
15   return unless FileTest.readable? path

16   files = path.children(false).sort    #false = return name, not full path

17   return if files.empty?
18 
19   arms = Array.new(files.length - 1, "|") << "`"

20   pairs = files.zip(arms)
21   pairs.each { |e|  visit(path, leader, "-- ", e[1], e[0]) } 

22 end
23 
24 ARGV << "." if ARGV.empty?

25 ARGV.map{ |path| visit Pathname.new("."), "","","",Pathname.new(path) }

26 
27
Posted in General | 1 Comment

Interesting video of Linus on GIT

Thought provoking video of Linus on GIT.

Pretty compelling.

I got burned a while back when I discovered the huge merge bug in Subversion (the fact that you can only do it once). I started looking around a while ago and transitioned to SVK over a subversion repo. At work we are using Bazaar. I still like SVK and Bazaar, but I’m always interested in new and better technology.

Basically, it looks like GIT and Mercurial are the systems to watch.

Posted in General | Comments Off on Interesting video of Linus on GIT

Haven’t seen a web site like this in 10 years

Is this the new ‘antique’, is this old-fashioned, for the interweb?

Beej’s Home Page

The above link is broken. It is now at: Beej’s Home Page

Posted in General | 1 Comment

Uh, that is the way it is supposed to work

I saw this headline in the news:

Wolfowitz Blames Media for Resignation

Uh, Mr. Wolfowitz, that is the way it is supposed to work. The media is supposed to bring to light problems and issues that organizations typically cannot fix by themselves.

The headline should read: Wolfowitz Blames Self for Resignation

Posted in General | Comments Off on Uh, that is the way it is supposed to work

Incentives and taxes

As I took a walk around the block today, I noticed that yet another house was being taken apart in that strange California way. Here is what happens. Almost all of the house is torn down and taken away. A small vestige of the original house is left. Usually, the wood and material of this small portion are of questionable value. These houses were built in the late 40’s and the materials were the cheapest available. They then add a second story and build out almost to the edge of their property line. For all practical purposes, it is a new house with double or triple the rooms and bathrooms.

Why?

To avoid getting re-assessed at a higher value which would then trigger higher property taxes. On the surface, it seems like a smart thing to do. However, this is a neighborhood where paying a million dollars for a house is not uncommon. Usually the families doing this are the ones that bought in the last 1-2 years (aka, the top of the market), they are already paying the big property tax hit.

Here is the kicker.

At the last city board meeting, a lot of parents were upset because they couldn’t get their kids into the neighborhood school. Usually these ‘renovations’ are done by new families with small children. Their kids have their own room, but may not have a school with teachers that receive a great salary.

Prop 13. Regardless of its original intenions or spin (protecting those on fixed income), it hasn’t saved anyone in California from higher taxes or inflation.

Posted in General | Comments Off on Incentives and taxes

World War II airplane circling above

For the whole weekend, an old plane from WWII has been circling above the bay area. Kinda neat to see something like that still operating.

Posted in General | 1 Comment