reading digital comics

This morning, I decided that I’d like to read the Dresden Files comic series that I bought as part of a Humble Bundle last year. I’m using Comic Zeal on my iPad to read DRM-free digital comics. I’ve been using it for a while, and it works pretty well.

Getting comics onto the iPad is, theoretically, easier than it used to be. In the old days, there weren’t too many apps that had good support for loading files into them from external sources. GoodReader was the first iOS app that I can think of that had good support for loading in files from multiple sources. But now, there’s a lot better support for this kind of thing, due mostly to the support for document providers added in iOS 8. So Comics Zeal now supports loading in files from iCloud, DropBox, Google Drive, and OneDrive (and possibly more, but those are the ones I’m using).

Humble also now has a web interface where you can access and download all past purchases. And Safari now lets you download and open files in specific apps, and Comic Zeal supports this. So my first thought was to go to the Humble site, sign in to my account, and download the comics. The series I want to read is a five-issue series and all five issues are separate files. So I went ahead and tried downloading the first issue from the web. It worked well enough, but it took a long time to download, and the default file name under Humble’s library is a bit weird, so I thought maybe I should try a different method.

So I booted up my desktop PC, where I know I already had the comics downloaded, and copied them up to my Google Drive. After waiting for them to sync up, I then tried to pull them into Comic Zeal. No dice. I could see them, but clicking on them did nothing. After struggling with that for a while I gave up and decided to sync them across the old-fashioned way, with iTunes File Sharing. That worked.

So, after all that, I just sat down and opened issue #1. The cover looks good. Then, I swipe to get to page 1. And… Comic Zeal crashes. Now, this is probably not Comic Zeal’s fault, entirely. All sorts of things could be wrong here; the CBZ file could have gotten corrupted at one of several stages. But it’s frustrating, either way.

So I downloaded the file again from Humble, and checked the MD5 checksums on both copies, and they’re both identical. And Humble lets you see the MD5 on their web site, and that’s the same too, so the file isn’t getting screwed up on download. So I gave up on the CBZ file and downloaded the PDF. Then I copied that up to Google Drive and tried to download it into Comic Zeal. That worked, so I guess the original issue with Google Drive is that it doesn’t want to let you download CBZ files, but PDFs are ok. (Which doesn’t make any sense, but ok.)

And I opened the PDF in Comic Zeal, and I can (at least) get to page one now, so here’s hoping I can get through the rest of the issue. Then, we’ll find out if the CBZ files for issues 2 through 5 are good, or if I’m going to have to replace them with PDFs too.

Oh, and the series I’m trying to read is War Cry, which should be pretty good. I haven’t read any Dresden comics before, but they’re co-written by Jim Butcher, and they’ve gotten generally positive reviews, so I’m hopeful.

But if I’d had the trade paperback instead of digital files, I’d probably be done reading the whole thing by now!

iOS Audiobook players

I don’t listen to a lot of audiobooks, but I listen to enough of them that I want to have a good audiobook player on my phone. On iOS, the audiobook features in the old music app were good enough that I never bothered looking elsewhere. But, since Apple moved the audiobook stuff into iBooks, there’s one issue that’s been bothering me. They don’t show actual track names anymore. They just show “Track 1”, “Track 2”, and so on. I don’t know why they did this. I can’t imagine something like this helping anybody. It just serves no purpose, and makes it that much harder to figure out where you are in a book. (See this thread on the Apple discussion forums for more complaining about this, and related audiobook issues.)

So I’ve been looking for an alternative audiobook app for my iPhone. Simple searches in the app store and Google didn’t turn up much in the way of good candidates. Book Mower looked the most promising. But I gave it a try and really didn’t like the user interface. I don’t know, it might work for some people, but it really didn’t work for me.

IMG_1332
iBooks track listing
iBooks user interface
iBooks UI
Book Mower user interface
Book Mower UI
Book Mower track list
Book Mower track list

I also tried the Audible app, which does have the ability to play non-DRM’ed files, in addition to their own stuff. Most of the audiobook content that I have is in the form of DRM-free MP3 files that I’ve gotten either from Big Finish or that I’ve ripped from audio CDs. (Or copied from MP3 CDs.) The Audible app does show track names, but not always the right ones, and, for the books I was testing with, it showed the tracks in apparently random order. So that’s really a deal-breaker!

Audible track list
Audible track list

So, not having found anything really useful, I went a bit further afield. I found one thread suggesting an app named Ecoute, which is meant as a music player, but apparently works reasonably well for audiobooks too. And another thread mentioned Downcast, which is a podcast player, but might also work for audiobooks. I didn’t actually get around to trying either of those, but I might come back to them at some point.

Eventually, I got the bright idea to look at the Big Finish forums, since it seemed like this problem would also be affecting other folks who listen to their stuff. I quickly found this thread with a lot of gripes about the iBooks app. One of the folks posting in the thread mentioned that he was working on an audio player app that would work better for stuff like the Doctor Who dramas. He released it just recently. It’s called Undulib, which is an odd name, but that’s ok.

Undulib track listing
Undulib track listing
Undulib user interface
Undulib UI

I bought it and installed it, but I haven’t had much of a chance to use it yet. The track listing includes titles, which is the main thing. But the “time remaining” indicator is kind of weird. The app pulls in whatever audiobooks you’ve got in iBooks, so no problems there. I’m not sure if it updates the “last played” date (back into iTunes) like iBooks does, but it won’t be the end of the world if it doesn’t.

So now that I’ve spent so much time messing around with all these apps, I should really relax tonight and listen to a little Colin Baker adventure!

Amazon confusion

There has been much already written in reaction to the big article about Amazon that ran in the NY Times over the weekend. I’ll admit that the article really bothered me. It seems like most of the news about the ways in which Amazon treats its employees, contractors, and suppliers over the last few years has been overwhelmingly negative. Enough that it almost seems immoral to continue doing business with them as a customer.

Some of the reaction to the article has been pretty funny, such as this tweet from Dr. Drang or this article by Andy Borowitz from the New Yorker.

The response from Jeff Bezos seems reasonable, and this second follow-up item from GeekWire gives a little more perspective from the employee level. So the truth is in there somewhere — it’s probably not all as bad as the NY Times piece makes it out to be, but there are likely some bad managers and bad teams at the company, and a culture that sometimes allows that kind of thing to grow and thrive.

So I think I can continue to order my Breathe-Right strips from Amazon without being too concerned that I’m propping up a company that’s completely morally bankrupt. Still, I’ve been thinking about Amazon alternatives for some time now. But there aren’t a lot of good ones, in certain areas.

For books, I was looking at Abe Books and Book Depository, but they’re both owned by Amazon, so that doesn’t really help. Barnes & Noble is an option, but I’m not sure they’re better than Amazon, just less successful. Powell’s is probably a good option, and not owned by Amazon, as far as I can tell.

For ebooks, the picture is even less clear. I’ve had a Kindle since the very first model, and I really like the things. About the only real competitor to the Kindle now is Kobo. They’ve got a pretty good product in the Glo HD, judging from some of the reviews I’ve read. In terms of actual ebooks, Kobo’s bookstore looks pretty good, but I’m guessing their selection likely isn’t nearly as large as Amazon’s.

For general merchandise, I could go to Walmart.com, but I sure can’t make a case for Walmart being a better choice, morally, than Amazon.

So, in a nutshell, I’m not dropping my Amazon Prime subscription just yet. But I am alarmed about how large they’ve gotten, and how little competition they seem to have left, in certain areas, like books and ebooks. I’m going to try to give more of my business to smaller retailers, when I can. And I’m going to continue to try to buy DRM-free ebooks when possible, so it’ll be easier for me to switch away from the Kindle ecosystem if I ever decide to do that.

Philadelphia Museum of Art

I went to the Philadelphia Museum of Art today for, I think, the first time. I don’t get into Philly nearly as often as I go into New York, largely because it’s a lot harder to do by public transportation.

The Impressionism exhibit that they’re running now is really nice. I’d like to go back and see it again, on a weekday maybe, when it’s less crowded.

a little more griping about Windows 10

My VS 2013 update did finish installing, eventually, and now VS seems to be working fine. No clue what went wrong there. (Or maybe that’s just how long this update takes to install? No, that can’t be right…)

And I just bought Start10 from Stardock ($4 to upgrade from Start8) and installed it. The Windows 10 start menu isn’t horrible, but Start10 is better. The install was quick and easy.

Meanwhile, I decided to try playing solitaire. Well, that was a bad idea. When I started up “Microsoft Solitaire Collection” it gave me an error code while trying to sign in, and an URL to the FAQ. The URL wasn’t clickable and couldn’t be copied to the clipboard, so I had to type it in manually. Then, the URL turned out to be a redirect to a Facebook page, which is kind of weird, but ok, I guess. The FAQ says that the error code I got likely indicates that XBox Live is down. Checking on that, I see that it is, and least partially.

So here’s my full list of WTFs involved in trying to play Solitaire on Windows 10:

  1. Tying solitaire to XBox Live.
  2. Showing a numeric error code instead of a useful description for the error.
  3. Showing a link to an FAQ page that isn’t clickable and can’t be copied to the clipboard.
  4. Having your FAQ hosted at Facebook, when you’re Microsoft, and certainly have the ability to host your own web pages.
  5. XBox Live being down for no good reason.

Well, it’s possible to play solitaire, even without XBox Live. but I didn’t really want to play solitaire anyway, I just wanted to see what it looked like. So, mission accomplished, I guess, and I got some entertainment value out of the error message, so there’s that.

Visual Studio 2013 update 5

After upgrading my laptop to Windows 10, I thought about maybe taking a shot at installing Visual Studio 2015. I may do that eventually, but I don’t have any reason to do it right away. But last night, I decided to at least apply the latest update to VS 2013, which is update 5. I’ve had some bad luck with Visual Studio updates in the past (going back to VS 2005 and 2008), but recent updates have been pretty smooth. Well, I don’t know what went wrong with this one, but I started installing it last night, and it’s still going this morning. It seemed to hang at about the halfway point. Rather than cancel it, I decided to just let it keep running overnight.

When I woke up this morning, it had made a lot of progress. Right now, it’s at the step that says “Configuring your system. This might take a while.” So it’s pretty close to the end, I think. I guess I’ll let it keep going while I’m at work, then see if it’s done when I get home. So this could well be a full 24-hour update install. I understand that updating a complex product like Visual Studio isn’t easy, but really, there has to be a better way to do it.

Windows 10 upgrade – ThinkPad

I upgraded my ThinkPad to Windows 10 yesterday. It was a pretty uneventful upgrade. All of my software seems to work, including some stuff that I thought might be dicey, like Norton, VirtualBox, and OpenVPN. (Well, technically, I installed an upgrade to VirtualBox right after the Windows 10 upgrade, so I’m sure that fixed up the network stuff and whatnot.)

The new start menu is OK, I guess, but I’m not super excited about it. I was using Start8 with Windows 8, and I’ll probably install Start10 at some point.

I haven’t had a reason to play around at the command-line much yet, but I’m happy to see that they’ve made some (much overdue) improvements to it.

The ThinkPad upgrade was smooth enough that I now feel like it would be relatively safe to try the upgrade on my main desktop PC. I may do that next weekend, if I’ve got nothing else to do.

Happy Birthday

gloria80

Today is my Dad’s birthday, and also our friend Gloria’s birthday — her 80th. She had a little party yesterday, and I got a good photo of the two of us. She was a good friend to my parents, and she’s been a good friend to me since they passed away.

I don’t often post pictures of myself on the blog, but this one is okay.

Windows 10

I haven’t upgraded either of my Windows 8.1 machines to Windows 10 yet. Neither machine has popped up a notification saying that it’s ready yet. Per Microsoft’s FAQ, “Your notification to upgrade could come as soon as a few days or weeks.” I know I can just download an ISO, and I might do that if I get too bored this weekend. But I’m not in a hurry. I’m probably going to use Start10 rather than the fancy new start menu anyway, so Windows 10 will look much like Windows 8 (with Start8) and Windows 7 for me.

I’m thinking about watching a few Scott Hanselman videos today to learn a bit more about Windows 10. And I should probably run backups on both machines too.

fun with credit card expiration dates

I’m doing some work on credit card processing right now. This is all related to my company’s upgrade from Dynamics AX 2012 RTM to 2012 R3. There were major changes to the credit card processing code in R2, and we’ve customized the code from RTM quite a bit, so there’s a lot to do. I’d like to write more about it, but it probably wouldn’t be of any general interest, plus I don’t want to get into any company-specific stuff.

But one very minor thing came up yesterday that was a little bit interesting. I noticed a support ticket from a user who was entering a new card, and wanted to enter an expiration date that wasn’t shown in the drop-down. (It was too far in the future.) This didn’t have anything to do with the upgrade, per se, but it made me curious enough to look at the code in RTM and in R3, to see what was being done. I was curious if maybe we had something in there like this example from The Daily WTF, or something where the upper-limit on the year was hard-coded to a specific year.

Well, it’s not quite that bad, but it is a bit questionable. In RTM, there’s a drop-down that is populated with years from (current year) to (current year + 7). In R3, it’s pretty similar, except that, when editing the expiration date after initial entry, you can go to current year + 8. (That’s probably an off-by-one error, rather than an intentional extension of the range.)

This all made me wonder what a reasonable upper-bound for expiration year would be, which lead me to this Stack Overflow question, which seems to indicate that there’s no agreed-upon maximum, but that it’s probably safe to go with 15-20 years. So Dynamics AX could stand to be be a bit more flexible on that range.

The other thing that bothers me about the way AX handles expiration dates is that (in 2012 RTM) they’re stored in the database as “MMYY”, which makes it difficult to sort and filter out expired cards. I was hoping that would be corrected in R3, but they’ve only changed it to “MM/YYYY” (without any leading zeroes on the month), which has the advantage of being more easily-readable by a human, and also of storing the full 4-digit year, but the disadvantage of being even more difficult to sort on, since the year sometimes starts in the 3rd position and sometimes in the 4th.

And let me end this blog post with a link to my very favorite publicly-documented method in AX, related to credit card processing: CreditCardWizard.codeCoverageFudge. I’m not entirely sure why this method exists in the released product, but I’m guessing it was added to fudge the code coverage numbers in some unit testing metrics. Maybe a certain percentage of code coverage had to be achieved, but there was no easy way to write meaningful tests for the remaining uncovered code, so they just wrote a method that does nothing, and a unit test for it?