Bat-Books

I went on a bit of a bat-binge last week, reading a bunch of Batman comics. I read Grant Morrison’s Batman and Robin 1-6, Paul Dini’s Streets of Gotham 1-7, Scott Snyder’s Batman 8-13, and Tim Sale’s Tales of the Batman hardcover.

The first two were in hard-copy, single-issue form. These were some of the last comics I bought from Westfield before I stopped buying monthly comics in 2009. The Snyder books were digital single issues from Comixology. And the Tim Sale book was a hardcover that I picked up at a convention some time ago.

Batman and Robin and Streets of Gotham were coming out at the same time, and dealt with the same characters: the Dick Grayson Batman and Damian Wayne Robin. Neither book really covers Dick’s decision to take over as Batman; I imagine that was covered somewhere else, though I’m not sure where.

Morrison’s Batman and Robin book was a fun read. The Frank Quitely art on the first three issues was great; I wish he could have done more. I’ll probably pick up the rest of Morrison’s run on this book.

The Streets of Gotham book was more of a mixed bag. Paul Dini wrote the first few issues, then there was a fill-in written by Christopher Yost, then Dini came back. And there’s an interesting backup featuring a new Manhunter character. The art on this book is by Dustin Nguyen. I loved his work on Wildcats 3.0, but he has a different inker here and the whole look of his art seems a bit different. It’s still good, but I was hoping for something more like his Wildcats work. I might pick up the rest of the run of this book, but I’m not sure.

Both of these books ran from 2009 through to the New 52 relaunch in 2011. I don’t really know if either book has a satisfying conclusion, or if they were just cut off in mid-story, leaving dangling plot threads. If it’s the latter, then it might be an exercise in frustration to pick up and read the remaining issues. I’ll have to read some reviews first and see if I can figure that out.

I’ve read only a few books from the New 52. I think the whole idea was interesting, and many of the books were well-received, but it’s all a bit too much for me to follow. I did pick up the first year of Scott Snyder’s Batman book some time ago, when it was on sale at Comixology. I read the first storyline a while back, and the second one over the weekend. I had mixed feelings about the first story, “The Court of Owls,” but the second one, “The City of Owls,” was pretty cool, and finished out the overall “Owl” story nicely. Greg Capullo’s art on this book is great. And the conclusion to the Owl story is fun and fast-paced. It’s really more of an action-movie Batman than a “detective” Batman, but that’s OK sometimes. I’m not sure if I want to read even further into Snyder’s run though. The next story would be “Death of the Family“, and that one sounds like it might be too grim for me. And I’m not that fond of cross-over stories. (The Owl story had a bunch of cross-over issues, but I skipped them, and still understood and enjoyed the story.)

I also listened to an episode of Pop Culture Happy Hour today, discussing Glen Weldon’s new Batman book. It sounds interesting. I might pick this one up. (Though of course I already know more than anyone needs to know about Batman’s history.)

In other Batman-related news, I still haven’t seen Batman vs Superman, and I’m OK with that. I’ll get around to it eventually, but I may wait until it’s out on DVD.

Database snapshots

At work, we do our Dynamics AX development on VMs, set up with a full install of AX (SQL Server, AOS, and AX client). Prior to our R3 upgrade, we were using local VMs, under VMWare Workstation. This worked out quite well. One of my favorite things about this setup was the ease with which I could take VM snapshots, allowing me to run destructive tests, then roll back, fix bugs, and rerun the tests without having to jump through hoops to reset my environment or set up new test orders, or whatever. It was all pretty clean and easy.

But, after we upgraded to R3, we set up new VMs on vSphere. There are a number of advantages to this, but one disadvantage is that I don’t have rights on vSphere to snapshot my own VM. (I’m sure I could ask an admin to snapshot my VM, but the typical testing cycle of snapshotting, rolling back, fixing code, snapshotting again, etc., would probably annoy the admins.) So I’ve been looking for an alternative way to manage testing destructive processes.

I’ve settled on using SQL database snapshots. AX 2012 R3 stores all data in one database, and all code in a separate model database. (Versions prior to R2 mixed code and data in one database.) I’ve worked out a process by which I can pretty quickly take a snapshot, run my tests, delete the snapshot, and start again.

Given a database called DAX12_PROD, here’s a quick run-down on how to execute this process.

(1) Stop the AOS server.

(2) Create a snapshot:

CREATE DATABASE DAX12_PROD_SS1 ON
 ( NAME = DAX12_PROD, FILENAME = 'E:\your_sql_data_folder\DAX12_PROD_SS1.ss'
 ) AS SNAPSHOT OF DAX12_PROD

(3) Start the AOS & run your tests.

(4) Stop the AOS.

(5) Restore from the snapshot.

ALTER DATABASE DAX12_PROD
 SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE DAX12_PROD
 FROM DATABASE_SNAPSHOT = 'DAX12_PROD_SS1'

(6) If you’re done, then drop the snapshot.

DROP DATABASE DAX12_PROD_SS1

(6) Start the AOS.

So that doesn’t take too much effort and is pretty quick to run. The snapshot file is a sparse file, created with the same size as the actual database file, but not actually taking that much space on disk. So you don’t need to have a ridiculous amount of free space on your VM (as long as your test isn’t changing a ridiculous amount of data).

And yes, I know that it would be so much better if I could just run unit tests that don’t touch actual data, but it’s nearly impossible to do that for a lot of the stuff I have to do in AX. There are some interesting things you can do, in certain scenarios, like getting creative with setTmp, but that’s too simplistic for a lot of the testing I need to do.

my new iPhone SE

I successfully picked up my new iPhone SE from UPS yesterday. Weirdly enough, everything went smoothly with that. (I have a history of problems with this sort of thing…) I used these instructions to transfer everything from the old phone to the new one, and again everything went smoothly.

So now I have a phone that looks almost identical to my old phone, only with better battery life, more memory, and a few other improvements.

I’m now working on getting the old phone ready for trade-in. It took three tries, but I finally managed to get through the process on the BrightStar site, Apple’s partner that handles trade-ins. (They really don’t have the whole usability thing figured out.) I just need to wipe it and pack it up now, and I should get $150 for it. That $150 will be Apple Store credit, though, so I’m not sure what I’ll do with that. It would be enough to pay for half an Apple Watch, though I’m still not convinced I need one of those.