Wordbook, audiobooks

I’m testing a new plugin for Wordpress called Wordbook — if it works, this blog post should show up on Facebook.

Also, I thought it might be interesting to document what audiobooks I’m listening to while walking to/from the train.

Last night I finished “A Wrinkle in Time” by Madeline L’Engle, read by the author. I’m 95% sure I read this book as a child, but don’t remember the plot at all. Weird.

Then I listened to some of “The Silmarillion” by J.R.R. Tolkien. A bit dense, even in audiobook form, and I need to be able to concentrate or it just fades into the background. So this one is good when I’m walking home at night, but not great when walking downtown.

This morning I started on “A Christmas Carol” by Charles Dickens, via the LibriVox.org podcast feed. Very interesting to go back to the original after seeing/hearing so many modernized and simplified variations over the holidays.

(update: does it work now?)

Google Chrome out of beta

So, Google Chrome is out of beta, but still no Mac or Linux versions.

I’ve been using Chrome on my personal XP laptop as my primary browser since it came out (I’m using it to write this!), and I have zero complaints. I really like that if one tab freezes it doesn’t take out the whole app, I can just kill off that tab and keep going. The only issue I have is with sites that demand Firefox or IE for some reason, and very occasionally there’s a page that renders strangely. Once Chrome comes out for Linux I’ll definitely try it on my Ubuntu 8.10 laptop.

Looking at stats for some larger sites at work it looks like they’re seeing around 0.5-1.5% traffic from Chrome users. This site’s traffic is just under 6% Chrome users, though admittedly some of that is me…

I haven’t been happy with any of Google’s other client apps, I don’t have any of them installed on any of my machines and I remove them if they’re pre-installed, but this one I do like.

John Scalzi Kibozes the Web

John Scalzi’s recent blog post, explaining how he searches the Web for mentions of his name and occasionally comments on sites he finds, strongly reminded me of Kibo.

This strong reaction prompted me to do some searching of ancient Internet history using Google Groups, in particular looking for some reference to the @ibo name I briefly claimed as my own. I found this entertaining, and absolutely true, post I made in 1997. Hard to believe that was only 11 years ago.

Keynote “Internet Health Report”

This is a pretty cool page, I’ve been keeping it open in a browser window for a week or so now.

Keynote Internet Health Report.

It’s only got the US Internet backbones, but issues with those will affect many other parts of the Internet. It’d be nice to have something similar for Canadian backbones too, and international links.

Launch!

I was going to write this yesterday, but had a fun stomach flu and was literally in bed all day. Feeling much better now, though still tired.

Friday at work we launched the new Suzuki Canada homepage and Automotive site. I haven’t had much time to write about it because we’ve been so busy, but I hope to write more about in-progress projects in the future.

It’s an pretty cool site technically, using Groovy on Grails and Flex. The developers and designers did a great job, but my main responsibility is deployment and infrastructure, so I’ll go into that a bit.

As far as deployment goes, Groovy compiles to Java byte-code, so we’re just pushing a .war file to a Java container. We’re using Jetty as our container — it’s what Grails uses by default when you do a run-app, and we don’t need the advanced features in the larger app servers.

One deployment issue we ran across is that Grails creates a lot of dynamic classes, which can chew through the default 64Mb of PermGen space pretty quickly, and in some cases during QA we were getting PermGen out of memory errors. So we added the -XX:MaxPermSize=256m flag when starting the container, and everything’s been good since.

We front-end Jetty with Apache 2.2 on the same box, which serves static content directly and forwards dynamic requests to Jetty on localhost using mod_proxy. Originally I was using ProxyPass directives in the Apache config, but it wasn’t granular enough, so moved to using mod_rewrite rules with [P] flags. Very cool.

One of the things we wanted to do with this site is aggressively cache content, as we don’t want Jetty working harder than it needs to. We also needed a load balancing solution in the production environment, because we have two web/app servers to reduce our downtime requirements for deployments and patching. So we went with Varnish, which is both a caching HTTP accelerator and a load balancer. I’m very happy with Varnish, and will write more about it later.

I’ve been watching the site and servers for the past couple of days (even while battling the flu) and all told I’m quite happy with how things are working. We’ll see how it looks after the first couple of weeks of shakedown traffic.

Solaris 10 x86 - updating boot device

Recently at work I had a situation where I had to move a Solaris 10 x86 virtual machine from a VMware Server environment to a VMware ESXi environment. Unfortunately, the Server architecture presents IDE drives to the VM, and the ESXi environment presents SCSI drives to the VM, so when you move the VM between them Solaris has no idea how to boot.

After much searching, I found this post on an OpenSolaris mailing list which helped me out.

To summarize:

  1. Boot Solaris into the Failsafe mode from Grub
  2. Get the name of the new drive device using the format command
  3. Change the boot device path in the file /a/boot/solaris/bootenv.rc
  4. Run the command “bootadm update-archive -R /a”
  5. Run ‘disks -r /a’ to rebuild all the /dev/dsk and /dev/rdsk entries
  6. Edit /a/etc/vfstab to reflect the updated /dev/dsk entries (you can do some of this after reboot)
  7. Cross your fingers and reboot

Note that I’m not using zfs or ODS or anything exciting for the drives, just plain disks with file systems. Other configurations would likely be even more exciting.

Hopefully this can help someone else…

Google Chrome

So, Google has released a browser called Chrome. So far it’s only for Windows, and is being called beta, but Gmail is still beta, so whatever.

The install is nifty, it automagically imports all your Firefox settings, including saved passwords (!). This is rather nice, because I have a bunch of random passwords for sites (like this blog) that are only saved in my browser and some obscure text file or email somewhere, and I’d have to go dig them up if it didn’t suck the settings across.

So far it seems like a pretty good browser, though I haven’t done much aside from access Google properties (Reader, Mail). While these are admittedly a lot of what I use a browser for, they’re also likely Google’s optimization targets, so they’d better work really well. We’ll see how it does with other stuff down the road.

One interesting concept with Chrome is that separate tabs are separate processes. This is good and bad — it uses more memory, but if a site crashes the browser it only affects that tab (in theory, I haven’t tested this yet), and you can kill off that process. If this works as advertised it’d be really good, because I can’t count the number of times I’ve had to restart Firefox because a tab has hung.

I also really like the about:memory feature (also linked as “Stats for nerds” off the built-in task manager), which shows not only detailed data about Chrome, and also shows memory stats for any other browser you’re running. Excellent for comparisons, which I’m sure is the point.

Now if only Google would give me Offline reading for Gmail. Maybe some day…

VirtualBox Additions vs VMware Tools

I recently installed VirtualBox Guest Additions to an Ubuntu Server 8.04.1 VM that’s running the -virtual kernel mentioned in my last post.

It was a breeze. The installer told me specifically what it couldn’t find when necessary (make, gcc, kernel headers), didn’t barf with crazy error messages, didn’t spew pages and pages of unneeded details about how the kernel module compilation was proceeding when it was working properly, and it Just Worked the first time on a fully-updated machine. On reboot of the VM, the kernel modules loaded and worked exactly as expected.

Contrast this to VMware Tools, which is hit or miss on the “will it work the first time” front, especially when installing on a guest OS that’s newer than the Tools are designed for. It also spews files all over the place, and looking at the scripts gives me a headache, especially compared to the simplicity of the VirtualBox scripts.

I’m not sure if the elegance and simplicity of the VirtualBox Additions install and operation can be attributed to the original creators of the software, or to improvements since Sun purchased the company, or a bit of both, but regardless I like it.

Also, I’ve been doing some really intensive I/O and CPU work (transcoding DivX videos into MPEG2 using ffmpeg) inside this VirtualBox VM running on a Windows XP host, reading/writing files on a Shared Folder from the host, and both the guest and host have been very fast and entirely stable. I’d say the transcoding is at close to native speed, though that’s entirely subjective and without scientific evidence.

If VirtualBox could just get FreeBSD support working, I’d have no complaints left.

Ubuntu Hardy 8.04.1 guest on VirtualBox 1.6.4

I’ve been playing with VirtualBox and have been having an issue getting Ubuntu Hardy 8.04.1 working, specifically that everything installed fine but after reboot the system hung with an error about the kernel requiring “features not present on the CPU”.

Apparently the correct way to fix this is, after the OS installs but before you reboot, change to an alternate TTY (alt-F3), run:
chroot /target
then run:
apt-get install linux-virtual
This installs a stripped-down version of the kernel that’s optimized for running under a virtual machine. It seems to be a lot smaller than the default server kernel.

I’m going to need to play with this linux-virtual kernel at the day job under VMware ESX. We’re currently just using the default server kernel there, and this might be a lot cleaner.

Useful Ubuntu Answers page here

PHP4 to PHP5 - fun with echo

Found a legacy web site at work today running on PHP4. As the PHP folks no longer support version 4, I started testing the site on PHP5 to prep it for migration. I was rather surprised to find that some very basic pages, with just some if/else blocks for conditional content, were causing errors. The error being returned was “parse error, unexpected ‘;’”, which was rather odd, particularly because it was still giving the same error when I removed all ;’s from the offending line (!?).

The issue turned out to be that PHP4 allows you to just use echo ; or echo [your text] ;

PHP5, however, requires quotes:echo ""; or echo "[your text]“;

I couldn’t find this with 15-20 minutes of searching the web, just figured it out by trying various changes to the page, so here it is for posterity and people looking in the future

Fun times.

Next Page »