Clean Code, Visual Studio, Windows 11, and a bit more on ebooks

I wanted to add some more notes about the whole Kindle, EPUB, MOBI, etc. thing that I’ve been blogging about in my last few posts. As I mentioned a few posts back, I’ve been working my way through the Clean Code learning path in O’Reilly. Since I’m probably going to lose access to O’Reilly before I’m done with that, I thought I’d buy a copy of the Clean Code book, so I could finish reading it at my leisure, and to have it for later reference. With tech books, I usually like buying a DRM-free ebook directly from the publisher, when possible. In this case, I initially had some trouble finding that, but eventually figured out that it’s purchasable through the InformIT site. I bought the Robert C. Martin Clean Code Collection ebook, which contains both Clean Code and The Clean Coder. I had a discount code, so it was about $40 total.

I copied the EPUB, MOBI, and PDF files for the book to OneDrive. There are a number of ways I can read an ebook on my iPad, if it’s DRM-free and available in multiple formats. For this one, I wound up sending it from OneDrive into my Kindle app, as a MOBI file. That method still doesn’t support EPUBs. And it will copy the file up into my Kindle library, which is nice. I don’t think I’d ever copied anything into the Kindle library that way before, but it worked fine. I also copied the PDF into GoodReader. The code listings in the MOBI version look a little weird, which is a common problem with tech ebooks, so it’s nice to have the PDF handy as an alternative.

Clean Code has some example refactorings that are fairly interesting. They’re all in Java, but I thought it might be interesting to take the original Java code for one of the examples, convert it to C#, get it working, then work through some refactoring that’s similar to what Uncle Bob does in the book/videos. I found some of the code for the examples in GitHub under the Clean Code Kata user account. (I’m not sure if that’s an “official” account for Bob Martin or his organization, but either way, the code is there.)

This idea to convert some of the examples to C# and work through them was prompted in part by a desire to set up a .NET dev environment of some sort on one of my personal machines, and to maybe experiment a bit with some of the more recent .NET stuff, like .NET 6 and VS 2022. I realized that I don’t currently have any dev stuff at all set up on my desktop PC, my MacBook, or my Lenovo laptop. The MacBook is new, so I just haven’t set any dev stuff up yet. The Lenovo was bought in 2020, and I haven’t gotten much use out of it at all. And I’ve been trying to keep the desktop PC free of any heavyweight dev tools, since I just want to keep it clean for personal productivity stuff. After going back and forth on a few possible setups, I decided to install Visual Studio 2022 (Community edition) on my Lenovo laptop. I considered just installing the .NET 6 SDK and Visual Studio Code, which would have been much more lightweight, but I’m used to using the full VS product, and I can’t see a reason not to use it. And the Lenovo is the best place to install it, since I can wipe out that machine entirely and start fresh if things get too messed up. I’ve also recently upgraded that laptop to Windows 11, so this was also an opportunity to (finally) give that a try.

Of course, I’ve had other things to do this weekend too, so I’ve only gotten as far as installing Visual Studio and git, and tweaking some settings. Maybe I’ll actually do some programming next weekend. (Or maybe I’ll get distracted by something else, and the whole thing will fall by the wayside.)

more Kindle stuff

The last couple of Kindle-related posts, and the news about MOBI vs EPUB support, got me thinking a bit today. I remembered that I had a bunch of old DRM-free books from Tor.com that I’d never gotten into my Kindle library. I had manually copied a bunch of them over to my old Kindle, via USB, but that doesn’t get them into the cloud library, and I hadn’t copied them over to my new Kindle. So I decided to waste some time today and copy some of them up to the cloud, and also add them to Goodreads.

I decided to try the Send to Kindle desktop app (for PC) this time. The app is a little clunky, but it works. Sadly, it only allows you to upload one book at a time. Also, it lets you edit the metadata for the book, but I think that metadata gets overwritten once the book is in the cloud. The files I uploaded were actually .PRC files, which I think is basically the same as .MOBI, though I’m not entirely clear on that.

I also considered copying these files into Calibre and then pushing them to the Kindle from there. I keep thinking that I should start actively using Calibre, but I keep not doing that. I’m a little worried that if I start pulling stuff into Calibre, organizing it, and editing metadata, I’ll never stop. Maybe one of these days, when I’m bored, I’ll give it a try.

The files I copied over today were all free Tor books from 2008 and 2009. I’ve been downloading free Tor books on and off since 2008. I’ve got a bunch from 2008-2009, then more from 2017-2020. Then I forgot about the whole free book thing in 2021, and didn’t download anything. Today, I downloaded a bundle of three books from Tor, for the first time since late in 2020. No clue when/if I’ll actually read those, but hey, I’ve got them.

I’ve been concentrating on reading older books this year, getting through some stuff from old Humble bundles mostly. Looking at my Goodreads “want to read” list, I see that it’s currently at 493 books. Sigh. I keep needing to remind myself that having a lot of books to read is good. It’s not a list of work I have to do, it’s a list of fun I can choose to have…

Kindle EPUB support

This is a follow-up to yesterday’s post about file formats. I saw an article on The Verge today about Amazon’s support for EPUB on Kindle. The article is really just restating this other article from Good E-Reader. Both articles, I think, are slightly wrong. The documentation from Amazon lists EPUB as currently being supported by the Send To Kindle email service, with support for EPUB coming to the Send To Kindle applications in late 2022. A minor point, but I’m pretty sure that sending EPUBs to the Kindle works now, as long as you do it via email.

And it’s worth noting that this isn’t native EPUB support on the actual Kindle. It’s just support for automatic conversion from EPUB as part of the Send To Kindle service.

fun with file formats

I’ve been reading some random old stuff from an old Neil Gaiman Humble bundle recently, and I’ve hit a couple of snags with files. I thought writing up some notes on that might be useful.

First, I was trying to read two old comics from the bundle. I’d loaded both, in CBZ format, to my iPad in the Panels app. Both were black & white comics, originally published by Knockabout Comics. I think they were probably published in a larger format than typical American comics. And it seems that they didn’t do a good job of scanning them in and digitizing them. So they were a little too blurry for me to read. I first tried copying the PDF versions into Panels, to see if they were better. They were, but not by much, and zooming them didn’t work well. Then I got the idea to try the same PDFs in GoodReader. I bought GoodReader a long time ago, and don’t really use it that often. But it turns out that it’s a much better PDF reader than Panels is. So the lesson here is: stick with GoodReader for PDFs.

Second, I decided to copy a couple of the ebooks from the bundle to my Kindle Paperwhite. The easiest way to do that is to email them to the Kindle Personal Documents Service. This service has changed a bit over the years, but, in general, it allows you to email DRM-free ebooks to a special address, and they’ll get converted to Kindle format and pushed down to your Kindle. I had some problems with it this time.

The service is supposed to support both EPUB and MOBI files right now. I’m fairly sure that it didn’t support EPUB until fairly recently. And the support page for it right now says that it’ll stop supporting MOBI files later this year. I’ve always thought of MOBI as the Amazon/Kindle format, and EPUB as the “everybody else” ebook format. The MOBI format was created by Mobipocket in 2000. The company was bought by Amazon in 2005. The original AZW format used for DRM’d Kindle books is a variant on MOBI.

Anyway, I tried sending both MOBI and EPUB versions of the books to my Kindle and they all failed. That led me down a bunch of paths that didn’t lead anywhere interesting. Finally, I got the bright idea to email the files from my PC instead of my Mac. These days, I don’t think there’s any reason the files would be different on the Mac vs the PC, but it seemed like it was worth a try. And indeed it worked when I emailed the files from my PC. On both platforms, I used the web-based Fastmail interface, running in Firefox, so it can’t be a browser thing or an email client thing. So I’m pretty confused about that. I guess the lesson from this one is to always email docs from my PC instead of my Mac when using the Send to Kindle service.

Overall, I think I’ve now spent more time today screwing around with files than I have actually reading anything. But that happens sometimes. And that’s OK. I’m one of those weirdos who can have fun with this kind of troubleshooting.

Dresden Files

Last night, I finished listening to the fourth Dresden Files audiobook, so now I’m done with the four-book set that I started back in January. I’ve been debating whether or not I want to keep working my way through the series in audio format. This is a reread for me, since I’ve read the first eleven Dresden books already, though that was in paperback, so the audio format at least is new for me. And it was long enough ago that I don’t recall all the details, so there’s some suspense to it.

I started reading the Dresden novels in 2007 and last read one in 2015. So it’s been a while. I had those first eleven books in paperback. I think I donated them to a library sale at some point, though I don’t seem to have any record of that. (I usually note donated books in Evernote and with a “donated” tag on Goodreads, so I can remember that they’re gone, and not go looking for them…) In 2018, I noted that I had considered donating them, but decided to hang onto them. But I can’t find them now. So either I donated them at some later point, or I stuck them in a box and squirreled it away somewhere non-obvious.

Anyway, I’ve noticed that both the audio version of the fifth book, Death Masks, and the Kindle version of the twelfth book, Changes, are available from my local library, so I can read both for free. I’ve just started Changes, and we’ll see if I remember enough of the stuff that happened in books 5 through 11 to understand what’s going on. If I need a refresher, I can look at this Dresden Files reread on tor.com.

Looking at the my history with the Dresden series is interesting to me. I started reading it at a time when I was mostly buying books one at a time, in paperback, from mall stores or Borders, or Barnes & Noble. And my method for keeping track of what I’d read or not was mostly just looking at my bookshelf and seeing if the book was there. If it was, then I’d read it. Now, things are more complicated. Sometimes I still buy physical books. Sometimes, I buy Kindle books. Other times, I borrow a book from the library (either physical or on Kindle). When I buy physical books, I generally donate them after reading them. So I really have to rely on Goodreads and Evernote to keep track of stuff.

I bought my Kindle in 2008, so I actually had the Kindle through most of the time that I was reading Dresden novels. I’m not sure why I never switched from paperbacks to Kindle versions, but maybe it was because I’d started in paperback, and just decided to stay with that format. Or maybe I was getting the paperbacks for less than I would have had to pay for the Kindle versions.

I feel a little guilty for sticking mostly with familiar, safe, low-brow reading material this year so far, but not that guilty. I’ve been stretching myself over the last few years, reading some classics like War and Peace, and other stuff that’s outside my comfort zone. I think it’s time to take a break and catch up on some silly genre stuff.

Yet more on Comixology

I know this is my third Comixology post in a row, but I thought I’d write a bit more, since they’ve switched off the old comixology.com site today, and that’s really ticking people off.
Here are a couple of new articles on the subject:

I amused myself for a few minutes today by doing a Twitter search on “comixology” and checking out all the complaints. It was fun. People are angry. (Or at least pretending to be angry. It’s hard to tell sometimes.) For myself, I don’t seem to have lost any books that I’ve already purchased. And the new app doesn’t bother me that much. And I guess I can deal with the new Amazon sub-site for future purchases.

I see that my Comixology wish list has migrated over to a new Amazon wish list now, so that’s nice. I may do some cleanup on my Amazon wishlists, if I get bored later. I already have separate lists for physical stuff and Kindle books, so having a third specifically for comics is a good idea.

One very minor thing that Amazon has done that I really appreciate: They’ve stopped spelling it “ComiXology” and are now just calling it “Comixology”. That capital X in the middle always bugged me.

The new ComiXology app

I updated the ComiXology app on my iPad today to the new version, which I guess got released today or last night. It’s not great, but it’s pretty much what I was expecting. I blogged about ComiXology yesterday, but the app update wasn’t out yet, so I’m going to write a quick follow-up with some thoughts on the app.

Overall, it’s basically the Kindle iOS app, with some extra comics-related functionality added in. The main screen just has two tabs, Library and Discover. The library tab is where you view your comics, and the discover tab lists new releases, recommendations, and stuff like that. You still can’t purchase books in the app.

The filtering and sorting features in the library view are adequate, but (of course) I’d like more. The main filters are read/unread/in progress, and downloaded (vs. all). Sort options are “recent” (which seems to push recently purchased, recently downloaded, or recently accessed books to the top), title, author, and publication date. The “author” one is a bit problematic, since most comics are created by multiple people. They seem to give precedence to the writer, which makes sense, I guess. The old app used to let you sort by purchase date, which was sometimes pretty helpful. That option is gone. I don’t think the old app had a publication date sort option, so that might be good.

Search seems to be limited to titles only. I tried searching for some writers are artist names, and didn’t get any matches. So that’s a bit disappointing. (And it’s clearly not a full text search within the books themselves.)

The actual reading experience isn’t that different from the old app. It’s good enough. I don’t like the way they’ve changed certain things in the interface, but I’ll get used to it.

There’s a good article up on The Beat today with some analysis of the new app and the new “shopping experience.” It’s a pretty negative article, and I can’t really argue with anything they’re saying. I think that the overall effect of these changes, for me, is that I’m likely to spend less money on digital comics via Amazon. That’s actually probably a good thing, given how much money I’ve spent at ComiXology, and how far behind I am with my reading.

ComiXology changes and weekend reading

My weekend reading has mostly been random single issues of comics in my ComiXology library, all of which I got for free, mostly in 2014. With the coming changes to ComiXology, I’ve been spending some time organizing my lists of digital comics and finding some old ones that I’d never read.

I mentioned the ComiXology changes in this blog post from November. The changes were initially meant to happen last year, but they were delayed. It looks like the full switch-over will be happening very soon now, though they haven’t given a specific date. This Twitter thread has a number of details. It sounds like it’ll be this week. The ComiXology subreddit has had a lot of talk about it recently, most of it negative. I’m not enthusiastic about it myself, but I’m not as annoyed as a lot of people. (That’s the way Reddit often works, of course. The loudest voices bubble to the top.)

I’m probably most annoyed that all of the old books I’ve moved into my “archive” in ComiXology are going to wind up back in my main library. I’ve generally used the archive to move random old freebies out of my main library, but I guess I won’t be able to do that anymore. That’s also a problem with my Kindle library in general: too many random free books making it hard to find the ones I’ve actually paid for. If I look at my Kindle library right now, I have 1656 items in there. That’s now a combination of my Kindle books and ComiXology books. That’s really too much stuff to manage without at least slightly better tools. Oh well. Hopefully, the new ComiXology iOS app will be good, at least.

Content-wise, I’m enjoying reading a bunch of random first issues of Image and small press series. On one hand, given the number of books currently on my “want to read” list, reading a bunch of first issues is liable to just increase that list. On the other hand, I like reading these little samples of longer stories without feeling like I necessarily need to finish them, or figure out what’s going on, or really get invested in them. And I’m finding it interesting to see where some of these series have gone. Cross Bronx got just one four-issue series. Ultra was an eight-issue series, and didn’t return. Velvet lasted for 15 issues and got collected into three books. Mind The Gap got collected into three volumes, but has disappeared from ComiXology for some reason. Black Science lasted for nine volumes. Those are all examples of Image books that I enjoyed. I probably won’t pick up and read all of them, but I’ll get a few. (I already have all three volumes of Velvet in the Ed Brubaker Humble Bundle that I bought recently. That looks like it should be fun.)

Killing Time

All through the pandemic, I’ve often had the feeling that I’m just killing time. I’m not really trying to do anything useful or fun or important. I’m just trying to get through the day, getting my work done, staying healthy, distracting myself, and doing no harm to myself or anyone else. I’m feeling that pretty strongly this weekend. We had a fair amount of snow Friday night, and very cold temperatures yesterday and today. So I haven’t been able to go out and take any long walks. And I haven’t wanted to dig my car out and drive anywhere. I don’t want to push myself too hard, because I know how easy it is for me to get sick in this kind of weather. I have a dentist’s appointment tomorrow morning, which was rescheduled from December, so I really want to be healthy enough to go to that. I’ve been sick a lot over the last few months, but I’ve been in pretty good shape for the last couple of weeks, and I’d like to stay that way.

So, anyway, I’ve been trying to strike a balance this weekend, where I’m getting important stuff done, and enjoying myself a bit, and not going stir crazy. I got my laundry and grocery shopping done yesterday, so that covered the really important stuff that I needed to do. I kind of punted on lunch and dinner yesterday, though, just eating pizza for both meals. And I spent about five hours yesterday catching up on Legends of Tomorrow. (It’s a pretty dumb show, but it’s fun, and occasionally clever.) I managed to clean the snow off my car, and clear some of the snow around it too.

Today, I managed to prepare reasonably healthy meals for breakfast, lunch, and dinner, so I’m considering that a win. I did a fair bit of reading today. I finished one short ebook, read two more short ebooks, then started two more slightly longer ebooks. All of them are short story collections. I’ve been trying to put a dent in my backlog of old Kindle books, and have mostly been reading stuff that I bought (or got for free) about a decade ago. I haven’t really wanted to start a new novel, so I’m sticking with short stories for now.

Meanwhile, I’ve started listening to the Dresden Files audiobooks that I bought a couple of years ago. The set I bought has the first four books, all of which I read, in paperback, quite some time ago. They’re fun books, and they’re read by James Marsters, who does a great job with them. They work well in audio format, since they use first-person narration, and since they’re fairly linear and easy to follow. So that’s what I’ve been doing with my evenings, when I’m just trying to kill time until it’s time for bed.  (I generally try to stay awake until 10 PM, but last night, I gave up at 9 PM and just went to bed early.)

I also wasted a bit of time today by deciding to make a “comics” shelf in Goodreads and start applying it to the comics and graphic novels in my library. I don’t have a great reason for doing that, and I don’t think it’s going to terribly useful. But it kept me busy for a while and gave me a sense of accomplishment.

Despite the weather, I even managed to go for a 20 minute walk today. I waited until the warmest point in the day, around 4 PM. Even then, it was only 25º. So it wasn’t the most pleasant walk, but it felt good.

It’s now Sunday night, and I’m returning to one of my traditional ways of killing time: watching football. I’d pretty much given up on football several years ago, but I occasionally try to get back into it. Usually, I can’t manage much enthusiasm. But the playoff games this year have been pretty fun. The AFC and NFC championships are today. The AFC one just ended, in overtime. I’m going to try to watch the beginning, at least, of the NFC game too. I may give up on it at some point and switch over to my Dresden Files audiobook.

Well, this has been a rambling post. But that’s OK. I needed to get some of these thoughts out of my head. Sometimes I think I should just write posts like this in Day One, where no one else can read them, but I guess there’s no harm in posting them here. Maybe someone will find something here amusing. You never know!

Kindle Paperwhite

I finally broke down and bought a Kindle Paperwhite this week. When I bought it, it was on sale for $40 off, for Prime members. (It looks like that deal has ended now.) The “regular” price on the Paperwhite is $120, but it’s frequently on sale for $100 or $90. This was, I think, the first time it’s been marked down to $80. There’s been some talk about whether or not this means that a new version of the Paperwhite is imminent, but the consensus seems to be probably not.

I actually bought the version with free cellular connectivity, which was $150, down from $190. My last two Kindles both had the cellular connectivity option, and it does come in handy often enough that it’s worth a few extra bucks for me.

I bought my last Kindle in 2011, so I was due for a new one. The old one still works, but there are enough new features in the Paperwhite, and it’s cheap enough, that upgrading made sense. I’ve though about getting a Paperwhite a few times in the past, but never quite talked myself into it. I guess the low price is what finally got me to plunk down some money on it.

So far, I like it, though I haven’t done any serious reading on it yet. The obvious feature of the Paperwhite that sets it apart from my old Kindle is the light. (I want to call it a backlight, but it’s not actually a backlight. Here’s an old NY Times graphic that shows how it actually works.) I’ve been using a clip-on light with my old Kindle, and that works, but it’s a little clunky and inconvenient. The light on the Paperwhite should be much better than that, but I won’t really know until I’ve used it for a bit. The general consensus is that it’s very good, and doesn’t mess with your eyes or your ability to fall asleep the way an iPad screen or laptop screen would. (There’s some interesting discussion on this topic at Quora.)

I was also curious about the Goodreads integration, and hopeful that it would be useful. Here’s a write-up from Engadget, from when they first added the Goodreads stuff in 2013, and something from the Goodreads blog from 2016, when they made some changes. I’ve been using Goodreads for the last couple of years, and I’ve got several hundred books in there, all tagged appropriately with both the standard tags (Want to Read, Currently Reading, etc.) and some custom tags (Kindle, library book, ebook, etc). Goodreads lets you view your books with multiple tags applied, so it’s easy for me to pull up a list of, for instance, unread Kindle books.

The Kindle/Goodreads integration is OK, and somewhat helpful, but not all it could be. First, it treats your “Want to Read” tag more like a wishlist than a queue. I only put stuff into Goodreads once I’ve actually bought the book, so my “Want to Read” list is basically my pile of unread books. (Currently at 255 books. Sigh.) Second, it doesn’t always recognize that you already own some Kindle books in your Goodreads account. I guess that’s due to me adding the wrong edition of the book or something like that. Third, it only lets you see (and work with) the standard tags and not your own custom ones. So there are enough little issues with the Goodreads integration to make it less useful than it could be.

Similar to Goodreads tags, you can now create Cloud Collections of your Kindle books, either directly on the device, or on Amazon’s web site. My previous Kindle supported collections, but they didn’t sync at all; they were just on the device. And they were hard enough to create that I didn’t really use them. It looks like the ability to manage collections from the web was added in 2016. I went through and created some collections on the web site last night and it was pretty easy. So now I have a collection of all the Harry Potter books, and one with all my Star Trek novels, and a few others like that. That should be helpful. I’d really like to be able to auto-create collections from my Goodreads tags, but there doesn’t seem to be any way to do that.

So now I’ve got some organization applied to my extensive list of Kindle ebooks, but not quite as much as I’d like. I think I’m still going to use Goodreads on the web, combined with some notes I keep in Evernote, to keep track of which books I’ve read and which I haven’t, and to figure out what I want to read next. And the Kindle itself will mostly serve as a reading device and not really for organization and discovery of books. (Which is pretty much the same way I use my current Kindle.)

I’m also thinking about how to handle ebooks that I didn’t buy from Amazon. I have a fair number of those, mostly from Humble Bundles, old public domain books, and free books given away by publishers. Some of those show in my cloud library, since I’d previously emailed them to my old Kindle. Those that I loaded onto the old Kindle via USB, though, don’t show up anywhere. So I don’t know if I want to copy them over to the new Kindle or punt on that and just copy them over when and if I decide to read them. (Probably the latter.) I may play around with Calibre a bit, and see if I can use that to organize my miscellaneous DRM-free ebooks, but I’m not sure if it’s worth the trouble.

So this has turned into a pretty long post that’s more about ebook organization than the Kindle itself, so I should probably quit here. After I’ve actually read a book or two on the new Paperwhite, I’ll post some thoughts on its usability as a reading device.