Learning Statistics

I’m starting to read a book on statistics, and this is from the beginning of the chapter on probability:

If you are reading this book as part of a course in statistics, then you are likely pursuing a degree in higher education. On the other hand, if you are reading this book simply out of enjoyment, then you are crazy. That is one thing we can be certain about.

I guess I’m crazy. Oh well. It’s a pretty good book so far, though I think I’m going to need more to really get going.

I started thinking about learning more about statistics and data analysis recently. It ties in a bit with my attempt to learn how to use Power BI. I have all the basics of Power BI down now, meaning that I can import data and make fancy-looking pie charts and bar graphs, and now I’m poking at the edges of more meaningful data analysis.

It’s kind of hard to figure out where to start with statistics and data analysis. I never took a course in statistics when I was in college, so I don’t really know much to begin with. I did read Larry Gonick’s Cartoon Guide to Statistics years ago, back in the 90s I think. I don’t really remember much about it; maybe I should reread it now.

The book I’m currently reading is meant as a college textbook (per the quote above), and isn’t really meant to stand alone. It purposely doesn’t talk about software tools at all; just the background concepts and a little math. I’m thinking about reading this book along with it, which includes some more practical stuff, using Excel as the tool of choice. (Both books are on Safari, so I can read them for free.)

Of course, as a programmer, I’d eventually like to get to a book that talks about statistics and uses a real programming language for the examples. So maybe Think Stats would be good; it uses Python, which I’ve used before (though I’m probably a bit rusty).

I see a lot of references to R when looking into data analysis and statistics. I know almost nothing about R, so maybe I should look at something like this book.

This is all sort of leading me into data science, which is apparently the sexiest job of the 21st century, according to Harvard Business Review. I’m not really looking for a new job, and definitely not a “sexy” one, but hey, it can’t hurt to learn a bit.

Day One outage

It might be time to stop using Day One. I last blogged about Day One in 2016, when they had released a new version and switched to their own proprietary sync system. I expressed some concern about that sync system at the time, but I did pay for the new version, and I’ve kept using it.

Well, they just recovered from a multi-day outage of that sync system, and part of their restore procedure accidentally assigned some journals to the wrong users. They’ve written a postmortem that’s fairly straightforward and transparent, so kudos to them for that. But that’s a pretty big issue, regardless, in a system that’s supposed to be used for private journaling. I still mostly use Day One for fairly boring stuff, so it wouldn’t be too embarrassing if someone else saw my journal, but I can imagine a lot of people keep some really personal stuff in there.

For anyone using their premium service, with end-to-end encryption turned on, this wouldn’t be a problem. (The accidentally shared data would be encrypted and unreadable.) But I’m still on their old “paid for the software” plan and haven’t switched over to the subscription plan. And, of course, a multi-day outage and security snafu like this makes me a little less likely to do so at any point in the future.

I may switch back to using an old-fashioned five-year journal next year. I filled up two of these, starting in 2007 and going through to about 2016, before switching to Day One. The main issue with the hard copy journals is that you can’t do a full-text search. Also, my handwriting is atrocious. (This Levenger one looks nice though.)

two funny Batman comics

A couple of recent Batman-related comics:

  1. Uncle Batman’s Vengeance Juice from Diesel Sweeties (also coffee-related, so covering my two main interests in life)
  2. Robins from SMBC (not coffee-related, but still good)

I think both of these are making a good point, but about half my “to be read” comic book pile right now is Batman-related, and I’m not ashamed of that.

Speaking of which, I might be reading the Batman and the Signal mini-series this weekend, since the last issue came out this week.

Digg is probably done

I just found out that Digg has been bought by a company named “BuySellAds.” So… that doesn’t sound good. The previous owner, Betaworks, used it as a kind of “curated” news site, and it was interesting to check on once in a while. (But not interesting enough to check regularly.) The original Digg was pretty cool, but lost out to Reddit in the war of, umm…, sites that allow users to upvote and downvote stuff. (There’s probably a name for that category, though I guess Reddit is the only site left in that specific category?)

I guess the pending acquisition is why they shut down Digg Reader recently.

Betaworks also used to own Instapaper, which is a service I still use a lot. Instapaper is now owned by Pinterest, which worried me at first, but they seem to have mostly left it alone. (The Ten Years of Instapaper post on the Instapaper blog is interesting.)

Meanwhile, Facebook is still kind of horrible, but I’m still checking it every day. I have decided to delete the Facebook share button on this website though. Nobody was ever using it, and I assume it was pulling in some Facebook tracking code, so it seemed like a good idea to turn it off.

Amazon is kind of horrible too, but I placed two orders with them this week already, and of course just bought a new Kindle. Much like Facebook, they’re too convenient to just stop using them. (I mean, if Mark Zuckerberg and Jeff Bezos actually teamed up, super-villain style, and went on a mad killing spree, I’d reconsider. Until then, though, I need my cheap USB cables and Bloom County comics.)

Learning Azure

I have a project going at work that might (or might not) eventually have something to do with Azure. So I’m using this as an excuse to finally learn a bit about it. I looked at a few ebooks and videos that weren’t that helpful, then I stumbled upon a free ebook from Microsoft titled Fundamentals of Azure. It was last revised in 2016, so it’s a little out of date, but still mostly relevant. It does a good job of walking you through all (well, most) of the services offered on Azure, without getting too deep. (But it does get deep enough to actually be useful to a working admin or programmer.) I wrote a short review of it on Goodreads.

I’m using the $50 monthly Azure credit that comes with my Visual Studio subscription, which is more than enough to play around with (assuming that you remember to delete everything you do after you’re done). I’m glad that my company (finally) decided to pay for VS subscriptions for us. There are a few nice benefits that come with that.

If I really needed to get serious about Azure, I’d look at the Microsoft Professional Program in Cloud Admin at EdX or something like that. (Of course, I’m more of a developer than an admin, myself, so that wouldn’t be right for me either way.)

I’d love to be able to do a big project that uses a mix of Azure services, but that’s probably not in the cards. Still, it’s good to be familiar with all this fancy cloud stuff!

Democracy and Facebook and other depressing news

I’ve mentioned here before that The Interpreter is probably the best email newsletter I get from the NY Times. I’ve been catching up a bit with my “read/review” email folder this morning, and saw a link to their video on democracy, from back in January. The video distills some themes that that have come up in their newsletter/column repeatedly over the last year. It’s all quite worrying.

Following a link on Twitter, I also saw their current article about Facebook use in the developing world, titled Where Countries Are Tinderboxes and Facebook Is a Match. I usually see Facebook from a very first-world perspective, getting annoyed with dumb ads and misleading memes, but those are usually harmless. It’s eye-opening to read about the effect that Facebook can have when it becomes popular in the developing world. I’m not sure how mad I should be at Facebook for this stuff, but they could definitely be doing more to mitigate the worst of it. There’s one quote in the article that states the problem with Facebook more succinctly and poetically than any other statement I’ve seen:

“We don’t completely blame Facebook,” said Harindra Dissanayake, a presidential adviser in Sri Lanka. “The germs are ours, but Facebook is the wind, you know?”

Yep.  As I mentioned recently, I use Facebook with a bunch of add-ons that strip out most of the evil stuff. There’s a new tool from Firefox that puts Facebook in a “container,” making it a little harder for them to track you, hopefully. I haven’t tried it, since I’m assuming it would be overkill for me, since I’m already using three add-ons to filter Facebook. There’s still too much good stuff on Facebook for me to consider dropping it, but I definitely don’t feel guilty stripping ads from it and depriving them of a little ad revenue.

How to use a Stopwatch in C# incorrectly

Here’s something I did wrong this week. And, after realizing I’d done it wrong, I remembered that I’d made the same exact mistake in the past. So I’m going to write up a blog post in the hopes that maybe it’ll help me hammer the right way into my head, so I don’t screw up next time.

If you want to do a little quick and dirty performance logging in an application, you can use the Stopwatch class. Just create a new Stopwatch, then stop it when you’re done and check the elapsed time. Easy, right?

Well, here’s what I did wrong: The Elapsed property is a TimeSpan structure, which has a lot of nice properties on it, like Days, Hours, Milliseconds, and so on. For my purposes, I wanted to know how many milliseconds had elapsed. So I showed sw.Elapsed.Milliseconds. Looks good, right? Except that the Milliseconds property is not the whole span in milliseconds. It’s the milliseconds part of the span. If you want total milliseconds, then you need to get sw.Elapsed.TotalMilliseconds.

This is one of those pernicious little bugs that doesn’t cause anything to fail, but instead causes the programmer to make bad decisions. “Hey, it looks like all my web service calls execute in less than a second! Great! I can go home early!” Nope. Turns out some of them were taking more like 20 seconds.

Here’s a little code snippet showing the wrong way and the right way.

Stopwatch sw = Stopwatch.StartNew();
TimeSpan elapsed;
Thread.Sleep(1500);
sw.Stop();
elapsed = sw.Elapsed;
Console.WriteLine("Wrong: {0}", elapsed.Milliseconds);
Console.WriteLine("Right: {0}", elapsed.TotalMilliseconds);

Simple enough, but I’ve done this wrong at least twice so far in my life. Here’s hoping I can remember to do it right next time!

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.

1Password subscription

I recently decided to give in and switch to a 1Password subscription. I blogged about maybe doing this last year, but decided not to do it then.

I originally bought 1Password (for Windows, Mac and iOS) back when it was sold as plain old software. All things being equal, I’d just as soon continue using it that way, but there are a few advantages to switching to the subscription model. Mostly, I wanted to get access to the latest version of the Windows software, version 6, which is only available to subscribers. The previous Windows version works, but isn’t great. (Version 7 is in beta, and will support non-subscribers, but it will be a paid upgrade, so I figured I’d just skip that and pay for the subscription.) To their credit, they haven’t been aggressively pushing people to switch to subscriptions, though they’ve been gently nudging people in that direction. And I do like their software, in general, so it makes some sense to support them this way.

I have three minor nits to pick with the subscription version:

  1. They’ve eliminated folders, in favor of tags. That’s not too bad, but the standalone version supported both, so it doesn’t seem like it would have been difficult to support both in the subscription version too. I’ve managed to move my folders to tags, so it shouldn’t be a big deal.
  2. The Mac software supported “smart folders” which were basically saved searches. I had a few of those set up, and they were lost when I switched to the subscription. I had hoped that there would be some kind of saved search functionality in the subscription version, but there’s not. (You can still do advanced searches, but you can’t save them.)
  3. The subscription version requires that your master password be at least 10 characters long. My previous master password was only 7 characters, so I had to create a new one. I never have to type it in on my iPhone, since I have Touch ID enabled there, but I do have to type it in a lot on Windows and Mac, so that’s a pain.

As to other advantages of the subscription version, I’m honestly not seeing many, other than the new Windows software. And there’s an advantage in having my passwords available online now, via 1password.com, rather than having them stored in Dropbox. Since my 1Password data was pretty much the only thing I’d been using Dropbox for, I can probably delete the Dropbox client from all of my devices now, if I want. (I’m using OneDrive to keep my files in sync across devices. 1Password only supported DropBox.)

Microsoft’s recent reorganization

Satya Nadella’s email to employees from a couple of a weeks ago generated a lot of press coverage, mostly centering on how he seemed to be de-emphasizing the importance of Windows. GeekWire has one article about Terry Myerson’s departure and another about Scott Guthrie’s new responsibilities. I’ve always liked Guthrie; he seems to be a good guy with a lot of good ideas. From what I understand, ASP.NET MVC was basically his idea. (From a Stephen Walther blog post: “ASP.NET MVC framework was originally created by Scott Guthrie on an airplane trip to Austin, Texas.” Also see Scott Hanselman’s write-up from back in 2007.)

I recently finished reading Nadella’s book Hit Refresh, so this news makes sense in light of the priorities he outlined there. I do think that Nadella has Microsoft on the right track. While they continue to do a lot of things that annoy me, they’re a lot better than they were back in the days when we’d refer to Windows as “Micro$oft Windoze”. They’ve been doing a really good job with their developer tools over the last few years, so that’s good for me. And I’m starting to play with Azure a bit, and they seem to have that on the right track too.

Ben Thompson has a good take on this stuff (as usual). I think his choice of title (“The End of Windows”) is a bit hyperbolic, but he hits on something interesting about Nadella’s leadership style: “Nadella’s most impressive bit of jujitsu was how he killed Windows Phone; while the platform had obviously been dead in the water for years, Nadella didn’t imperiously axe the program. Instead, by isolating Windows, he let the division’s leadership come to that conclusion on their own.”

I’d contrast this with the way Steve Jobs killed the Newton when he took over Apple from Gil Amelio, though maybe that’s not a fair comparison. (Which reminds me that I should probably read the Walter Isaacson Steve Jobs biography some day.)