Over the summer I decided it was time to replace my iPhone 6 Plus. I had installed iOS 10.3.3 on it and that had really broken the phone. I tried wiping out the phone and completely reinstalling everything but with no luck. Apple should not have pushed that update out to iPhone 6's. It also had the same effect on Rochelle's iPhone 5. My guess is that because both of these phones have 1GB of RAM (a ridiculously low amount even when the iPhone 6 came out) some change made in iOS 10.3.3 cause there to be a lot less memory available for apps. Apps began crashing and were extremely slow to load. Multitasking (such as it is on iOS) just about stopped. It became hard to listen to audio while doing other stuff. Even Apple's apps, like the settings app, became very slow to load and sluggish. All this from upgrading from 10.3.2 to 10.3.3.
I eventually tried upgrading to iOS 11 when it came out but the results were more or less the same. Essentially Apple had obsoleted my very powerful and perfectly usable 2.5-year-old phone. I do wish that instead of breaking the phone, they had just stopped updating it. The phone ran well before iOS 10.3.3. I think that they didn't do this because they were still selling the iPhone 6 so they couldn't leave it behind on software updates.
So, with a very strong annoyance at Apple, I started paying a whole lot more attention to reviews and rumors of upcoming phones. I was determined not to replace this iPhone with another iPhone. My two phones before the iPhone 6 Plus were Google's Nexus S and Nexus 4. I liked the Nexus S but I drowned it on my cross Canada bike trip. I really liked my Nexus 4. Neither of those phones was perfect but I could make them work for me and more importantly, they were very inexpensive. With that experience, I didn't really feel locked into the Apple ecosystem. I've avoided Apples iOS apps for the most part. I've been sticking with Google's apps on the iPhone so a switch back to Android should be fairly painless. The big highlight would be that Google's voice assistant is a first class app on Android instead of being stuck with the practically useless Siri on iPhones.
My biggest "must have" on the new phone was a good camera. If it wasn't for that, I'd likely be happy buying a mid-range Android. I wanted a phone that got security and OS updates in a timely manner so that mostly rules out all phones except for what Google provides. I also wanted a phone that did a good job of playing podcasts via Bluetooth. As the rumors started to come out about the new Pixel 2's, it seemed like one of them would be my new phone. They seemed way too expensive but all the reviewers loved the first Pixel phones and Google has really been positioning themselves as a head-to-head competitor to Apple in the phone market.
Once the Pixel 2s was announced, it seemed clear to me that the Pixel 2 (not XL) was right for me. I liked the look of the XL but there wasn't enough added value for the extra cost for me. I also kind of liked the idea of moving to a somewhat smaller phone from the larger iPhone 6 Plus. I bought the Plus so that it would be easier to read notifications when mounting on the handlebars of my bike and at the time Android notification didn't work well with cycling. With better bicycle computers that show phone notifications on them, this is less important. I really loved that both Pixel 2s had the same camera and that those cameras seemed like they were a big upgrade from the already great Pixel camera.
So I pre-ordered a black Pixel 2 as soon as the pre-orders opened. With their protection plan and taxes that came out to a whopping CA$1200 ($900 + extended warranty + tax)! That felt like it was at least $200 too high but I really felt like I was getting a premium, Apple quality level product so I went for it.
On October 23, the phone finally arrived. Although the phone has automated transfer software and an adapter, it still took me about 2 days to really transfer my life over to the Pixel 2. The phone is fast and the interaction is nice and smooth. It really highlighted how much iOS 10/11 has degraded the usability of the iPhone 6. My initial impressions were very positive. I really like the Android Material Design interface. It feels much more modern and usable than iOS. I like having Google voice assistant come up just by squeezing the phone or by saying "OK Google". I also liked being able to look down at the sleeping phone and see the time and notification icons, and when music is playing, the name and artist of the song! Oreo from a design and features perspective is amazing.
Then I started to use the phone in real life... I have at least 7 different Bluetooth devices that I have been using regularly with the iPhone, many at the same time. I have a mono-headset for listing to podcasts (actually I have 4 of these), a UE Roll speaker, a sound bar, a bike computer, car stereo, a sous-vide device and another device. These all have troubles working with the Pixel 2. Usually, once I get a device connected and working, they work well but it's that initial pairing and latter connection that is really problematic. When you turn on a Bluetooth headset that has already been paired, I expect it to just connect to my phone, and if there is something playing on the phone, it should just start in the headset. On the Pixel 2 that happens about 50% of the time. When you want to switch from one audio device to another, it should just happen when you turn it on. Mostly the Pixel doesn't even recognize the already paired device. I'll reboot the phone and the Bluetooth works much better, for a matter of minutes to hours and then it becomes a struggle again. I ride my bike with the mono headset and listen to podcasts. For various reasons, I will want to pause the playback while riding. Often when I attempt to start up the podcast, it just won't. I have to stop my bike, get out my phone, unlock, navigate to my podcast app and hit the play button. On my iPhone, just hitting the pause/play button on the headset would get the audio going again (although Apple did have a nasty habit of playing the Apple Music app, which I never used, instead of the last played app -- it also always played the same song).
Looking online, I see that Pixel 1 and Pixel 2 owners have been struggling with Bluetooth for a long time. Google has promised fixes but I'm starting to see that Google has a lot of fixes to do on the Pixel 2 (particularly the XL version) and Oreo so I won't hold my breath.
Something that really surprised me is that I couldn't find any way to just switch audio from one connected Bluetooth device to another or the phone speaker. iPhones have had that feature forever and I used it all the time. It was such a time saver for me. It really seems to me that Google developers have never properly tested or used Bluetooth with multiple devices connected or paired.
I also found that if I was listening to Bluetooth audio that I could not connect my Bluetooth bike computer. I would have to reboot the phone to get that to work.
While out on a ride last week, I was looking for interesting things to take pictures off to test out the phones amazing camera. On one occasion, I pulled out the phone, hit the camera app, it started up and then I waited for the live image. And I waited. And I waited. About 30 seconds later, the camera app crashed. I tried again. I waited about 15 seconds and finally, the camera app became responsive and I took the picture. I haven't seen this problem since but I have seen a lot of different apps crash. Overall, the apps seem to be somewhat unstable. I'm sure that will improve as Oreo is updated but should I wait? I thought I was buying a premium product, not a developer beta.
While no one has been complaining about the Pixel 2's screen (unlike the avalanche of complaints about the XL screen), I did find it a serious step down from the 3-year-old iPhone 6 Plus design. The screen was less bright and greyer. When you looked at a bit of an angle, the colour changed slightly. At larger angles, you get a rainbow effect that I thought went away on LCD screens a decade ago. I also found the brightness of the screen would change from moment to moment and that was very distracting at times. I suspect that the auto adjust for brightness isn't tuned well, but why isn't it?
There has been a lot said about how great a camera comes with the Pixel 2. It does take some really good pictures but have a look at this panorama image that I took.
It's the worst panorama image that I've ever taken. It looks like the camera didn't do any post-processing of the image. Other panorama images were the same.
So after almost a week with this phone, I've decided it's got to go back. It had a lot of promise and if cost CA$600 instead of CA$900 (and if Bluetooth worked better) I would keep it. It's just not the premium product that you would expect for $900.
So this begs the question, what smartphone should I get? My iPhone 6 Plus has been almost unusable since August but I waited until the fall announcements completed before making a choice. So what's my second choice? I might go for a OnePlus 5. It's got amazing specs and price and supposedly it's gotten its camera issues ironed out. But as is typical with OnePlus, all their phones are out of stock. How does OnePlus survive? I could go for a new Moto G or X. The reviews are good and they are quite reasonably priced but the camera is the big sticking point. They all seem to have mediocre cameras. Also, if Oreo on a Pixel is this bad, is it likely to be any better on a second-rate phone? Samsung phones sell well and they seem to make really good hardware. Unfortunately they really "crapify" their device and don't update them regularly, even for security fixes.
So that leaves me going back to the evil empire of Apple. I ordered an iPhone X at 12:05 am on October 27 just in case. I figured I could cancel the order or flip the phone if they are in as much demand as it looks like they will be. With AppleCare and taxes, it comes out to about $1760 for the "low-end" 64GB model. That's more than I've paid for any Windows computer in about 25 years. A similar iPhone 8 Plus is a more reasonable (??) $1410. I like the more compact form factor of the X but the FaceID and other faddish features scare me. Apple is kind of betting the farm that FaceID will take off and people will be willing to pay a massive premium for it. I have my doubts. If all that technology was on the back of the phone for augmented reality use, it might be a game changer, but it's not.
Reports are that the 8 Plus is not selling well. It's no longer in fashion with its 4-year-old design. Those sales might pick up once people realize that they won't be able to get an X before the end of the year. I would be afraid to go for the iPhone X. Apple has had a lot of problems with newly introduced technologies lately and the X has a lot that is new. I can see a lot of failures in its future. The iPhone 6 Plus was new tech when it came out. I had to have my replaced twice due to screen and battery failures. Because Apple has perfected the 8 Plus form factor, I bet that it will have very few failures. It may look dated but it's likely to "just work". And isn't that one of the main reasons people buy Apple products in the first place?
So it looks like I'll be going back to Apple and the iPhone 8 Plus.
Almost exactly 5 years ago, I experimented with using a Mac as my main software development platform. The net result was that I abandoned the effort after finding too many obstacles and not enough benefits. In the 5 years since, the Windows and OSX platforms have converged considerably and the kinds of software that I work on have become much more "cloud like" in nature. There has also been a slow transition from Windows first to OSX first development tools to the point where many libraries that I want to install, either don't work under Windows or are a real pain to install.
So I am again diving head first into the OSX ecosystem. This time, I've got a top of the line, refurbished Macbook Pro that was shockingly expensive at about 3 times the cost of my last high performance Windows laptop. At least performance shouldn't be an issue. It's also nice that I can plug 3 external monitors into this laptop so that I can roughly reproduce my 6 screen setup that I had previously.
So far things have been going pretty well but I've not gotten too far in reproducing my development environment. That's my goal for this week. I'll report on the progress that I make.
A friend wrote me with the following question:
Geoff, a woman I know told me that she heard that charging one's iPhone via a USB cable from a laptop does not provide it a "full" charge and that the only way to fully charge it is via the AC adapter and USB cable.
While she is technically incorrect, there are differences between various USB ports and how they provide power for charging. It's actually a very complex subject but the gist of it is that any particular USB port has a maximum amperage that you can draw from it for charging. This can range from as little as 50 mA up to 2100 mA. What sets this limit is the maximum available to the USB port itself, the number and types of devices connected to it and and a negotiation that happens when you plug it in. If you plug your phone into an unpowered USB hub, you will likely get some something around 50 mA. This will charge a high capacity battery very slowly. It's fine for my bluetooth headset or powering a mouse but any modern phone will have issues with it. In fact an iPhone will say that it cannot charge from such a USB port but it will actually charge, just very slowly.
Even with all of this complexity, no matter what it's plugged into and how long it takes to charge, when your iPhone says it's fully charged, it's fully charged... except when it lies to you. Yes, the iPhone will lie to you about it how full the charge is. (I think that newer Android phones do too) When it reaches 100%, it's actually somewhat less (maybe around 95%) and will continue to charge although the number won't increase past 100%. What this does is it allows your phone to run for quite a bit of time and still be at 100%. That makes Apple look good that it has a phone that uses such little battery. Also, modern phones do some power cycling while plugged in and at 100%. They will let the battery drain a bit and then charge back up. This helps with the health of the battery but they don't want you to see your phone at 95% if it happens to be at the bottom of the cycle after being plugged in all night!
You will also find some differences between how laptop USB ports work for charging. An older PC would supply 250 mA on a USB port and when you put the laptop to sleep, that port would be shut off so you had to keep the computer awake to charge a device. My 7 year old Dell laptop does this. When the iPhone came out, Apple changed their USB ports to allow them to deliver more than the standard maximum of 250 mA so that it could charge the iPhone faster than other PCs could. They also would leave the USB port on if you put the computer to sleep while the phone was plugged into it. Most PC laptops have adopted this feature although some have designated a specific port that will be left on and if you plug into a different one, it won't charge while sleeping. My 2 year old HP laptop is like this.
One thing to be sure of, the wall charger that came with your device will likely charge your device at it's fastest rate and often faster than a laptop. One interesting thing that we found was that an iPad wall charger would charge our iPhones at a faster rate than the wall charger that came with the iPhone.
I haven't looked into the USB3 specs but I wouldn't be surprised if they have added these non-standard, high current draw, power features to USB3.
I have been fascinated by the developing field of small, semi-autonomous DIY devices. I have an AR.Drone that, while being nominally remote-controlled, is able to maintain a stable altitude and position, even in light winds with no user input. It is really a user-directed autopilot.
One problem I have noticed with these systems is that they have limited ability to understand where they are and how external forces (and even their own motors) may change their location. Given the scale of these devices (less than a meter in any direction), it would be nice for the device to know where it is, down to an accuracy of centimeters.
My AR.Drone uses a combination of sonar to measure distance above the ground and a downward-facing camera to see small horizontal movements. This allows it to be amazingly accurate at maintaining a position as long as you stay within about 5 meters off the ground. Above 5 meters, it has a much harder time maintaining a consistent altitude and has a habit of quickly taking off into the sky once you reach the limits of sonar. Also, once you start to move, the horizontal location information is lost.
Adding GPS won’t help much because horizontal accuracy is unlikely to be better than 20 meters and vertical accuracy is even worse. (My bicycle rides often seem to be substantially under sea level, according to the GPS on my phone). GPS is great at generally locating where a device is. But, high precision is difficult and expensive to accomplish. Phones have very tiny accelerometers and magnetometers but just like GPS, these seem to be only useful for gross movements and are not very accurate.
What's needed to bridge the gap between GPS and sonar/visual cues is inertial navigation. This uses highly accurate linear and angular accelerometers in an integrative way to determine a position based on a previously known position. Before GPS, this was one of the ways that guidance systems were designed. Even now, many military systems still use inertial navigation, at least as a fallback, just in case GPS is unavailable. The problem has been that such systems have been large and heavy. It was very interesting to see this Wired article about the development of highly accurate but very tiny sensors that should allow for wider adoption of much more accurate inertial guidance in devices.
This will help build DIY autonomous devices that will be fun to work with. But, it has some other applications that I think are interesting, too. Incorporation of such a device will help create a much better record of my bicycle rides. While my ride distances are reasonably accurate, climbing and descending hills are not reported very accurately. This new technology could record these changes in elevation much more accurately and thus give a much better picture of energy use on a ride. Inertial navigation would be great for smartphone apps that keep track of where you are. There are lots of places in cities and even outdoors in more northerly mountainous or heavily treed areas where GPS signals are unavailable. Inertial navigation would help fill in the gaps and even provide higher accuracy. It would sometimes be great for my phone to know that I’m on the 12th floor, near the north side of the elevators of an office building.
In recent years, RSS seemed to have become stale, with little new developments around it. It’s been available on just about every blog and there seem to have been considerable consolidation around Google Reader as a consumption platform. There have been a few other tools, like FlipBoard that have done a good job of presenting data from RSS feeds into their systems. Even so, there has been little news and little that is really new around RSS.
The problem with RSS has been that there has not been a very good discover-and-follow mechanism that allows people to easily find and then start following the content from an RSS feed. There have been RSS feed icons and various buttons and tools that people have added to their blog so that you can easily follow that particular RSS feed using a specific tool or platform but nothing that is truly open and works with all platforms and is one-click easy-to-use. It has been so easy to Friend, Like, Follow or +1 things with newer tools that RSS has really taken a back seat.
Google’s announcement that they will shut down Google Reader on July 1, 2013 and the firestorm that followed shows us two things:
- Google is following the trend to leave behind the open web in favour of controlled information silos.
- Many people are resistant to this trend.
This suggests that there is an opening to push for more open, federated systems for distributing information. Maybe with some updated or new protocols to better compete with the silos that Google, Facebook, Twitter, etc. are trying to force us into.
I find it disconcerting how often I see yet another tech company creating a walled-garden, lock-in or a vertically integrated system that provides very little benefit to the Internet as a whole. They stand on the shoulders of many amazing people who selflessly provided groundbreaking technology for all to use. These new companies don't "pay it forward"; they merely look to extract value out of those earlier works.
The unfortunate thing is that by taking such a selfish approach, these new companies are likely hurting themselves as much as they are depriving the world of useful technology. Even in a company as successful as Twitter, I see that by initially keeping a strangle hold on the network and eventually stomping on the ecosystem developers built, and which ultimately helped them succeed, Twitter has severely limited the possibilities that their network might have developed into. I saw where Twitter was going when I developed Twemes.com in 2008 and ended up abandoning any further work in that ecosystem because I saw it as being a losing battle.
Truly groundbreaking and open technologies layered on the bedrock of the Internet have slowed to a trickle. The only real successes in recent times have been RSS and OAuth. The giant tech companies are trying to bury RSS. And, OAuth is still a limited, fledgling technology.
I hope to write more in this blog about some of the ideas that have been rattling around in my head for the last decade or so, specifically my ideas around adding a layer of Internet infrastructure that can help raise the lowest common denominator and that the next generation of technologies can be built on.
I spent some time this morning going through the software on a computer running Windows XP that has been a workhorse in my office for about 7 years since XP was last installed on it. It was an interesting exercise in electronic archaeology. There was software that I wrote many years ago on this machine. There were also IM clients like Pidgin and IM services from Microsoft, Yahoo and AOL. Remember those? There was lots of software on that computer that I couldn't even identify. I'm sure I installed it at some time but I couldn't even figure out what it was for now.
Over time, I have refined the software that I install on a new computer to the point where it is basically a bunch of web browsers, a programmers text editor and a web server and a software version control system. Everything else lives out on the cloud. My 60GB of music now lives on Google's servers. I backup my photos using Google and CrashPlan. I drag around a 25 year history of documents from machine to machine but that is now a 30 second copy process and CrashPlan keeps them safe. New documents, as rare as they are now, are created on Google Drive.
It seems to me that I will not likely buy/build another new desktop computer. Even a 7 year old machine is still "fast enough" for most of today's cloud based usage scenarios. I have several such machines sitting around that I will reuse when needed. I get a fresh computer ready for someone and get back their tired, virus ridden machine in return. With a little effort, that computer becomes the next fresh machine for the next person. Maybe I will upgrade the RAM or a hard drive and put a newer operating system on but they are still quite usable for Internet use or as a media device.
For the first time in my life, I have found that a laptop computer is mostly sufficient for my day to day work. I still feel more productive when it is integrated into my 7 screen setup in my office but I am surprised how much work I can get done anywhere with just the laptop and an Internet connection. I can even see myself going from a 7 pound luggable laptop to an ultra portable computer or even a tablet with keyboard although I don't thing that iOS or Android will cut it. I still need multiple windows open and lots of software running. Most importantly, I need good cut and paste.
We've come a long ways from the days when I used a 28 pound luggable Osborne 1 with 2 160kB floppy drives and a 3 inch green monitor!
Over the last couple of weeks, I had a chance to "experience" the customer service of a Canadian retailer, FutureShop. I have ordered from their website many times over the last couple of years. They sometimes have pretty good prices and in most cases, they offer free shipping.
My latest order was for 3 bottles of Sodastream syrup. They sold these at list price but they offered free shipping. The particular flavours that we want are not available locally so the free shipping made it worth using FutureShop.
The box arrived and upon looking inside, there was only 1 of the three bottles of syrup. I checked to make sure that I didn't get something wrong and then sent off a message to FutureShop customer service. I explained in detail that I had, what I later learned, a "short shipment".
The first response from FutureShop was and offer of a RMA number. I had to explain to them that there was nothing wrong with the one bottle that I got, and that I just didn't get everything that I ordered. They apologized asked for some more information and said that they had escalated the issue and I would hear from someone in 1-2 days. After waiting for 5 days, I asked for an update and was told curtly that my issue had been esculated and would get a response withing 1-2 days. I complained that it had already been 5 days. I was then told that this esculation was just done that day and it would be an additional 2 days for a response. After 11 days had elapsed, I again asked for an update, stating that I thought that their support had been a horrible experince and that I would be contacting the credit card company to see if they could prompt FutureShop into action. I also mentioned I would tweet my experience. The only response from the support people was an apology for the delay but no real information.
I then tweeted:
I've been stonewalled by @FutureShop for 11 days to get a response about a shipment that did not deliver what I ordered. Terrible support.
I got a twitter response from @FutureShop asking for my order number.Later that day I got a call from someone at FutureShop's head office saying that everything had been cleared up. The product that I had paid for and not received was refunded. That seemed reasonable and she even offered a 10% discount off my next purchase. That was all I was looking for but it took 12 days and a lot of frustration to get to that point.
Today, after verifying that I had gotten the refund, I went to order more syrup FutureShop. FutureShop had raised the price of that particular syrup from $6.99 (the list price) to $11.99, almost double the list price. I send a message to their customer support asking if this was an error and after a couple of hours the response I got back was full of boilerplate but no actual answer. I give up! I'll find another source for this syrup.
From my experience with FutureShop, I see that they have two types of customer support. For questions that come in via their website they must have a high volume data center, like a call center, who's goal is to blast through customer support queries as quickly and cheaply as possible with no regard to being truly helpful. Of the 6 or so responses that I got from this data center, none really answered the question I had asked. I don't blame the people at the keyboards, I'm sure that this is the results of policies set by managers.
The second type of customer support is for social media. This is obviously handled in a more responsive and high level manner. Because this is done in public, they are taking much more care to handle issues quickly and thoroughly. This is how their more general customer service should be handled too. Obviously they do not understand the damage that their existing system is doing to their reputation. I am likely to avoid FutureShop in the future because I know if anything goes wrong, it will be painful to get things fixed.
In 1998 we were living in San Francisco at the height of the dot com boom. We got one of the first residential DSL lines that PacBell started to roll out. It took them 2 full days to get it installed! I think that the initial price was $160/month for what today would be seen as a very slow connection. What was important was that it was always on -- at least if it didn't rain. Not only did we have a "fast", always-on connection to the internet, we could run our own internet services. We could replace our very expensive DellHost server that we were using at that time.
We built a beige box tower computer that had a 400MHz Celeron CPU on an Intel SE440BX-2 motherboard, 128MB of RAM, 10GB of disk space and running Debian Linux and call it Matrix. We ran a number of websites from Matrix. FlashCommerce.com, Flashlog.com and well as personal websites and some sites for others. We created websites to play around with some early SEO techniques and even a bit of content farming. This went on for a couple of years until ISPs started complaining about putting web and email servers on residential connections and we finally had to go back to data center hosted servers. Once Matrix was retired as a production server it took up service as a development server for developing websites before pushed to a production server. Over the years it has it's RAM tripled up to a whopping 384MB and had it's version of Debian upgraded many times. It eventually was too slow to effectively be used as a development server and was retired from development service sometime around 2005.
Matrix still ran reliably so we started to use it to do regular backups of our production servers. We added a couple of hard drives in the years since then as our backup needs increased. It has run for the last 7 years constantly transferring data to and from production servers in data centers around the world and to NAS devices that we have on our local LAN.
I noticed this morning that it was having a DNS problem and that it had not done some of the backups it should have done. I traced the problem down, fixed it and restarted it's backup. The load was too much for it. After transferring a couple of gigabytes from our production servers Matrix crashed. Only the second or third time it has crashed in it's many years of service and only about the third reboot in about 6 years. It never recovered from that crash. The BIOS booted very slowly, RAM check was glacial and it only recognized 2 out the 4 IDE devices connected to it. Matrix halted displaying the dreaded "Operating System not found" error.
I spend an hour or so cleaning it out and attempting get the machine to boot off of different devices without success. So after 14 years of absolutely reliable service, Matrix has been powered down one last time.
I received an email a while back that stated that I owned a certain .us domain name and that the sender owned the .com equivalent. The email offered to sell me that .com domain name for $100 and would use an escrow service to guarantee the transaction. On the surface, this would seem to be an attractive offer except for one thing: I already own that .com domain too!
While I won't waste my time following up on this, it did make me wonder about the "escrow service" that they would have suggested for this transaction. A scam in itself I would assume.
I do look at such email messages closely because sometimes they can be very useful. I had a similar situation where I owned a .us domain, got a message similar to today's message but I did not own the .com domain. A quick check showed that this particular .com has just been deleted (freed for new registration) and that the spammer would have just registered the domain and then sold it to me if I had responded. Instead, I just registered the domain myself. This has happened twice in the last couple of months!