TextExpander revisited

Since my previous post about TextExpander, they’ve revised their plans a bit. They’re going to keep the current (non-subscription) version around for a while, and they’ve changed the upgrade pricing so that, if you switch to a subscription, you get a lifetime 50% discount instead of just a one-year discount. So that’s pretty cool, but, at this point, I’ve set up all of my snippets in LaunchBar, and they’re working out OK, so I’ll probably drop TextExpander anyway.

There is an interesting blog post about TextExpander, and subscription software in general, at MacDrifter, from before the announced change. It’s got a lot of good info and links in it.

One of the reasons why I was thinking about moving away from TextExpander anyway is the way it handles “secure input” fields. Basically, whenever you’re in a secure input field, TextExpander can’t see what you’re typing, so it can’t expand anything. Which makes sense, and isn’t their fault. But they insist on popping up a notification telling you that, every time you’re in a secure input field. So that’s a bit distracting, and sometimes gets in the way of something that’s behind the notification. And there’s no option to turn off these notifications.

With LaunchBar, you’re not really doing general-purpose text expansion; you need to hit the special key combo to bring up LaunchBar any time you want to expand a snippet. So that’s a bit of a limitation, but it’s also an advantage, since that key combo works wherever you are, so there’s no issue with secure input fields. So I’m probably going to stick with LaunchBar for snippet expansion and give up on TextExpander.

Kindle Oasis

I’ve been thinking about buying a new Kindle for a while now. Since the rumors of a new Kindle surfaced, I decided to hold off and wait to see what they came out with. Well, they just came out with the Kindle Oasis, which is pretty cool, and I want one, but it costs almost $300. So I think I’m going to wait until the next time the Paperwhite goes on sale, and get one of those.

TextExpander subscriptions and related software

I just read the news about TextExpander’s new subscription model. I use TextExpander on my Mac and my iOS devices, and I think it’s good software, but I can’t really see spending $5 per month to keep using it. (Technically, $2 per month for the first year, with their upgrade pricing for current users. But only for the first year.) They have said, in a follow-up blog post, that the old version will keep working for a while longer, so I don’t need to be in a hurry to switch to something else, but I’ll need to switch to something else eventually.

I’m a little worried, as I’ve seen a number of other software vendors take tentative steps toward switching to a subscription model. In many cases, a big part of this is switching from using iCloud or Dropbox for syncing, to a proprietary sync model. That, in itself, is a little worrying too. With Dropbox or iCloud, I have local access to my data, and have it automatically backed up to a reliable cloud provider.

Day One 2 switched from using Dropbox or iCloud to using their own sync service. But they haven’t switched to subscription pricing. (The new version required a new purchase, though, on both Mac and iOS.) The nice thing about the new sync service is that they can offer stuff like IFTTT integration and (at some point) a web front-end. I’m using Day One on a semi-regular basis now, but if they switch to a subscription model, I’ll probably just switch over to using Evernote for journaling, since I’m already paying for Evernote. (Speaking of Evernote, I don’t mind paying for that. I’m getting a lot of use out of it.)

1Password has also started moving towards proprietary sync and subscription pricing, introducing a team plan last year, and a family plan this year. I’m still using the regular single-user version on iOS, Mac, and Windows, and I’m fine with that, and hoping that they don’t move to a subscription model. But, if they do, there’s a fair chance I’d pay for it, since it’s such a valuable piece of software.

Getting back to TextExpander, I’ve been looking at alternatives. On Windows, I use AutoHotKey, which is free open-source software. I’ve been using that for a long time, and I’m really happy with it, so I don’t need to make any change there.

On iOS, I do use TextExpander, but I really don’t get much value out of it. iOS doesn’t really allow an app to grab all the keyboard input on the phone, for obvious reasons, so TextExpander on iOS has to rely on two mechanisms: (1) built-in support for it in certain apps, and (2) a custom TextExpander keyboard. The app support is good, but it’s not in enough apps. (Specifically, Evernote and the Apple Mail app don’t have it.) And the custom keyboard is useful, but it’s missing a lot of capabilities of the regular system keyboard, so I don’t want to use it full time, and it’s a bit of an inconvenience to switch back and forth between keyboards. So, really, I think I can drop TextExpander on iOS and just not bother with text expansion, outside of what I can do with the built-in iOS text expansion.

On the Mac, I do get a good bit of use out of TextExpander. But there are a number of alternatives to it. In particular, I’m thinking about switching to LaunchBar snippets. I’ve already paid for LaunchBar, and I know I’m not using more than maybe 20% of its capabilities, so I’m going to look into it.

Also, this blog post from Craig Pearlman goes over some of the same ground I’ve covered here, and mentions Typinator as a possible alternative. I wasn’t familiar with Typinator, but it looks like it might be a good alternative.

FreakAngels

FreakAngels was a web comic by Warren Ellis and Paul Duffield that ran from 2008 to 2011. I was aware of it while it was running, and took a look at it at some point, but I never got around to reading it all the way through, from the beginning.

Over this past weekend, I was looking for something different to read, and decided to start in on FreakAngels. It’s a really good series. It’s all free to read on the web. It’s also collected in six trade paperbacks. I was thinking about picking those up on Comixology, where they’re $10 each. But today, I was browsing through the discount trade paperback boxes at my local comic store, and found all six volumes in there for $5 each! So I picked them all up and now I have a nice collection of the whole series.

I got almost halfway through it last weekend, so maybe I can finish it this coming weekend. It’s a post-apocalyptic SF series where the main characters all have special abilities, and somehow caused something very bad that’s pretty much destroyed civilization in England. (It’s unclear exactly what that was, or what happened in the rest of the world.) The series is set several years after the event, when they’re trying to rebuild. It’s got some interesting social and science/engineering stuff in it relating to how they’re rebuilding, and how they all relate to each other, and how they use their powers. And it’s long enough that there’s room for a lot of character development and nuance.

I’m finding myself getting very involved in the story and invested in the characters, so that’s a good thing. I’ve been following Warren Ellis for a long time, and I’ve read a lot of his mainstream comics work, but very little of his more oddball creator-owned work. I should probably read more of that. And I should read his prose novels too. (So much to read, so little time.)

Thinking about a new Kindle

I resisted buying a new Kindle Paperwhite when they were on sale for $99 a few weeks ago. (The regular price is $119.) But now they’re on sale for $89, and I have a $50 gift certificate that my brother gave me for my birthday last month. So that’s tempting.

But I’m glad I held out, since it looks like a new Kindle is coming next week. Details are sketchy, but it’s probably worth waiting until the new one is announced before buying a Paperwhite. Of course, if the new one is a new high-end Kindle like the Voyage, I’ll probably want a Paperwhite rather than that anyway.

The thing that really motivated me to start thinking about a new Kindle, by the way, was reading a book with a bunch of footnotes recently. My old Kindle doesn’t handle that well, but the newer ones, including the Paperwhite and Voyage, show footnotes in a popup window.

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.