15 October 2017

On the face of it, three day work weeks are pretty nice. But I stay busy, and cramming a week’s worth of productivity into three days is less fun than it sounds like. That said, I got done what needed doing, and the coming week is prepped and ready.

*      *      *

Last night, we went back for a second round of Annapolis Shakespeare‘s production of Much Ado About Nothing. With 17 actors and a two story set, there’s always more going on than one can take in at one sitting. Since opening night, the actors have really settled into their roles, and we enjoyed it even more, if that were possible. They’ve been getting stellar reviews all over the place and I can only say this: If you’re in the area, there are nine more productions of this show: today’s matinee and four shows each of the next two weekends. Get tickets and go!!!

*      *      *

The daylight hours yesterday were full, too. Much of the day, I puttered with virtualization on my main home server, a FreeBSD 11.1 box that does internal SMB, internal IMAP, backups, and virtual machine hosting. When I started with virtualization on the system, I was using Oracle’s VirtualBox product, because the price is right (free, as in beer), and easy, easy to setup and use. But easy isn’t always my primary goal. So I’ve been experimenting with the native virtualization tool on FreeBSD: bhyve.

“bhyve, the “BSD hypervisor”, pronounced “beehive” is a hypervisor/virtual machine manager developed on FreeBSD.”

I make use of the appropriate section of the FreeBSD Handbook to provide guidance. As such things go, it’s relatively simple to stand up FreeBSD virtual guests, and a bit trickier for Linux guests. I’ll document some of the fun I had with that here, because there are gotcha’s that aren’t covered in the Handbook.

The Setup

I’m going to build an Ubuntu 17.04 virtual machine (VM), using a ZFS volume as a datastore. The use of ZFS is recommended for performance reasons. There are other advantages, too, like the ability to make quick clones of a VM. More on that later. So, my configuration is this:

root@serenity:// > ls /data/bhyve
images iso
root@serenity:~/ > zfs list zroot/data/vmimages 
NAME USED AVAIL REFER MOUNTPOINT
zroot/data/vmimages 52.9G 1.07T 96K /data/vmimages

/data/bhyve/images is actually where I keep the runtime configuration and startup scripts for virtual machines.

/data/bhyve/iso is the repository for CD images for installation of virtual machines.

The ZFS path zroot/data/vmimages is the parent for all of my virtual machine disks.

I’ve also already done the initial networking setup with bridge and tap0 interfaces, per the Handbook sub-section, “Preparing the Host.”

Preparation

Create and check the VM disk:

root@serenity:/data/bhyve/images/ > zfs create -V16G -o volmode=dev zroot/data/vmimages/ub1704new
root@serenity:/data/bhyve/images/ > ls -al /dev/zvol/zroot/data/vmimages/ub1704new
crw-r----- 1 root operator 0x9b Oct 15 13:59 /dev/zvol/zroot/data/vmimages/ub1704new

With the disk volume in place, I can create the device map file, which sets (hd0) to the path to the new disk volume I created, and (cd0) to the  path to the ISO file (vim is the text editor I use):

root@serenity:/data/bhyve/images/ > vim ub1704new-device.map
root@serenity:/data/bhyve/images/ > cat ub1704new-device.map
(hd0) /dev/zvol/zroot/data/vmimages/ub1704new
(cd0) /data/bhyve/iso/ubuntu-17.04-server-amd64.iso

Note that when a VM is or has been running, it creates an entry in the device tree, at /dev/vmm. Normally, one must always “destroy” that file before one can start/restart the VM (seems clunky, but there it is). But because this is the first time this VM will have been run (on creation), there should be no corresponding device file at /dev/vmm/ub1704new. I’ll check that, then create the VM using the grub-bhyve tool, which prepares the boot environment for the VM:

root@serenity:/data/bhyve/images/ > ls /dev/vmm/ub1704new
ls: /dev/vmm/ub1704new: No such file or directory

root@serenity:/data/bhyve/images/ > grub-bhyve -m ub1704new-device.map -r cd0 -M 1024M ub1704new
 ...
GNU GRUB version 2.00

+--------------------------------------------------------------------------+
|Install Ubuntu Server                                                     |
|OEM install (for manufacturers)                                           |
|Install MAAS Region Controller                                            |
|Install MAAS Rack Controller                                              |
|Check disc for defects                                                    |
|Rescue a broken system                                                    |
|                                                                          |
|                                                                          |
+--------------------------------------------------------------------------+

Use the ^ and v keys to select which entry is highlighted.
Press enter to boot the selected OS, `e' to edit the commands
before booting or `c' for a command-line.

root@serenity:/data/bhyve/images/ > ls /dev/vmm/ub1704new
/dev/vmm/ub1704new

The “Install Ubuntu Server” line was highlighted, so I simple pressed the Enter key to accept that option. Disconcertingly, one is then dropped right back onto the command line. This is expected, however. And as you can see, we now have a VM entry for the new guest under /dev/vmm.

The next gotcha is this: There has to be a free tapN interface for the VM to attach to. The documentation wasn’t really clear on that, I think I assumed that multiple VMs could attach to a single tap interface. But in reality, think of the bridge interface as the virtual switch, and each tap interface as a port on that switch. So, let’s check if tap0 is in use:

root@serenity:/data/bhyve/images/ > ifconfig | egrep "^tap[0-9]+:"
tap0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
tap1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
tap2: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500

As you can see, I’ve run into this problem already, and have a couple of spare taps available. This output shows that of the three tap interfaces, tap0 and tap2 are available, while tap1 is in use (see the word UP in the flags). For the purposes of this exercise I’ll just use tap0. But it’s trivial to add more tap devices on the fly, and to add them to the /etc/rc.conf file so that they are present for future runs. In a super-happy world, my VM automation script will look for any available tap device, and use one if found, otherwise dynamically add yet another one and use it. But that’s another post.

Install Time

So, it’s time to start the VM for the first time. Important note: One should set the amount of memory for the bhyve run to match the amount one set with grub-bhyve, or errors ensue. Observe that the memory setting with grub-bhyve above uses the -M flag, and a trailing M. The bhyve command uses a -m flag, and Megabytes are assumed.

I’m going to give the VM two processors (it can certainly take advantage of two, even during the installation)

root@serenity:/data/bhyve/images/ > bhyve -c 2 -m 1024 -H -P -A -s 0:0,hostbridge -s 1:0,lpc  \
 -s 2:0,virtio-net,tap0 -l com1,stdio -s 3,ahci-cd,/data/bhyve/iso/ubuntu-17.04-server-amd64.iso \
 -s 4,virtio-blk,/dev/zvol/zroot/data/vmimages/ub1704new ub1704new
 ...

  ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐
  │                                                                         │
  │ Choose the language to be used for the installation process. The        │
  │ selected language will also be the default language for the installed   │
  │ system.                                                                 │
  │                                                                         │
  │ Language:                                                               │
  │                                                                         │
  │                               C                                         │
  │                               English                                   │
  │                                                                         │
  │  <Go Back>                                                              │
  │                                                                         │
  └─────────────────────────────────────────────────────────────────────────┘

 <Tab> moves;  <Space> selects;  <Enter> activates buttons

And so starts the text-mode Ubuntu installer. I’m going to assume you can find your way to figuring that out or find useful directions on the interwebs. A couple of installation tips:

  • The installer configures networking using DHCP by default. It’s easy to change to a static IP later, if desired.
  • Hostname entry – I generally use the name of the virtual machine I created. It’s just easier to keep straight in my head that way.
  • Partitioning – I’ve gone with “Guided – use entire disk and set up LVM”, but there are repercussions down the line. Manual isn’t hard, but can be confusing if you’ve not done much manual partitioning. LVM is a good choice because you can later add more diskspace to the volume(s) without even rebooting the system.
  • Automatic updates – These can be a good idea, some of the time. But with servers, I tend to have process around patching, booting, and testing, so I selected No Automatic Updates.
  • Software Selection – The only important choice for me at system installation is OpenSSH server: I need this to remotely administer any system: local or remote, physical or virtual.

Once the installer is done, there’s at least one more trick up my sleeve…

But first, we have to “destroy” the remnants of the prior run, then re-run grub-bhyve to figure out what our root and boot devices are:

root@serenity:/data/bhyve/images/ > bhyvectl --destroy --vm=ub1704new
root@serenity:/data/bhyve/images/ > grub-bhyve -m ub1704new-device.map -r hd0 -M 1024M ub1704new
 ...
grub> ls
(hd0) (hd0,msdos1) (cd0) (cd0,apple2) (cd0,apple1) (cd0,msdos2) (host) 
(lvm/ub1704new--vg-swap_1) (lvm/ub1704new--vg-root)
grub> ls (hd0)/
error: unknown filesystem.
grub> ls (hd0,msdos1)/
error: unknown filesystem.
grub> ls (lvm/ub1704new--vg-root)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/ root/ run/ 
sbin/ srv/ sys/ tmp/ usr/ var/ initrd.img vmlinuz snap/
grub> cat (lvm/ub1704new--vg-root)/etc/fstab
 ...
/dev/mapper/ub1704new--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/ub1704new--vg-swap_1 none swap sw 0 0

And there’s the information we need to configure a file to prime grub automatically, but first, let’s get this system running for the first time after installation:

grub> linux (lvm/ub1704new--vg-root)/vmlinuz root=/dev/mapper/ub1704new--vg-root
grub> initrd (lvm/ub1704new--vg-root)/initrd.img
grub> boot
root@serenity:/data/bhyve/images/ >

There’s our prep done, now to run the machine:

root@serenity:/data/bhyve/images/ > bhyve -c 2 -m 1024 -H -P -A -s 0:0,hostbridge -s 1:0,lpc \ 
> -s 2:0,virtio-net,tap0 -l com1,stdio -s 4,virtio-blk,/dev/zvol/zroot/data/vmimages/ub1704new ub1704new
 ...
Ubuntu 17.04 ub1704new ttyS0

ub1704new login:bilbrey
Password: 
Welcome to Ubuntu 17.04 (GNU/Linux 4.10.0-19-generic x86_64)
 ...
bilbrey@ub1704new:~$

The next step is to update the freshly built system to with current packages and security updates, because the CD and DVD images are not respun every time there’s a changed package:

bilbrey@ub1704new:~$ sudo su -
[sudo] password for bilbrey: 
root@ub1704new:~# apt update && apt upgrade -y
 ...
root@ub1704new:~# sync
sroot@ub1704new:~# sync
root@ub1704new:~# shutdown -h now

With that done, now I’ll create a couple of files to make the startup much easier – we’ll create a file to feed grub-bhyve what it needs, and a quick and dirty shell script to automate all the startup options and run the VM:

root@serenity:/data/bhyve/images/ > vim ub1704new-grub.in  # pull together our grub info from the first startup...
root@serenity:/data/bhyve/images/ > cat ub1704new-grub.in
set root=(lvm/ub1704new--vg-root)
linux /vmlinuz root=/dev/mapper/ub1704new--vg-root
initrd /initrd.img
boot

root@serenity:/data/bhyve/images/ > vim start_ub1704new.sh  # shell script to config and run 
root@serenity:/data/bhyve/images/ > cat start_ub1704new.sh
#!/usr/local/bin/bash

#defaults
imgname="ub1704new"
imgpath="/dev/zvol/zroot/data/vmimages/${imgname}"
cpus=2
mem=2048
tap="tap0"

stkargs="-H -P -A -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,${tap} -l com1,stdio" 

cd /data/bhyve/images
bhyvectl --destroy --vm=${imgname}  # Clean up prior run
grub-bhyve -r hd0 -m ${imgname}-device.map -M ${mem}M ${imgname} < ${imgname}-grub.in  # prep grub boot 
bhyve -c ${cpus} -m ${mem} ${stkargs} -s 4,virtio-blk,${imgpath} ${imgname}  # Run the VM

root@serenity:/data/bhyve/images/ > chmod 700 start_ub1704new.sh  # Make the script runnable (by root)

All done, now I can just start the VM:

root@serenity:/data/bhyve/images/ > ./start_ub1704new.sh
 ...
Ubuntu 17.04 ub1704new ttyS0

ub1704new login: bilbrey
Password: 
 ...
bilbrey@ub1704new:~$ sudo su -
[sudo] password for bilbrey: 
root@ub1704new:~# sync
root@ub1704new:~# sync
root@ub1704new:~# shutdown -h now

Making Copies and Clones

Okay, a simple script run to start up the VM. That’s good. But we’ve put in a fair bit of work on this VM, what if I want some more of exactly that? I can use ZFS utilities to clone the VM image, do a couple of edits in copies of the files we just created, and we can have one or more copies without all the installation effort and pain. Here goes:

root@serenity:/data/bhyve/images/ > zfs list -rt all zroot/data/vmimages/ub1704new
NAME USED AVAIL REFER MOUNTPOINT
zroot/data/vmimages/ub1704new 16.5G 1.07T 3.32G -

root@serenity:/data/bhyve/images/ > zfs snapshot zroot/data/vmimages/ub1704new@copy1

root@serenity:/data/bhyve/images/ > zfs clone zroot/data/vmimages/ub1704new@copy1 zroot/data/vmimages/ub1704copy1

root@serenity:/data/bhyve/images/ > zfs list -rt all zroot/data/vmimages
NAME USED AVAIL REFER MOUNTPOINT
zroot/data/vmimages 72.9G 1.05T 96K /data/vmimages
 ...
zroot/data/vmimages/ub1704copy1 8K 1.05T 3.32G -
zroot/data/vmimages/ub1704new 19.8G 1.07T 3.32G -
zroot/data/vmimages/ub1704new@copy1 0 - 3.32G -

root@serenity:/data/bhyve/images/ > zfs get origin zroot/data/vmimages/ub1704copy1
NAME                             PROPERTY  VALUE                                SOURCE
zroot/data/vmimages/ub1704copy1  origin    zroot/data/vmimages/ub1704new@copy1  -

[* Editors note – Updated above to add the zfs snapshot command, which did not survive the original cut and paste]

This read/write clone, ub1704copy1, takes about as long as it takes to run the snapshot and clone commands – no time at all, really. But it will be dependent on the snapshot (see the output of the zfs get origin command), and not an independent copy of the VM. So for quick-and-dirty testing, this is a great tool. If, on the other hand, you want to make use of that snapshot to make a long-lived copy of the VM, use the ZFS send/receive functionality:

root@serenity:/data/bhyve/images/ > zfs send zroot/data/vmimages/ub1704new@copy1 \
 | zfs receive zroot/data/vmimages/ub1704copy2

root@serenity:/data/bhyve/images/ > zfs list -rt all zroot/data/vmimages
NAME                                         USED  AVAIL  REFER  MOUNTPOINT
zroot/data/vmimages                         76.2G  1.05T    96K  /data/vmimages
zroot/data/vmimages/ub1704copy1                8K  1.05T  3.32G  -
zroot/data/vmimages/ub1704copy2             3.32G  1.05T  3.32G  -
zroot/data/vmimages/ub1704copy2@copy1           0      -  3.32G  -
zroot/data/vmimages/ub1704new               19.8G  1.06T  3.32G  -
zroot/data/vmimages/ub1704new@copy1             0      -  3.32G  -

root@serenity:/data/bhyve/images/ > zfs get origin zroot/data/vmimages/ub1704copy2
NAME                             PROPERTY  VALUE   SOURCE
zroot/data/vmimages/ub1704copy2  origin    -       -

root@serenity:/data/bhyve/images/ > zfs destroy zroot/data/vmimages/ub1704copy2@copy1

Note that the send/receive ALSO copied the snapshot, so I disposed of the copied snapshot… The send/receive took a couple of minutes for this small VM. A much larger VM would take a correspondingly longer time. Let’s create the scripts to run ub1704copy2:

root@serenity:/data/bhyve/images/ > cp ub1704new-grub.in ub1704copy2-grub.in
root@serenity:/data/bhyve/images/ > cp ub1704new-device.map ub1704copy2-device.map
root@serenity:/data/bhyve/images/ > cp start_ub1704new.sh start_ub1704copy2.sh

root@serenity:/data/bhyve/images/ > vim *ub1704copy2*
 ...

root@serenity:/data/bhyve/images/ > diff start_ub1704new.sh start_ub1704copy2.sh
5c5
< imgname="ub1704new" 
--- 
> imgname="ub1704copy2"
8,9c8,9
< mem=2048
< tap="tap0" 
--- 
> mem=4096
> tap="tap2"

root@serenity:/data/bhyve/images/ > diff ub1704new-device.map ub1704copy2-device.map
1c1
< (hd0) /dev/zvol/zroot/data/vmimages/ub1704new 
--- 
> (hd0) /dev/zvol/zroot/data/vmimages/ub1704copy2

root@serenity:/data/bhyve/images/ > diff ub1704new-grub.in ub1704copy2-grub.in

So, no changes to the grub.in file, as all things are the same, including the name of the LVM filesystem that is root. Remember, even though the VM is now ub1704copy2, it’s a copy of ub1704new, and will be until we run it, change the hostname, and make it different.

The device.map file has to change to point to the new ZFS volume, but that’s all.

And for the start_ub1704copy2.sh file, I really only had to change the imgname variable to make everything work.  But I also bumped the memory up to 4G, and changed the network device to tap2, so that new and copy2 could be running simultaneously. Now let’s boot copy2, change the hostname, and boot it again:

root@serenity:/data/bhyve/images/ > ./start_ub1704copy2.sh
  ...
ub1704new login: bilbrey
Password: 
  ...
bilbrey@ub1704new:~$ sudo su -
[sudo] password for bilbrey:
root@ub1704new:~# vim /etc/hostname
root@ub1704new:~# cat /etc/hostname
ub1704copy1

root@ub1704new:~# sync
root@ub1704new:~# sync
root@ub1704new:~# shutdown -h now

root@serenity:/data/bhyve/images/ > ./start_ub1704copy2.sh
  ...
Ubuntu 17.04 ub1704copy1 ttyS0

ub1704copy1 login: bilbrey
Password: 
  ...
bilbrey@ub1704copy1:~$ ip addr show dev enp0s2
2: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:a0:98:27:32:75 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.108/24 brd 192.168.1.255 scope global enp0s2
       valid_lft forever preferred_lft forever
    inet6 fe80::2a0:98ff:fe27:3275/64 scope link 
       valid_lft forever preferred_lft forever

Okay, we’re running in copy2, renamed the host, and we have an IP address. Let’s start up ub1704new, and ping the copy:

root@serenity:/data/bhyve/images/ > ./start_ub1704new.sh
  ...
Ubuntu 17.04 ub1704new ttyS0

ub1704new login: bilbrey
Password: 
  ...
bilbrey@ub1704new:~$ ip addr show dev enp0s2
2: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:a0:98:d4:48:eb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.136/24 brd 192.168.1.255 scope global enp0s2
       valid_lft forever preferred_lft forever
    inet6 fe80::2a0:98ff:fed4:48eb/64 scope link 
       valid_lft forever preferred_lft forever

bilbrey@ub1704new:~$ ping 192.168.1.108
PING 192.168.1.108 (192.168.1.108) 56(84) bytes of data.
64 bytes from 192.168.1.108: icmp_seq=1 ttl=64 time=0.889 ms
64 bytes from 192.168.1.108: icmp_seq=2 ttl=64 time=0.652 ms
 ...
bilbrey@ub1704new:~$ ssh 192.168.1.108
The authenticity of host '192.168.1.108 (192.168.1.108)' can't be established.
ECDSA key fingerprint is SHA256:yARJTbiR8K2S1pTrYZ8xdDZawGMVqtukB3th2cf1Zjw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.108' (ECDSA) to the list of known hosts.
bilbrey@192.168.1.108's password: 
  ...
Last login: Sun Oct 15 20:26:57 2017
bilbrey@ub1704copy1:~$

There we go. The clones and copies are super fast and easy. I’m told by the interwebs that there are tools called vm-bhyve and iohyve that might be useful, but those are for another day.

*      *      *

DoD announced no new casualties in the last week. Ciao!

 

9 October 2017

Good morning. It’s a holiday for $FIRM, in the midst of a five day weekend (for me), so I’ve only been doing email and tickets for an hour or so, and work is done for the day. A busy weekend. First up, Capclave.

Capclave is a small-ish literary SFF convention put on by the Washington Science Fiction Association. It’s been held at the Hilton Gaithersburg for at least the last several years, and I’ve attended several now. It’s simply lovely. Loads of writers, editors, publishers. I’ve been attending intermittently since 2012. It’s good to catch up with some prior acquaintances and friends, and meet new fans and authors, etc. And oh, yes, I have a stack of new (and old) books to read. I managed all of the Friday and Saturday programming, but skipped Sunday because…

Last night, we went to The Great American Songbook, another fun entry in the Annapolis Shakespeare Company‘s Concert and Cabaret Series. Sally Boyett and a double handful of talented actors and singers entertained us for a couple of hours, singing mostly love songs from the golden age of American show tunes. Great fun, and nice to see several of the actors from the current production of Much Ado About Nothing in a different context. We’re looking forward to seeing that show one more time before the run ends on October 29th. Get thee to Annapolis Shakespeare – I promise you’ll love it.

Now, I have to clean my office and do some other chores.

*      *      *

Our condolences to the families and friends of these fallen warriors:

  • Spc. Alexander W. Missildine, 20, of Tyler, Texas, died Oct. 1 in Salah ad-Din Province, Iraq, as a result of injuries sustained when an improvised explosive device detonated near his convoy.
  • Staff Sgt. Bryan C. Black, 35, of Puyallup, Washington, died Oct. 4 in southwest Niger, as a result of hostile fire while on a reconnaissance patrol.
  • Staff Sgt. Jeremiah W. Johnson, 39, of Springboro, Ohio, died Oct. 4 in southwest Niger, as a result of hostile fire while on a reconnaissance patrol.
  • Staff Sgt. Dustin M. Wright, 29, of Lyons, Georgia, died Oct. 4 in southwest Niger, as a result of hostile fire while on a reconnaissance patrol.
  • Sgt. La David T. Johnson, 25, of Miami Gardens, Florida, died Oct. 4 in southwest Niger as a result of enemy fire.

1 October 2017

“Wouldn’t you prefer a nice game of chess?”

*      *      *

I’ll just leave that there, okay? In other news, I just called my oldest best friend (I’ve known him since I was four) to wish him a happy birthday, which was pleasant and fun. I also left a voice mail for pater and mater, they’re probably out painting the town red. Some of our weekend was normal routine – shopping, roasting coffee, washing the car, going to the office to get some hardware maintenance done during off-hours, doing other chores, but…

Speaking of painting the town red, we had a pretty social weekend ourselves. Last night, we had neighbors in for supper and a board game. And on Friday night, we had a pre-show “Dinner with the Director”, followed by the opening night production of Much Ado About Nothing by the Annapolis Shakespeare Company. What a joy! We enjoyed the lovely prix fixe menu at Luna Blu. Director Sally Boyett didn’t get much supper, she spent the evening at the head of the table regaling the 16 or so attendees with tidbits about the show, the design of the sets and costumes, and what to be looking for as sub-texts. She seemed a bit disappointed that none of us had recently read the text. The show itself was a wonderful production. Put Much Ado About Nothing in the context of “Mad Men” on an American Caribbean island in the late 1950’s. That’s how it was set. And wow, did the new theater impress. Sally managed to get a two-story set into place – very impressive. A cast of 17 actors, fully half of whom were debuting with ASC in this production. We were treated to some fancy period-correct dancing, a little bit of guitar and song, and the words of the Bard. That cast and director earned our standing ovation at the end of the show. Highly recommended.

*      *      *

Lexi wants to know why she can’t have another treat, any time she’d like. What do you say?

Lexi, our mutt, sitting on the carpet in the living room, giving me a look that says, "I want a treat!"

Lexi wants a treat

*      *      *

DoD reported no new casualties in the last week. Glad of that. Ciao!

25 September 2017

That was a chore-filled weekend. The lawns are all lovely and flat, and nearly the whole house is much, much cleaner. But I was bloody exhausted by the time last night rolled around. So sorry.

*      *      *

Only big news is upgrading my MacBook Pro to the latest MacOS release: High Sierra. I’d popped for one of the Beta releases earlier in the Summer, and put in a few issue reports before reverting to Sierra. All of the issues I reported actually garnered responses from Apple, and they’ve all been remediated in the GA release of the OS. Frankly, it’s mostly an underpinnings and foundation release, which I find pretty cool, but doesn’t leave much to talk about. All of my regular use cases are fully functional, so I have no reason to revert and wait for the 11.1 release.

*      *      *

Nothing else of deep interest to discuss at this time. If you’re in the DC Metro area, tomorrow night is Annapolis Shakespeare‘s last production of The Complete Works of William Shakespeare, Abridged. We *did* go to that show a second time last week, because it’s a real hoot, and they’re not running it next summer. If you can, go. Links on the website. Also, opening this week is Much Ado About Nothing. Sally says, “Imagine Mad Men meets 50’s glam!” We’re so looking forward to this show!

*      *      *

DoD reported no new casualties during the last week. Deo gratias.

17 September 2017

A busy week and weekend. We made it down to Melford Pond for a couple of hours of fishing on Saturday morning. Well, Marcia was fishing (and caught a decent-sized catfish that she put back, might I add!), while I walked the dog around the pond. It was a nice start to the weekend. Chores: Mowing the lawns, changing old, worn-out locksets out for new ones that work properly, etc, etc.

*      *      *

Tech-side, I’ve been playing around with Flask (a Python web framework). Yeah, should I find something more bleeding edge? Probably. Maybe I’ll revisit Node shortly. Or write something slightly useful in Go, to get a feel for that language. Why is there always so much more to learn than I have hours in a year???

*      *      *

Reading! You MUST go buy and read Robin Sloan’s Sourdough (Powell’s link here). Seriously. It can be found at your favorite online bookseller and if you ask, probably at the corner bookstore you hopefully still have near you! (Wish I did.) So, as one of the blurbs says, Sourdough does for food what (Robin’s first novel) Mr. Penumbra’s 24 Hour Bookstore did for books. I loved that first novel, and I’ve been waiting with little patience for the second. Sadly, I’m neither a first reader nor an ARC recipient for him (yet). Sourdough is a journey for a programmer, Lois Clary, back from the land of code and Slurry™ to what’s important: Food and relationships.

I’d pre-ordered the book, and it arrived while I was in Maine. Not being an idiot, I didn’t start reading the book until yesterday. I finished late in the evening, having read in stretches between chores, and then because I couldn’t put the book down, all the way to the end. I grew up and worked for years in the stomping grounds of Robin’s characters, which adds to the appeal for me – I recognize places where the names have been changed and the lens covered with petroleum jelly to yield that sexy soft blur. And oh, yeah. I love me some sourdough. That there’s a starter, a culture, a mother prominently featured in the book … nay, a character in the book. Wonderful. Highly Recommended. I’d loan you my copy except that I’m going to be re-reading it sooner than you could get it back to me.

*      *      *

More reading news: I’m a fan and supporter of Strange Horizons, which is a is a weekly magazine of and about speculative fiction. [They] publish fiction, poetry, reviews, essays, interviews, roundtable discussions, and art. They’re in their annual fund drive at the moment. I’d recommend supporting them through their Patreon page, if you like their sort of thing, and you want more of that. They’ve got a week or two to go, so please go support them!

*      *      *

DoD announced no new casualties in the last week, but I’m still missing Jerry.

13 August 2017

We saw a wonderful play at Annapolis Shakespeare Company on Saturday evening: Alice and the Book of Wonderland. It’s a brand new show based on Lewis Carroll’s Alice in Wonderland (well, duh, me), adapted by Sally Boyett and Donald Hicken.  Laura Rocklyn plays a marvelous Alice. The six remaining cast members: Ian Charles, Bill Dennison, Olivia Ercolano, Brian Keith MacDonald, Jackie Madejski, and Johnny Weisgerber – well, they cover the balance of the 24 characters in the show. Over time, each runs off, stage left, and seemingly moments later appeared stage right in fresh costume and makeup. Holy cow, do these folks work HARD to get us up and clapping!

Extra ovations for Mr. Dennison’s twitchy White Rabbit: by turns frightened and arrogant; Mr. MacDonald’s Knave, who clearly takes a page from the Book of Black Adder codpiece fashion; and the superbly evil Red Queen (Crash! Cringe!) played majestically by Ms. Ercolano. Also we were wowed by the costume wizardry of Sandra Spence!

It’s a magical show brought further to life by projections of artwork from Carroll’s original book, as well as a projected Cheshire Cat (portayed by the face of Mr. Weisgerber). From Rev. Dodgeson rowing with the girls to the Mad Hatter’s tea party to the Mock Turtle’s sad song, the show had us riveted throughout. This is a play that is child-friendly, but with sly adult references and pin-point precise topical political commentary.

There are FOUR MORE stagings of this production, next weekend (8/18 – 8/20/2017), before it goes back into the vault. If you’re DC-local, you really should go. Oh, yes. We also just ordered our flex passes for the upcoming 2017/2018 season, and we’re really looking forward to seeing all of these wonderful actors in new roles for another year. Join us, won’t you?

*      *      *

DoD announced no new casualties in the last week, but our condolences to the family and friends of Heather Heyer, who died at the hands of an apparent domestic terrorist (in my opinion), James Alex Fields, Jr., in Charlottesville, VA on August 12, 2017.

 

6 August 2017

Well, Marcia’s home from Michigan. She went up for the week to visit family, and had fun. Lexi spent the week eyeballing me and asking when Marcia was going to be back. This is that look:

Lexi wants Marcia home

Lexi wants Marcia home

Along with doing a bit of remote work each day (and going to the office for a few hours on Tuesday), I got a lot of chores done around the homestead. Garage clean up. Mowing. A couple of days of pressure washing the deck and stamped concrete pad. All-in-all, a fairly productive week. Today we did the shopping, then I roasted coffee and relaxed. No bad thing.

Also, I read a wonderful short story by Chris Pourteau called Unconditional: A Tale of the Zombie Apocalypse. All I can tell you without spoilers is that this is told from the viewpoint of the family dog. Oh, and it’s my current favorite short story of the year. I was getting ready to put on my short list for a Hugo nomination when I learned that the story is from 2015. Ah, well. Good news: I get to go find more of Chris’s work and see if I enjoy it as much. I found the story in At The Helm: Volume 1: A Sci-Fi Bridge Anthology.

*      *      *

Our condolences to the families and friends of these fallen warriors:

  • Tech. Sgt. David Board, 49, of Barboursville, West Virginia, died on August 2 in Kuwait in a non-combat-related incident while deployed in support of combat operations.
  • Sgt. Jonathon Michael Hunter, 23, of Columbus, Indiana, died on Aug. 2 in Kandahar, Afghanistan, as a result of injuries sustained when a vehicle-borne improved explosive device detonated near his convoy.
  • Spc. Christopher Michael Harris, 25, of Jackson Springs, North Carolina, died on Aug. 2 in Kandahar, Afghanistan, as a result of injuries sustained when a vehicle-borne improved explosive device detonated near his convoy.

 

16 July 2017

I guess I’ll just start with the bad news, and get that out of the way. RIP George Romero and Martin Landau. I’ve been a modest fan of George Romero’s work over the years, although I’ll grant that his influence on many of the directors and actors I enjoy most was huge! I am gutted, though, to hear the news of Martin Landau. Yes, yes, yes: we get old, we die. I’ve loved Landau since Mission: Impossible and Space 1999. His skill as an actor was consummate and I mourn his passing.

*      *      *

On the “Ooooh. Interesting!” front, I’m pleased to see that BBC revealed that Jodie Whittaker is to be the thirteenth Doctor. (Apparently) unlike a bunch of johnny-come-lately dudebros, I’m content to see a good actor take a long-established role and stretch the boundaries once again. Yup, I’ve been sad knowing that Peter Capaldi is done, because I’ve enjoyed his Doctor quite a lot. Now: rooting for Jodie, I am.

*      *      *

Next up: great fun. Last night, we saw the Annapolis Shakespeare Company‘s production of The Tempest for a second time. We already had these tickets when we got invited to Opening Night, and frankly, both Marcia and I can’t get enough of this wonderful groups work. For me, I enjoyed being able to focus this performance on some of the side action going on around the main characters in each scene. Bill Dennison gave us Antonio with a deep lack of conscience, portrayed with an extra (and poignantly current) opportunism. Does that come naturally, Bill? Also, new company member Ian Charles’s  Trinculo gave good exasperation in the face of abuse by the sprites, Tony Tsendeas’s Stephano, and John Bellomo’s Caliban. Not least, Jurden Payne’s Ferdinand played marvelously as he fell like a rock for Olivia Ercolano’s Miranda. All such wonderful actors. The direction. The setting. (The humidity and mosquitoes, oh my!) There’s one more week to go, if you’re local or visiting, try to get tickets!

Oh, hey: this ASC Tempest page has several pictures from Opening Night. You can even play Spot the Brian!

Next up: Alice and the Book of Wonderland.

*      *      *

DoD reported no new casualties in the last week. Ciao!

9 July 2017

I’ve got a shaking frightened dog sitting on my lap, thanks to the asshats who are once again setting off fireworks in the vicinity. This is going on 9 days, now. Poor puppy…

*      *      *

More Annapolis Shakespeare fun: A bit on the spur of the moment, we decided to accept an invitation to the reception for opening night of their production of The Tempest, running in the garden at Charles Carroll House in Annapolis. Yup, this means that we’re seeing this production twice, and I couldn’t be happier. Opening night was a joy. (They have one picture up at this time on their Tempest event page on the Book of Faces. Marcia and I are in the background well back of the Sprite in the aisle.)

Starting a flash and a bang or five, the production opens with an innovative bit of magical of fabric manipulation to evoke the storm and the ship beset. As the storm and sea recedes, the stranded characters are revealed laying on the beach (err, stage … well, grass, to be pedantic). As they wake and wander off onto the island, they are beset again, by enchantment and sprites. This fine production brings the audience deep into Shakespeare’s tale, and doesn’t let go until the lights fade to black.

I’ve not seen The Tempest in decades, so the story is fresh for me. Shakespeare’s superb command of language and meter yields the directors, Donald Hicken and Sally Boyett, superpowers to wield in staging the show. The staging and choreography complement the lovely setting, providing the actors a fine canvas upon which to ply their craft. While all of the cast are outstanding (unsurprising with this Company), Laura Rocklyn’s Ariel shines both in her interactions with Brian MacDonald’s excellent vengeance-obsessed Prospero, and as she bedevils the castaways with the assistance of the Sprites. Jordan JC Payne’s Ferdinand and Olivia Ercolano’s Miranda as the young lovers are sweet and marvelously played. The big surprise for me was John Bellomo’s less-than-civil Caliban – he played the role powerfully and with great humor.

How much did we like this production of The Tempest? We’re going to see it again during this show’s short run.

*      *      *

Our condolences to the family and friends of Pfc. Hansen B. Kirkpatrick, 19, of Wasilla, Alaska, who died on July 3, in Helmand Province, Afghanistan, from wounds received during an indirect fire attack.

2 July 2017

Hey, y’all. I’ve been busy. But first:

Annapolis Shakespeare Company. They made us happy again! This is our second season enjoying their production of The Complete Works of William Shakespeare, Abridged, in the courtyard at Reynolds Tavern. Supper first, then the show. We had Bill, Brian, and Johnny on the bricks Tuesday evening, bounding through this rollicking tour of 37 plays in about 90 minutes. I’ll be the first (or perhaps second) to admit that most of the plays get fairly short shrift in the production. And I was deeply disappointed that, for the second year, they continued to ignore two of the famous adaptations of the Bard’s work: Reservoir Dogs and Pulp Fiction. That said, we love, love, love this company and this show. The company was also in rehearsals for two upcoming shows, The Tempest and Alice and the Book of Wonderland. Because the boys were working, a few of the other actors took advantage of the night off to take in the show as well. We spotted and went to say hello to Olivia and Laura when we arrived; Sue got there later. They’re in weekly production for Abridged through September, so if you’re in the area or going to visit, take in the show. You won’t be disappointed. And you may see us there again, it’s worth doing again. And again. Highly Recommended.

Yes, we’re already scheduled for The Tempest and Alice. Be there.

*      *      *

Work this week was productive. This weekend: chores, and remote work today: patching of systems against a recent CVE. A little bit of telly, and a head injury rounded out the weekend. Well, not super exciting, that last. I was hanging a couple of pictures up high in Marcia’s office, and turned while standing on a chair. The room fan was spinning and clipped me in the forehead, leaving two shallow parallel scratches. I really should have stayed up there, turned my head to the side, and let it clip me one more time, leaving a ‘#’ mark, as in #ouch!!!

*      *      *

DoD announced no new casualties in the last week. Gratitude. Ciao!