Just read it, sometimes Fake Steve is so funny, and dead on in a dark sort of way.
http://fakesteve.blogspot.com/2007/11/for-once-cringely-gets-something-right.html
Ongoing musings, tips, and observations from a Van Couvering, not someone who is going to Vancouver.
Just read it, sometimes Fake Steve is so funny, and dead on in a dark sort of way.
http://fakesteve.blogspot.com/2007/11/for-once-cringely-gets-something-right.html
Posted by David Van Couvering at 1:31 PM 0 comments Links to this post
Labels: funny
I have heard lots of good things about Live Upgrade -- it allows you to upgrade to a new version of the OS while giving you the option to go back to your old version. Pretty cool!
Live Upgrade requires you set up a partition that's the same size as your root partition. In the past, if you didn't do that yourself, you can find out you don't have enough space to do that. I and others gave some feedback about that.
So I was very happy to notice that when I installed SXDE 09/07 it said that if I had given it more than 20GB of space (which I had), then the install would automatically set up a partition to make it possible to do a live upgrade.
Sure enough, when the install was done, there was a mount called /second_root that was exactly the same size as my / partition:
# /usr/ucb/df
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0d0s0 9294575 6742458 2459172 74% /
...
/dev/dsk/c0d0s4 9294575 9233 9192397 1% /second_root
So, after doing some research on the Web on how to do this, here are the steps I followed. You can also find the official instructions here.
Back Up your VMWare Image File
I didn't need to tell you to do this, did I?
Download the Image for the new OS
There are weekly builds of OpenSolaris called Nevada or Solaris Express Community Edition (SCDE) that have not gone through the same level of validation as Solaris Express Developer Edition (SXDE), which comes out about once a quarter (next one due in January).
So if you're brave and want the latest and greatest, get Nevada/SXCE. The latest one is build 78, with build 79 coming out some time next week. The nice thing is with Live Upgrade you can turn back the clock if you Otherwise, get the latest SXDE.
Mount the Image
Once you have the image, you can mount it into your current Solaris image using VMWare.
Choose Virtual Machine->CD/DVD->Choose Image... and then browse to your .iso file.
Upgrade LiveUpgrade
You heard me right. Before you can do Live Upgrade, you need to install the latest version of Live Upgrade. This seriously bit me in my last attempt about six months ago. It makes sense when you think about it, but, you know, hindsight is 20/20...
Find out where the CD is mounted to (it's usually under /cdrom), and then run something like the following:
# /cdrom/sol_11_x86/Solaris_11/Tools/Installers/liveupgrade20
and then let it do its thing.
Create a Live Upgrade Unit is going to contain a copy of
/second_root/. This is what will be upgraded, and then you will "switch" roots when you want to run in the new operating system. If you want to go back, the old one is still there, and you can "switch" back. Cool, huh?
So, first step is to make a copy of your root partition. This is done with lu_create.
First, you need to get the device name for /second_root. Do a df to find out. From above, you can see mine is c0d0s4.
Take a note of that, and then unmount /second_root and comment it out from /etc/vfstab. This is important, lu_create won't work if it thinks /second_root is in use.
Once you've done that, run the following command
# lucreate -c sxde907 -n nv78 -m /:c0d0s4:ufs
Where sxde907 is the name you want to give your current OS version, nv78 is whatever name you want to name your new OS version, and c0d0s4 is whatever the device name is for your /second_root partition.
This will run for quite some time, as it is copying your entire root partition. Time to go get a cup of coffee...
Note: keep an eye on things in the Performance Monitor. I noticed code>vmware-guestd taking up all the CPU and lucreate was asleep - if this happens, you can safely kill vmware-guestd, and then things will move along. I think this issue is fixed once you install the VMWare tools (I'm not sure though).
Run the Upgrade
This is done pretty simply. If your new image is mounted in the standard place, it will look like this:
# luupgrade -u -n nv78 -s /cdrom/sol_11_x86
Where nv78 is whatever name you gave to your new partition.
Activate the New Partition, And Go
Run# luactivate nv78
to activate your new boot environment. This command, when run, provides very useful information on how to get *back* to your current boot environment if for some reason reboot fails, so do take note.
Make sure you fully shutdown, versus "soft reboot" by using the shutdown command or the init command. The simplest way to do this is to do a full shutdown; if necessary (it shouldn't be) shut down the virtual machine using VMWare's code>Virtual Machine->Shut Down Guest.
When you reboot, you'll be in the new operating system version. If you ever want to go back, run luactivate again to activate the old bood environment, e.g.# luactivate sxde907
Note that the startup menu lets you pick which boot environment you want to run in. Pretty nice!
My only complaint is that it took longer for me to run the upgrade than it did to make a clean install. But I guess that's to be expected, upgrading is a more complicated process.
Issues
I noticed that PostgreSQL did not start up in build 78.
Also I got an error saying there was a version mismatch for the 'vmhgfs' filesystem, and the HGFS module could not be started. However, I could see my shared directory no problem.
The screen resolution stuff appears to be kind of broken in build 78. This has been reported and hopefully will be fixed in subsequent releases. It's workable, but not nearly as nice as with SXDE 09/07.
Posted by David Van Couvering at 12:29 PM 0 comments Links to this post
My little sister had a baby girl last night. I am so frustrated she is all the way in London! I feel very proud and happy. Her name is Charlotte, after my dear great aunt who recently passed away, and her middle name is Josephine, after our grandmother.
Welcome, little Charlotte Josephine Örnebring. 
Posted by David Van Couvering at 10:06 AM 0 comments Links to this post
I am continuing to happily run Solaris Express Developer Edition under VMWare Fusion 1.1 on my Mac. This is now my primary development environment
I had some nasty performance issues at first. I have a 5400RPM disk drive, and when I was running Solaris, I would experience regular "lock downs" where my computer became almost completely unresponsive while the disk chewed and chewed and chewed.
I finally moved my disk image to an external USB drive, and was much much happier.
Then earlier this week, I tried running my image on my main disk again, and it actually is working great, no issues at all.
I think the issue is that VMWare allocates disk space on demand. So when I was first getting going, installing lots of stuff, pulling down source trees and so on, VMWare kept asking the Mac for more disk space for its image.
But now the disk size has stabilized, and that's not happening any more.
If I were to do it again, I think I might do the following:
Posted by David Van Couvering at 11:53 AM 3 comments Links to this post
Labels: solaris, virtualization

I have been trying most of the day to get SQL Server Express installed on a lab Windows XP machine. I need this to try and reproduce a problem somebody is having with NetBeans and SQL Server.
What a friggin nightmare!
Someone prior to me had installed the beta of SQL Server Express, which now appears to have expired and won't start. So I downloaded the new version, which refused to install, saying that "Beta Components of .Net, Visual Studio, or SQL Server 2005 are causing problems. Please fix this" or something to that effect.
Um, OK... Not very helpful.
I tried uninstalling the old version. Get this - it is installed but it refuses to uninstall because it says it is missing the .Net 2.0 framework. Gads!
Ok, back to Microsoft, download and install .Net 2.0. Same problem. Reboot. Same problem. The @#%@% system tells me .Net 2.0 is installed, but it refuses to uninstall. And the new version refuses to install, same error.
What, are you doing everything you can to make me not use your software??!! Amazing...
For the sake of my customer, I'll have to try this again tomorrow. But if I were a developer, I'd be throwing this thing out the window and moving to Java DB.
Posted by David Van Couvering at 2:57 PM 0 comments Links to this post
Wow. Thank goodness for open source. Three cheers for Landon!
Posted by David Van Couvering at 2:25 PM 0 comments Links to this post
Labels: java, technology
City financing of up-front costs of solar installation: really cool idea, and, living in Berkeley, one I hope we can take advantage of.
http://earth2tech.com/2007/11/06/qa-with-berkeley-mayor-tom-bates-on-solar-financing-plan/
Posted by David Van Couvering at 2:25 PM 0 comments Links to this post
Labels: green
Nati Shalom, CTO and founder of GigaSpaces, has a very interesting blog describing the architectures of some of the Big Scale Web Guys out there -- what the patterns were, what lessons were learned, etc. Check it out...
http://natishalom.typepad.com/nati_shaloms_blog/2007/11/architecture-yo.html
Posted by David Van Couvering at 2:25 PM 0 comments Links to this post
Labels: technology
A lot of folks are surprised when an embedded database doesn't work the same as a client/server database. In particular, they don't initially realize that it is the application's responsibility to create the necessary tables and load them with any initial data the first time the application is run in a new location. Many of use are used to the database just being out there on a server somewhere and aren't used to having this responsibility.
I asked for a blog or tutorial on how to do this on the Derby user mailing list, and one user, Alan Burlison, was kind enough to point me to his work. And I quote:
No tutorial, but some working code
This runs inside Tomcat and creates a new database the first time it is run, subsequent runs use the existing database. The database runs in embedded server mode, so whilst Tomcat is running you can access it externally as well.
The database is initialised via SQL script files that are contained in the application WAR file, using the ij utility (derbytools.jar). ij can be run from inside an application as well as from the command-line, and ij + SQL scripts is the easiest way I've found so far of setting up a database, because the SQL scripts can be debugged from the command-line before being embedded in the app.
Posted by David Van Couvering at 12:49 PM 5 comments Links to this post
I got a tip from one of the folks on the PostgreSQL team here at Sun. There is a lot of very useful information on Postgres 8.2, which ships with Solaris, through the man page.
So try
man postgres_82
Posted by David Van Couvering at 12:06 PM 0 comments Links to this post

My brother and Dad are back, and the first set of photos are in!
My brother is a wonderful photographer, and these shots attest to that.
Posted by David Van Couvering at 11:34 AM 0 comments Links to this post
I needed to track down an issue with PostgreSQL and the Ruby on Rails support in NetBeans today, and in the process learned what you need to do to get PostgreSQL working on Solaris with NetBeans.
There are two approaches you can do. You can use the Cool Stack Ruby on Rails package, which is optimized for Solaris. Or you can use the JRuby/Ruby On Rails support that comes with NetBeans.
These instructions are for NetBeans 6 RC1, and assume you have installed the bundle with Ruby support or installed the plugin from the update center (see Tools->Plugins).
In either case, you need to install the Postgres driver gem for Ruby. This is easily done, just go to Tools->Ruby Gems, select the New Gems tab, search for "postgres" and pick "postgres-pr". This is the Ruby implementation. I had trouble installing the native implementation, I think I'm missing the postgres header files it needs.
If you want to use JRuby and the Rails that comes with NetBeans, you're ready to go. When you create a new Ruby on Rails project, pick "postgres" as the database.
Now, there appears to be a problem with postgres-pr and JRuby, when it tries to use the Postgres UNIX file socket to connect to PostgreSQL. So edit your database.yml file and uncomment the following lines:
host: localhost
port: 5432

Posted by David Van Couvering at 5:16 PM 0 comments Links to this post
I just needed to do this, so I thought I'd document the fairly steps to set up PostgreSQL as a service in Solaris Express Developer Edition version 9/07
PostgreSQL is already installed in Solaris Express, and it's set up as a service, but it is disabled by default. Once you have this set up, then PostgreSQL will always be up and running, even after reboots.
Posted by David Van Couvering at 12:47 PM 1 comments Links to this post

For this release of NetBeans, we have a survey that users of NetBeans can fill out to tell us whether the release candidate for NetBeans 6, labeled RC1, is fit for production.
Check out this survey link and tell us what you think
Posted by David Van Couvering at 9:51 AM 0 comments Links to this post
DTrace has won accolades within the Solaris community as delivering something nothing short of miraculous for understanding the root cause of performance issues without becoming a bottleneck to your system itself.
But DTrace is a command-line interface, and one thing it needs is a UI.
Well, the tools teams have been working hard to make this happen. In the latest release of Solaris Express Developer Edition, Sun Studio comes with a plugin called D-Light that helps you visualize DTrace probes.
Nasser Nouri has also delivered a DTrace plugin for NetBeans which looks quite nice.
Sun also provides DTrace support in their optimized AMP stack.
So this is all goodness for those out there who want to deploy AMP solutions to a platform that gives you the tools you need deep observability into your application so you can find and fix performance issues quickly.
Posted by David Van Couvering at 10:56 AM 0 comments Links to this post

I just finished installing Solaris Express Developer Edition 9/07 on VMWare Fusion 1.1 on my MacBook Pro.
Well, I don't know what to say. I just can't think of any complaints. The install was simple and painless, I was able to install the VMWare Fusion tools without a hitch [1], networking Just Works, Firefox Just Works, NetBeans 5.5 Just Works, including Java DB is Just There and Works. File sharing works. Navigation between Solaris and Mac applications works.
I have tried many early installs of Solaris, and I have never been in this baffling situation of having absolutely nothing to complain about (and believe me, I don't keep my mouth shut).
I can go to full screen mode, and it stays in full screen even when I suspend and resume (unlike Ubuntu under Fusion).
I'm downloading Ant and am going to give a NetBeans build a go. We'll see how it goes; I am getting myself ready to shift over to a real developer's platform, that actually has Java 6 and a working version of Open Office and top-level AMP and PostgreSQL support. I'll keep the Mac around for consumer-oriented stuff like playing Rhapsody, but I think in general it's going to start moving to the background of my day...
One other nice thing about running Solaris in Fusion on the Mac -- I can suspend my computer. If you have Solaris installed natively, no suspend. They're working on it, but meanwhile, this is a pretty good workaround.
[1] Well, just one hitch, per Felipe's blog. After installing and you reboot, VMWare thinks you are booting a 64 bit OS in a 32 bit guest. You have to do add the following to the .vmx configuration file:monitor_control.disable_longmode = 1
After you successfully boot this way, VMWare recommends you remove this line as it can confuse some applications.
Posted by David Van Couvering at 10:48 AM 10 comments Links to this post

Well, I'm heading back from the PHP conference in DC. This was a simple, small, conference, but I came away from it quite impressed. The speakers were good, the organization was informal but solid, and (this is something quite unusual) the food was quite good. If you're interested, they're already planning to have the next one in the same venue (George Washington University campus of all places, but actually quite cozy) in early June of 2008.
I'm not a PHP programmer myself -- the main goal of my visit was to gain a better understanding of "who" a PHP developer is (if you can make such broad generalizations) and what their priorities are for database tooling. So I spent a lot of time at lunch and breaks chatting up my table buddies and asking them lots of questions. Sometimes I'd even pull out my survey and walk through it with them.
Many of the developers I met are the single "IT guy/gal" in their department. They had more computer skills than the rest in the team, and just pulled out the web and PHP books when they needed to build something. Over time they did this more and more and all of a sudden they were doing PHP for their day job.
In tems of tooling, a vast number of them use and love phpmyadmin (duh, say some of you, I'm sure:)), so I am definitely going to take a look at that.
In general, the primary database tool they care about is SQL query editing and execution. There are frameworks out there like PDO that hide the SQL from the developer, but this is used by a very small minority (I couldn't find anyone using PDO).
Another theme I heard was that Entity/Relationship (E/R) diagrams are useful, not as a design tool, but primarily as a communication tool. Developers need to understand existing schemas, and also communicate their schemas to the end users. There was a lot of head nodding around a feature to allow you to print an E/R diagram to PDF to make it easily distributable over the web and email.
I also particularly wanted to know how important visual query building is. This is a feature that lets you build a query by dragging tables onto a pallette, selecting/deselecting columns, adding filters, joining tables with a line, and the resulting SQL query is built for you. The strong answer I got here was "ah, that would be nice, but I don't really do that. I mostly just hack SQL on the command line."
Many folks don't use an IDE and don't know what value it could have for them. One of them even said "there was this one tool I used that color coded my code for me and when I typed a letter it would show me all methods that started with that letter, man that was so cool!" So I could see that if they get started on an IDE, they would really love it.
However, one thing I noticed is: these are keyboard guys, they want fast response time and fast round trip. They will be turned off by an IDE if it feels "heavy." Luckily NetBeans is modular, and we can provide a PHP bundle that is quite lightweight and should have a reasonable startup time.
Another interesting theme I gathered was that many PHP developers don't have an entire LAMP stack on their machine. They work in the office, connected to the network, and use remote access to their server to deploy and test, even during development.
I need to spend some time thinking about the implications of this for database tooling. In particular, if the database server is only accessible through HTTP, then all our database tooling that requires a direct database connection is not going to be of much value... I can see why phpmyadmin is so popular, because it is web based...
I could imagine building a set of REST services for database tooling like schema metadata management, query editing, and so on, and access these services through NetBeans, allowing you to manage a database over the web through NetBeans. Pretty cool, now that I think of it...
Posted by David Van Couvering at 1:57 PM 0 comments Links to this post

Now is the time to submit your presentation or BOF for consideration for Java One 2008.
I submitted one for a BOF demonstrating the upcoming database tool features for NetBeans, and a technical session on trends in persistence and databases. We'll see if they get in.
What about you? Do you have anything you want to say or share with the Java community? Now's your chance.
Posted by David Van Couvering at 1:46 PM 0 comments Links to this post

I'm not sure what inspired them to do this, but they are off to the Antarctic. Intrepid family. Here is a missive from my father just before they head off from the tip of Argentina.
Posted by David Van Couvering at 7:24 AM 0 comments Links to this post
As promised, I'm moving away from Mac as my primary working environment. I need Java 6, it doesn't have the best integration with the AMP stack, which I need to work with right now, and so on.
But I'm not fully giving up on Mac OSX. It is now my hosting environment for VMWare Fusion. I am typing this blog in fullscreen mode in Ubuntu under VMWare. I am realizing that for many a computer could easily turn from a single computer to a hosting environment for many computers. This is especially useful for developers, because it gives you flexibility, freedom, and the ability to easily test on many platforms. A real wave of the future.
I installed Indiana, and I am working on installing Solaris Express Developer Edition. I'd like to work with Solaris - I like ZFS and I remember how blazingly fast Solaris is, particularly with disk I/O. Indiana had an incredibly nice install experience, it's actually hard to believe after previous experiences with the Solaris installation. This is just an amazing, amazing improvement and the team deserves very high accolades.
However, Indiana doesn't have things fully integrated yet (it's missing Java, PostgreSQL, MySQL, and so on). I tried using the new package management system but nothing seemed to be available. I'm going to keep working on getting this set up, but I'm not quite ready to dedicate my day-to-day working life under Indiana. Indiana looks very promising and I think ultimately that's where I'm going to end up.
Next up is Solaris Express Developer Edition. I've heard the install is also vastly improved, and it has a lot more things integrated, including NetBeans. So I'll let you know how that goes.
Posted by David Van Couvering at 4:05 PM 2 comments Links to this post
Labels: technology
Oracle has a very strong presence at this PHP conference. They are a "Presidential" sponsor, had a keynote, and handed out a slew of CDs in the conference tote bag. As a matter of fact, their stuff was the only real thing included in the tote bag.
Let's see, what do we have here, let me open the box...
Posted by David Van Couvering at 3:05 PM 0 comments Links to this post

Here I am in Washington, DC at the PHP developer's conference.
It is a very small conference compared to say JavaOne and OSCON, but that makes it quite cozy and friendly. There are maybe 200 folks here. It's quite surprising, given how many PHP developers there are, and this appears to be the only conference in the USA besides the Zend conference that just happened.
I took the red-eye last night (first time on Jet Blue, very nice!), rented a car, and got immediately stuck in nasty stop-and-go traffic coming out of the Dulles airport. I had rented a GPS navigator, so I found the closest Metro station, parked, and did public transit into the city. I am not a car driver (I take BART to Menlo Park twice a week into Menlo Park and love it). I'll pick up my car this evening and take it to my hotel in Alexandria ($100 a night, thanks Priceline! Sun Travel couldn't find anything below $400 a night).
What, might you ask, is a Java programmer like me doing at a PHP conference in DC?
Well, I want to find out more about the PHP community, and start learning what we might be able to do in the database tooling area of NetBeans to make NetBeans useful/attractive to PHP developers.
It's not my area to build a good PHP editor, but one thing we could do is make it very easy to work with databases in PHP. But I need to find out what PHP developers care about around databases. In some ways I suspect it's what all developers care about: schema management, querying and data management. But there are subtleties, like how important is a visual query tool versus text-based query tools. How important are ORM APIs like PDO and frameworks? What kind of caching is done, if any, with things like memcached (good results from coming to this conference, already, I just found out about Facebook's open-source PHP caching technology called APC). Maybe it would be really cool to do in-place query editing, where you get code completion and syntax highlighting for SQL right inside the PHP editor, but would anyone care?
I did a survey around these kinds of things, but so far only 12 PHP developers have responded. So I'm also trying to recruit more PHP developers to fill in this very short survey. If you're a PHP hacker, please fill in the survey, it takes 10 minutes maximum.
In the meantime, as the conference moves along, I'll report back to you anything I find interesting.
Posted by David Van Couvering at 7:58 AM 0 comments Links to this post

In an attempt to have our voice heard, let's spread the word. If you want Java 6 on the Mac, or at least have Apple tell us when they plan to deliver it rather than be silent, then post a blog with this magic cookie:
13949712720901ForOSX(13949712720901 is "CAFEBABE" in hex, the magic cookie for Java class files).
Posted by David Van Couvering at 3:28 PM 1 comments Links to this post
A binary distribution of OpenSolaris with Linux Userland CLI support and a spanking new network-based package management system. Now *that* sounds cool!
Posted by David Van Couvering at 11:27 AM 1 comments Links to this post
Labels: technology