The Daily Parker

Politics, Weather, Photography, and the Dog

Oddly-sized photos

You may have noticed that the photos I've posted lately have unusual aspect ratios and sizes. This is because I have been lazy.

Usually, I upload photos from my camera or phone to my laptop, process them with Adobe Lightroom, and crop them to a pleasing 2:3 aspect ratio. Lately, though, I've just shot them through Google Hangouts from my phone. I have little understanding of Google's choices but they seem to be around the byte count and not around the dimensions.

Here, for example, is a shot of O'Hare Terminal 3 from this morning:

Google did that one at 1236 x 695, at 249 kB. The original is much larger (4 MB), but the same aspect ratio.

I may re-edit the photos later, after landing.

Update: here's the same photo after going through Lightroom:

Sad day in software development

After 38 years of publication, Dr. Dobbs is shutting down:

Why would a well-known site, dearly loved by its readers and coming off a year of record page views, be sunset by its owner?

In one word, revenue. Four years ago, when I came to Dr. Dobb's, we had healthy profits and revenue, almost all of it from advertising. Despite our excellent growth on the editorial side, our revenue declined such that today it's barely 30% of what it was when I started. While some of this drop is undoubtedly due to turnover in our sales staff, even if the staff had been stable and executed perfectly, revenue would be much the same and future prospects would surely point to upcoming losses. This is because in the last 18 months, there has been a marked shift in how vendors value website advertising. They've come to realize that website ads tend to be less effective than they once were.

So rather than continue with Dr. Dobb's until it actually loses money, [our owners] decided to sunset the site — a sudden end to remarkably robust and wondrous journey that began 38 years ago.

In the 1980s and 1990s, Dr. Dobb's was the best source of information about C/C++ programming, bar none. I've read the magazine and the website off and on for about 30 years. I'm sad to see it go.

How to get nine quintillion views on YouTube

Psy's surreal Gangnam Style video got so many views on YouTube that Google had to change their database schema to count them:

YouTube said the video - its most watched ever - has been viewed more than 2,147,483,647 times.

It has now changed the maximum view limit to 9,223,372,036,854,775,808, or more than nine quintillion.

YouTube's counter previously used a 32-bit integer, which is a unit used to represent data in computer architecture. This means the maximum possible views it could count was 2,147,483,647.

In my programming language, C#, the 32-bit integer is standard, and is called simply "int". The 64-bit integer is called "long". So, basically, Google decided that all their videos needed—wait for it—to get a long.

Ah. Ha, ha. Ha.

Anyway, here's the video in question, which at this writing has 2,160,472,115 views:

Hat tip: Dan DiGangi.

So many things to read, so little time

Well, little time today. Since I'll be on an airplane for 8 hours on Sunday, I will probably have time to catch up on these:

Developer laziness hoses Outlook

I'm dealing with two instances of developer laziness (or stupidity).

The proximate cause of my annoyance this morning comes from les espèces d'idiots at Eurostar who included local references to images in a confirmation email template. In non-technical terms, they put the images they want displayed on an email behind their own firewall, so they only show up when you look at the email behind their own firewall. So, some idiot developer, tasked with creating a confirmation email, put images on it that worked for him (because he was inside the firewall) but didn't have the mental faculties to predict that no one else would see them. Somehow this got past Eurostar's QA as well—presumably because they, too, are behind the firewall.

This set up a flaw in Microsoft Outlook that will render the program mostly unusable until I get rid of the email using my phone. Because Outlook is too stupid to realize that, if it can't download an image from a particular local path because the path is not mappable, then it should still try all the other images on that path one at a time, blocking the UI thread as it goes. This means, for each image on the Eurostar email, I see something like this:

See how the URL doesn't begin with "http://" but instead begins with a double backslash ("\\")? Yeah, that's a local path to some server at the company who designed the email. Great work, guys. And great work, Outlook, for forcing users to wait for all the images to download before returning control of the UI. Because why wouldn't we want to stop everything in order to see the Eurostar corporate logo?

Microsoft's impressive code drop

The Redmond giant stunned the software development world this week by opening up several core technologies, including the entire .NET platform, to the public:

We are building a .NET Core CLR for Windows, Mac and Linux and it will be both open source and it will be supported by Microsoft. It'll all happen at https://github.com/dotnet.

Much of the .NET Core Framework 4.6 and its Reference Source source is going on GitHub. It's being relicensed under the MIT license, so Mono (and you!) can use that source code in their .NET implementations.

Dr. Dobbs is impressed (as am I):

Of these platforms, Linux is clearly the most important. Today, Microsoft earns much of its (record) profits from enterprise software packages (SQL Server, SharePoint, Exchange, etc.). By running .NET on Linux, it now has the ability to run those apps on a significant majority of server platforms. Except for Solaris sites, all enterprises will be able to run the applications without having to add in the cost of Microsoft Server licenses.

But perhaps more important than the pure server benefit is the cloud aspect. VMs on the cloud, especially the public cloud, are principally Linux-based. Windows VMs are available, too, but at consistently higher pricing. With this move, .NET apps can now run anywhere on the cloud — or said another way, between servers and the cloud, the apps can run anywhere IT is operating.

The big winners of all this goodness are C# developers. In theory, .NET portability favors all .NET languages equally, but it's no secret that C# is the first among equals. (It is, in fact, the only language that Xamarin supports currently.) Microsoft has been an excellent steward of the language, evolving it intelligently and remarkably cleanly. Among developers who use it regularly, it is uniformly well liked, which distinguishes it from most of the other major development languages today, where an appreciation that borders on ambivalence is the more common experience.

The big loser is certainly Java. Java's stock in trade has been its longstanding ability to run without modification or recompilation on all major platforms. In this valuable trait, it has had no major competition. If Microsoft's port of .NET provides a multi-platform experience that is as smooth and seamless as Java, then the JVM will have some very serious competition.

Once I'm done with the deliverable that's due tomorrow, I may download the .NET Framework and take a look. I'll also spin up an Azure VM and play around with Visual Studio 2015 before the end of the week.

FitBit time zone problems

Ah, FitBit. I'm guessing the device only stores time stamps and not time-and-date stamps. I'm also guessing they haven't worked out daylight saving time, either. Because apparently going to bed before 1am CDT and getting up at 7:30 CST was only 5½ hours. (It was actually 7½.)

This seems related to a problem I saw Wednesday. I got to Atlanta just past midnight and synced my FitBit to my phone—which had already switched to Eastern time. Since the device never got past midnight, it's daily summary value started at the total step count for Tuesday, so my total steps for Wednesday and for the week were overstated by 16,000.

Look, I get that time zones are hard, but they're not that hard. It's also not hard to use date-time stamps with unambiguous values—for example, always using UTC internally and only using local time to display and calculate things that depend on local time.

I've got a support incident open with them. I hope I can help them fix this problem, but it may be a hardware issue. That's disappointing.

Meanwhile, I'll make my first attempt at a workaround on Tuesday morning after I land at Heathrow. (The flight crosses local midnight in Chicago but not London.) I'll sync the device in Central time before changing my computer's time zone to GMT, so that it will have experienced midnight in its local time zone. Then I'll re-sync in GMT and see what happens. At the very least I'll get some data on what is causing this defect.

SSL3_READ_BYTES error in SourceTree 1.6

A couple weeks ago I updated SourceTree and discovered I could no longer connect to my Bitbucket repositories through SSL. This is because of the Poodle defect in SSL 3.0. (I'll skip the explanation.) The failure looked like this:

In any event, the only Atlassian forum entry on the subject gave me only partial guidance.

The problem, which took me some time to uncover, turned out to be that I had Mercurial 2.7 lurking on my machine. Uninstalling it and SourceTree, then installing Mercurial 3.0 and re-installing SourceTree, fixed the bug.

This has been a public service blog post.

Link round-up

While I'm up to my eyeballs at work, I've got a backlog of articles to catch up on:

Once I've got some free time (maybe this afternoon) I'll talk about yesterday's Supreme Court non-decision that changes civil rights in the U.S. forever.

Hey! My technological miracle stopped working for five minutes!

The apotheosis of modern aviation's intersection with modern communications—in-flight internet service—is a tease sometimes.

For $50 a month, I get unlimited in-flight internet on American an U.S. Airways. And I'm on a brand-new 737-800, with a functioning seat-back entertainment unit that says I'm over south-central Utah.

However, because I planned to have in-flight internet on this flight, and the internet connection appears to have dropped completely, I now have no way to communicate with my team and therefore no way to finish the task I thought would take half an hour.

I hope this is temporary. Until it comes back, I will contemplate the amazing ability of the human mind to take miracles for granted.