Wednesday, September 30, 2015

Insanity in Trade Press w.r.t. Wearables

Today I ran across this article in +ReadWrite entitled: 1 In 5 U.S. Adults On Board With Wearables Now.

I have been following wearable sales numbers, even before the release of Android Wear and thought that the numbers stated were very unlikely.

Reading the article, I found out the headline was incorrect. The numbers they were talking about came from Marketing Research firm Forrester and came from a survey of 952 "online" US adults. In a well done survey, 952 could be enough, but well done surveys are the exception, not the norm.

Let's examine some of the claims...

From the US Census Bureau we find there are roughly 246 million adults in the US. Pew Research (an organisation that is actually good at surveys) says that about 15% of adults do not use the Internet. So the number of "online" American adults is around 209 million and the article's claim is that there around 42 million currently using wearable devices. (The survey was explicitly about what people were actually using, not bought and put in a drawer or replaced with a different device.)

The survey contained one data point that I absolutely knew was wrong (in a survey representative of online US adults)... it said that 15% of those surveyed were using Google Glass. 15% of 42 million is 6.3 million. The exact number of Google Glass sold was way below 1 million with the most outrageously high number I've seen being around 800,000... but a more likely number is sub-200,000. Recall that this survey was about what people were *currently* using. A look at the Google Explorer community page shows 46,574 members. Now if you paid $1,500 for Google Glass and were still using it, surely you'd be a member of that community, even if you don't follow it regularly. One can safely say that the number of Google Glass units in use is sub-100,000.

One can only wonder why ReadWrite author David Nield did not catch that glaring problem.

But it goes deeper than that. While Apple and Google are fairly secretive about their smartwatch sales, FitBit, which primarily makes wearables, recently went public and so we know a fair bit about their actual sales. A recent number released by Fitbit is that the total number of trackers they have sold since 2011 is 21 million.

According to the survey, 36% of the 42 million are using their Fitbits... that would be 15 million *currently in use*, very unlikely. But the problem doesn't end there. The 21 million sales were world-wide. I don't know how extensive Fitbits world-wide sales are, but during their early days they had a recall in the US and Canada; at that point the Canadian units were about 1/4 of the total units recalled. Currently Amazon is selling the units in the UK, Canada, Germany and Japan, so one would expect a minimum of 50% of sales would be outside the US. The point here is that the number of units sold in the US is far below what the survey is claiming for units in use in the US.

Then you need to factor in the number of units that are no longer usable. For example, my wife, an early Fitbit adopter has had 3, only 1 of which is still in use. (The other two died, it is instructive to note why... clip-on Fitbits do not fare well in the wash, and if you use them daily, the batteries in these tiny devices fail after a couple of years.) I've had two, only one of which is in active use.

Given that many such gadgets end up in drawers, attrition rates, and the known number of Fitbits, one would be very surprised to find that more than 5 million are in *active* use in the US.

Why a "respected" marketing firm like Forrester and a new-media publication like ReadWrite gets away with producing such blatantly bad information astounds me.

Finally consider this quote:
Her colleague, Julie Ask, points to the growth of the smartphone market as the primary driver behind wearable adoption, an angle that's tough to argue with: Without the iPhone, there would be no Apple Watch. Without Android, there would be no Android Wear.

It's not tough at all to argue with that... first of all the US phone market growth has slowed greatly, this is so well known, one wonders how the Journalist and Market Analyst involved could make/report this statement.

Second, Fitbits do not need smart phones to work. They come with a dongle you can plug into any desktop or laptop. I rarely use the Fitbit App on my phone, the data gets downloaded automatically by an old Mac when I walk into my house. Using an App to monitor your wearable is an unnecessary drain on its battery, which is the last thing most smartphones (especially iPhones) need. The only point you could really draw at all is that Apple greatly limits their market by having only iOS support. All of the rest at least support Android and iOS, with a few going beyond that.

Simply put, the causality in the quoted statement is backwards. Wearables support smartphones because that is the most prevalent form of computing among their target consumers. If users stopped using smartphones for another platform, Wearables would simply support the new platform.

Thursday, May 7, 2015

Desktop Web App Development For Windows

Microsoft is making Windows 10 a highly desirable place for developers of Open Web Apps and Chrome Apps to port to Windows Universal Apps. In fact, Windows 10 is going to provide the most functional set of low-level capabilities available in a "packaged" app. To get less restricted functionality one would have to turn to nw.js (formerly called Node Web Kit) or Electron (formerly called Atom Shell). The Windows Universal App API available in Windows 10 (and in large measure, Windows 8.1 [Windows 8 was significantly weaker]) puts the Chrome App's API and even Firefox OS's API to shame.

I could write a really long post about the failings of the Chrome App API, but why bother; Google seems to have stopped listening to anyone.

Below is a guide to resources for doing Windows Web App Development.

General (BUILD 2015, why you might care about this platform):

I was present at the first Window NT developer conference, the Windows 95 launch, the (now infamous) "Cairo" conference and numerous other such events. The Build 2015 event was the most exciting (and I was attending this one remotely).

Day One Keynote Presentation | Build 2015 | Channel 9 (Long but fun.)

Day 2 Keynote Presentation | Build 2015 | Channel 9 (Long. First half hour is boring... then it gets fun.)

Getting started with Windows 10 Desktop Web Apps:

They provide a free book, geared at Windows 8.1, works well enough for Windows 10.
Free ebook: Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition
(Note to Google, this is called tutorial documentation... it is significantly more helpful than 3 minute fluffy videos.)

API Reference:

Windows API reference for Windows Runtime apps - Windows app development
(Note to Google, this is what a real API looks like.)

Overview Videos:

JavaScript Frameworks in Your Apps and Sites from WinJS and Beyond | Build 2015 | Channel 9
Pay particular attention to the alternate frameworks in this one. WinJS is rather fat, not really an issue on the desktop, but if you need to go lower-end, alternatives may be desirable. If you have existing code, the various projects can help, or at least give you CSS to help with styling.

"Project Spartan": Introducing the New Browser and Web App Platform for Windows 10 | Build 2015 | Channel 9
The Spartan browser will be the driver behind Windows 10 Desktop Web Apps... it is likely to be competitive with Chrome in standards implementation by the time it releases (it is getting close already, passing Chrome in ES6 features present, lags in HTML5 though).

Hosted Web Apps and Web Platform Innovations | Build 2015 | Channel 9
So, from your server-based web app, did you ever want to let your users easily back up their data on a local disk? Access high-speed encryption? Real printing? The desktop notification system? This may blow your mind.

The Future of TypeScript: ECMAScript 6, Async/Await and Richer Libraries | Build 2015 | Channel 9
TypeScript is not essential, but it has been shown to produce significantly lower error rates than using JavaScript alone.

Tools to Help With Development (all are free):

Free Dev Tools - Visual Studio Community 2013

Visual Studio Code


Whether or not you are developing for Windows, I recommend TypeScript for JS development.


  • This site contains WinJS, a full-blown (fat) Javascript that implements the new Windows UI.
  • It also contains similar support for React, Knockout, AngularJS and Bootstrap.
  • If you are not using one of these in your existing code, I suggest you take a look at the Bootstrap CSS there for hints on styling.
  • I would only use WinJS full-blown for apps I was aiming at the Desktop/Laptops and high-end tablets and phones. It would take nearly two seconds just to parse the JS/CSS to DOM on a low-end phone.
  • I haven't tried it yet, but consider using zepto instead of jQuery if you go the winjs-bootstrap route.
  • Microsoft allows you to use any framework you like in you app, but strongly encourages you to blend in with the platform. (I'll have to agree that most customers would likely prefer that, so it is in your best interests.)

Phone apps via Cordova (I've not watched these yet):

This is a secondary way of getting to the platform. Under Windows 10, one JavaScript Universal Windows App can target desktop, tablet, phones and much more.

Getting Started with Cross-Platform Mobile Development with Apache Cordova | Build 2015 | Channel 9

Getting Great Performance Out of Cordova Apps | Build 2015 | Channel 9

Wednesday, May 6, 2015

A Look at the Desktop Web App Market

The Desktop Web App Market at this time consists of Windows Store Apps, Chrome Apps (part of the apps in the Chrome Web Store) and the nascent Firefox Marketplace.

Current app store sizes:

Name of "app" storeNumber of apps
Google Play11,300,000
Apple App Store11,200,000
Windows Phone Store1300,000
Amazon App Store1240,000
Windows Store4>142,000
Blackberry World1130,000
Chrome Web Store2~34,000
Firefox Marketplace36,257
Chrome Apps on CWS32,704

Sources: [1], [2] (includes extensions), [3] (by my count on May 6, 2015), [4]

There were 91 paid Chrome Apps in the Chrome Web Store. Ignoring the 3 paid apps that had monthly charges, the average paid app had an estimated net revenue of $2,419. (Net revenue can only be estimated as one doesn't know if the app's price changed over time, if the number of users includes those that uninstalled, or if free copies to beta testers are included in the number of users.) There were only 4 apps that made more than $10,000. For details, see my spreadsheet. I have no information about revenue from in-app purchases.

There were 428 paid apps in Firefox Marketplace. No user/purchase count is available, so I did not attempt an individual breakdown. Until recently, the marketplace was really only for Firefox OS phones, so naturally the bulk of the apps there are aimed at phones. Interestingly, Microsoft has several apps in the store. In particular, Bing Maps seems popular on the platform.

So the long and the short here is that there is currently not much of a market for "Desktop Web Apps" outside of the Windows Store. That said, Google has done an amazingly poor job of creating one. I'll have more to say about that in a later post.

Monday, March 2, 2015

Android Backlash at MWC 2015

Something of an Android Backlash appears to be happening at Mobile World Congress 2015. (Not to say there are not plenty of Android announcements as well.)

First Cyanogen:

Recently, Cyanogen's CEO said, “We’re going to take Android away from Google”, receiving 70 million dollars from Microsoft to help fund the effort.

There are already a few places joining the effort:

Alcatel OneTouch Hero 2+ is a $299 phablet with Cyanogen OS - Liliputing

Cyanogen has a new look, and a new business collaborator in Qualcomm - Android Authority

FirefoxOS makes could on inexpensive phone promise:

Gadget Web Site - MWC: Orange fires off sub-$40 Firefox phone for Africa

ZTE Showcases Latest Smart Devices Destined for Europe at Mobile World Congress 2015 | Technuter

Even Verizon lining up to ship a Firefox OS phone in 2016:
Mozilla to Develop 'Firefox OS Smartphones' with International Operators : Tech : Chinatopix

Jolla keeps on trying with Sailfish:

Jolla's Sailfish OS 2.0 wants to take on Android with gestures

Jolla unveils Sailfish OS 2.0 and Sailfish Secure platform for phones, tablets - Liliputing


LG shows off its first webOS smartwatch - Liliputing

Windows Phone, definitely not dead:

AnandTech | Microsoft at MWC 2015: Lumia 640 and 640 XL Announced, 4K 120Hz Surface Hub Demoed

Combine these with Samsung's ongoing Tizen efforts and it's clear that there is some real dissatisfaction with Google's handling of Android.

Thursday, January 8, 2015

The Dumbing Down of the Tech World - CES 2015

It's not just CES that's getting me down... the Tech World slide started with iPhone. The iPhone itself wasn't a problem, it was the first truly useful smartphone. But it made so much money, so fast, that everybody wanted to be Apple. In ways, it is a general problem with corporate culture -- nobody seems to want to make a good product at a reasonable profit anymore. No one wants to solve an actual problem unless there is an obscene amount of money to be made.

I've been increasingly alarmed at Google's Material Design effort. It's not a problem with the general concept (i.e. it looks fine, though it is missing many things you need in a full UI standard), but rather with its infantile over-emphasis of images and white space. Consider this screen shot from my Chromebook looking at Google+.  Really, is this the best they can do? If this is  a "responsive" web app, then the concept totally fails. The format is even worse for communication than Twitter. (Seriously, go look at a page of Tweets and and you'll see a lot more information per page.)

If I wrote
this post
all in
style you
would get
annoyed, right?

Compare the richness of information you had in Google Reader, with the current Google+. It's not that I'm saying there isn't a place for Twitter, Facebook, and G+, but it is a poor way to disseminate news and information. And Material Design was clearly to make a G+ kind of app... it seriously fails when you try to make a standard business app or a productivity tool. The TT-RSS Android app (a replacement for Google Reader) got significantly harder to use when it adopted Material Design.

You see similar things going on with each release of MacOS X. It gets less useful for productive work and more like the clearly consumptive iOS. And Windows 8 is the epitome of the wrong way to "improve" things.

Really, the whole concept of an app working on a phone and all platforms up through and including the desktop is just flat wrong. What you want to do in a phone app standing at a street corner, is often very different from what you want to do at a desktop. "Responsive Design" is a good idea when you're dealing with different phone and tablet sizes... but as quickly as that tablet starts being used in a different setting/mode than a phone, it falls apart.

The current trend with the mobile "first" push results in a dumbing down of desktop apps.

But this dumbing down isn't just at the software level... here's the latest hardware craze:

The article is about "sticks" that aid taking pictures of your self and, if you can believe it, pictures of your own butt (a "belfie"). Now, you might want to say that I'm being an old grump about a trivial fad. After all, these these sorts of silly things have been around for ages (remember Chia Pets, Sea Monkeys, Pet Rocks?). Well, if it were limited to the sorts of companies that make a quick buck off that kind of fad, I'd be much less concerned. However, consider this major effort by Intel at CES:

The computer in a jacket button does at least show how small it is, but really it was just showing how few ideas anyone has about what to actually do with wearables at this point. But the ridiculous part was the "wristband that transforms into a selfie-snapping flying camera drone". Even if you could make this work for an affordable price... it would be dangerous to bystanders. And imagine going to a popular tourist attraction and having thousands of these things flying around. The noise alone would be hideous. What on earth possessed Intel to use that for a demo?

And it's not like it is just Intel: Amazon Prime Air
On my rather short street (say 20 houses), there's probably 10 deliveries a day... imagine if those were all by drone... the noise alone would be enough to make one want to apply for a drone hunting license.

There is a serious lack of imagination in the tech world today. People running around saying silly things like using drones for selfies and package delivery, but missing important and obvious things, like lawns sprinklers that kick on when a dog tries to take a crap in your yard! :-)

But seriously... why are there not $50 WiFi "picture" frames that let me program them from my phone and computers?

Why is it hard for me to tie my weather station information to my lawn sprinklers?

Why are there not intercoms that tie in with smartphones and desktop computers?

Why do smartphones not have a way to get a push notification from my local network?

Why is there no pervasive local network service capability, like Apple's Bonjour, but integrated into all operating systems including mobile?

Why do I stream music and video from the cloud? Wouldn't a caching local server be much more reasonable and efficient? With 4K and 5K videos isn't this problem just going to get worse?

Why do things like Google/Microsoft services need to be in the "cloud" at all? Wouldn't it be much more efficient for people to have a $300 server in their house they normally access and Google services are really just a backup/syncing mechanism?

Other than for Google's advertising purposes, why is your service data stored unencrypted outside of your own personal devices?

Why does my HVAC system know how to heat and cool, but does not know how to bring in hot or cool air from outside the house if that's the proper thing to do?

Why can't I use my smartphone's NFC to open the garage door, or my front door?

Why does my car's door only open for a special dongle, why can't it use my cell phone?

Why does my car not know it's me and not my wife (and set things accordingly)?

Why is it so hard to play music from my phone to speakers on my desktop machine?

Why do Bluetooth speakers only work from one device at a time?

When I walk into my house, my Fitibit automatically finds a system and syncs. Why isn't that the norm for everything else?

In a world where 8 terabyte disk drives cost $260, why do I even have to think about backups? Why isn't there a standard whereby all my devices automatically find a backup server and do the right thing? Why doesn't that server backup itself (encrypted) to the cloud during times of little usage to provide offsite backups?

Why do all my clocks not all auto-sync and get Daylight Savings Time correct?

Why do I get "phone" calls through at least 4 different means?

Really, the mind boggles at the possibilities, and all Intel can come up with is jacket buttons of no real use and wrist-borne-selfie-drones?

The tech industry needs to quit chasing flying-car-esque dreams of questionable value and ad-mineable social twaddle. The focus needs to be on things that actually improve people's lives, resource efficiency and productivity.

Sunday, November 23, 2014 Reaches 500 Bent iPhones Documented is a web site that is documenting bent iPhone 6 and iPhone 6 plus phones with pictures, video and the stories about how easily they were bent.

If you consider it's likely their only catching a small percentage of the stories, Apple is in real trouble here.

The growth in data is astounding:

The site documents pro-Apple bloggers having bent phones as well as Apple attempting to suppress information about the problem.
The site also has a map showing which stores are giving replacements and which are not. Apple has a very uneven response to this problem.

Sunday, November 16, 2014

Google Search Has Serious Problems

Recently, the TIOBE index rated Dart as it's #17th ranked programming language.

Dart is still not available in any production browser and its JavaScript output is still hideously large. How can a programming language that has no production environment to run in, be "popular"?

I'm not the only one to be asking about this:
Dart still far from hitting the JavaScript bullseye | ITworld

Even Dart "evangelist" Seth Ladd seem to be scratching his head about it when he announced the TIOBE findings on Google Plus.

I went searching (literally) for an answer and found that Google has amazingly skewed results for the Go, C#, R and Dart programming languages. The numbers for C and Java simply cannot be that (relatively) small.

I used four general purpose search engines and looked for the phrase "_PLName_ programming language" (in quotes) in each of the search engines and recorded the number of results returned. The number of results is listed, rounded, in thousands. The measurements were taken on 11/16/2014 between 2 and 6 pm MST.

Note that the method I am using is unfair to languages like JavaScript and CoffeeScript as their name makes people suffix with "programming language" less frequently.

Looking at the top 10 for the 4 search engines:

Bing, Baidu and Yandex return results that are believable. Google, on the other hand, is off in a fantasy world. Imagine not listing C and Java in the top 10! Dart #2, R #3, Go #4; seriously?

Something is very wrong here. Lots of people use search engine's number of results to get a gauge on popularity... Google needs to fix this as soon as possible.

Thursday, October 16, 2014

Apple iPad/Mac Event

The event was largely a rehash of WWDC with some standard incremental-enhancement product announcements with no surprises.
I killed my live blog notes... just too boring.

There were only two items of note:

1) They've only sold 225 million iPads -- ever -- (2010, 2011, 2012, 2013 and part of 2014).
To put that in perspective. The PC Industry in 2013, a truly down year, shipped 315 million units.
Android shipped 120 million tablets in just 2013.

Forget all about #2 below... see final update.
2) The Mac mini price dropped to $499 and appears to have SSDs... this needs closer examination... but might be worth a look. They are supposed to be available later today. Web site still not switched over, so I'm still waiting for other shoe to drop as it usually does with Apple pricing.

UPDATE: 1:30 Web site now up. The Mac mini SSDs were too good to be true. But it's still an OK upgrade. Probably the only Mac Desktop worth the money. Will need to wait for an iFixit tear down to see if I can upgrade it easily on my own.

UPDATE: 1:39 Apple scandalously is putting 5400 RPM disk drives in default configurations of iMacs. Steer away from these! I thought they would surely stop doing that this time. With the prices they charge, that's just insane. ALL HARDWARE UPGRADES ARE RIDICULOUSLY PRICED!

UPDATE 10/17 19:18 Forget all about #2 above, The Mac mini's memory is not even upgradable.
Apple just doesn't get that systems are getting cheaper and they were already over-priced.

Thursday, October 2, 2014

Why Smartwatch Development Should be in a Dynamic Language

I just ran across this article, talking about LG hedging their Android Wear bets:
WebOS is interesting in that it is a JavaScript front-end to C code.

This got me thinking about Android Wear and what I view as it's greatest mistake... the use of Java.
Virtual Machine people kind of go on and on about efficiency but in the end, VM's are just not as efficient as C. One of the major problems is garbage collection and the usage of cache. Not only does GC cause pauses, but the nature of how data storage is created and moved around means that their is no programmer control over data location. Essentially data is in random locations and this causes caches to be less effective.

I'll leave aside the problems of JITing as Android L is abandoning it because of battery life issues and switching to Ahead of Time compilation instead, which has its own set of issues.

My point is that Java has proven sub-optimal on a phone... why in the world, did they put it on a watch?

Watches are very resource-constrained. Small RAM, small storage, small caches and tiny, tiny batteries. This will hold true for several years. How does one make significantly sized apps in that environment? Most of the Googlers are too young to remember this, but Microsoft solved this problem many years ago. You see Office was becoming too fat for the amount of memory that was affordable at the time. Microsoft was actually rather competent back then and came up with an interesting solution. You see, for macro programming capabilities, Office already had a BASIC engine. They modified their C compiler to produce the byte code used by the BASIC engine. They used this feature on code that was not speed critical. Because the byte code had much more powerful instructions than machine code, the overall size of Ofiice was greatly reduced. Eventually they released the compiler technology to third parties. Properly used, it was quite effective.

This is why I find the LG watch so potentially interesting. Smartwatch apps simply should not be CPU intensive... there is little enough battery life there to do minimal things and still make it through the day. A watch app should really only be gluing together watch APIs (written in C) and data to and from the outside world (likely through a cellphone). A dynamic language is perfect for this. The OS itself should of course be written in C.

Some implementation ideas. The programs can be translated to byte code before being stored on the watch. The language should use an interpreter loop, not an AOT. While the interpreter loop is slower, that's not the point here... it's just glue. The interpret loop interacts well with cache.  Byte code (as Microsoft has shown) is much more compact than real machine instructions. One will need to be very careful about Garbage Collection, with reference counting, not being out of the question. (Reference counting, while it has flaws, doesn't have the annoying pauses one sees on Android, or really any interactive usage of Java or .Net languages. There are very good reasons why Python still uses reference counting.)

Wednesday, October 1, 2014

Top 10 Reasons Why Microsoft Called the Next Version Windows 10

  1. Apple's been at version 10 for 15 years now... perhaps it's a good place to be.
  2. Ten is the count of new features in Windows 10.
  3. They spent so much time talking about Windows 9, they thought they'd already shipped it.
  4. Apple had already used all of the big cat names.
  5. They wanted a name like MacOS X Mavricks, but Washington state just doesn't have many well know landmarks.
  6. (Related to the last) Windows 10 Space Needle just sounds wrong.
  7. So does Windows 10 Puget Sound.
  8. Because they think it will be lousy and they've reserved even numbered versions for that.
  9. Used Windows Calculator to add 1.


  10. Realized that Android, MacOS, ChromeOS and Linux have already taken Windows 9's spot.