Recent Posts

California’s Governor Newsom Executive Order Requiring Zero-Emission Cars and Passenger Trucks by 2035 is Shortsighted

(Opinion) On September 23, 2020, California’s Governor Gavin Newsom signed an executive order requiring all new cars and passenger trucks sold be zero-emission by 2035. In light of the devastating wildfires the West has been experiencing this season, the executive order is intended to move the state away from dependence on climate changing fossil fuels.

I fully support taking action to reduce manmade carbon dioxide production to stop the effects of climate change. I just do not think requiring zero-emission cars is a viable solution. A zero-emission vehicle does not emit any pollutants, including climate changing carbon dioxide, when in operation. Zero-emission does not mean carbon dioxide is not a byproduct of the overall energy process to operate the vehicle. For example, combustion of fossil fuels could be involved in generating electricity for an all-electric vehicle, and the all-electric vehicle is still considered zero-emission. Hydrogen powered cars are also considered zero-emission since they only emit water vapor during operation.

What is important is that we reduce our overall carbon dioxide production. There are many ways to go about this. Limiting consumer choice to just zero-emission vehicles is where I have a problem with the executive order. At this time, there are two primary options for a zero-emission vehicle: 1) all electric and 2) hydrogen powered. Zero-emission in the future will most likely be all-electric vehicles. Hydrogen powered vehicles will have a rough time establishing a foothold due to challenges associated with distribution of hydrogen fuel to pumps.

For many consumers, an all-electric vehicle will not work for them. There are two main reasons for this: 1) lack of access to charge their vehicle; and 2) time to charge the batteries. Many people do not have a garage with an outlet to park their car at night. They must park outside on the street, or in a car port without a plug nearby. And many people have jobs where they need to drive a lot; like Uber drivers or real estate agents. These people cannot wait hours for their car to recharge. I think an all-electric vehicle will work for many people, but it will be a serious problem for others. This is why consumers need more than one choice.

100% biofuel vehicles are a carbon neutral solution that needs to be on the table. A 100% biofuel vehicle is not considered zero-emission since it does emit carbon dioxide, along with other by-products of combustion. The production of biofuel absorbs carbon dioxide, and then it is re-emitted when combusted; thus, a zero-carbon life cycle. Algae is the most common plant being researched for biofuel production. The growth of algae absorbs tons of carbon dioxide before being turned into a fuel. Today, cars and trucks can run on biofuel with little modification, and they enjoy similar expected performance of range and refueling times as gas vehicles.

Biofuels are being developed not only for cars, but for our entire transportation sector. This includes jet fuel for airplanes, and fuel for cargo ships, trains, commercial trucks, farming vehicles, and construction vehicles.

This is what I think makes more sense. Things that do not move should be electrified. Things that do move should transition to biofuel or all-electric. This means our buildings need to switch to 100% electricity. Starting today, all new buildings should be all electric. Starting today, replacement of aging hardware in buildings should be all electric. This means electric heat, electric stoves, electric water heaters, electric driers, etc. There is no reason we cannot electrify our buildings starting right now.

Consumers need a choice between a 100% biofuel vehicle or an all-electric vehicle. The executive order only allows for zero-emission, and that needlessly blocks access to biofuel technology to consumers. We all know that all-electric is not going to work for jet airplanes. It is questionable for the trucking industry. All electric cargo ships probably will not happen either. Biofuels are being developed to address the needs of our entire transportation sector. The consumer transportation sector should have access to biofuel technology since biofuels will likely be a part of our green transportation future.

The Simple Guide to Meditation


You may be thinking that meditation is too esoteric or requires special training. Those assumptions about meditation are not true. Anyone can learn to meditate. Meditation is remarkably simple in principle. A “guru” does not need to teach you how to do it. You do not need a specially chosen mantra. This article strives to distill meditation to its simplest form. By breaking meditation down in plain English, you will be able to begin a meditation practice.

One of the challenges of meditation is knowing if you are doing it right. Another challenge is trying to describe the process of meditation. There really is a lack of adequate words to describe how to direct your consciousness a certain way, and how to recognize when you achieve a meditative state. And to be honest, no instructor can tell you if you are doing it right because the instructor cannot be in your head.

With practice, you will be able to recognize if you had a good meditation session. So really you learn to meditate by practicing, and you must teach yourself how to improve. In time, you will be able to distinguish nuances in your sessions. It is sort of like learning to tune a musical instrument by ear. At first, you cannot hear the subtle beats caused by two pitches being slightly out of tune. But with practice, you learn to home in on the sound.


Meditation requires a quiet environment. Distracting sounds, especially people talking, can pretty much ruin a meditation session. Even if you can find a private room to meditate, sound can leak through thin doors. That is why I recommend using earbuds and playing some sort of masking sound. A masking sound can be like the sound of the ocean. A good masking sound does not have distinctive audio events. It should be rather monotonous. Nature soundscapes can work well as a masking sound. In-ear earbuds already serve as ear plugs, and when combined with a masking sound, most exterior sounds will be blocked. This will allow you to create a space for meditation without it being a quiet space.

Meditation also requires a gentle signal to tell you when to stop. When you are deep in meditation, perception of time can change a little. If you are thinking about how long you should meditate and when you should be stopping, that thinking can diminish your ability to meditate. A timer with a gentle alarm tone will help solve this problem. You will be able to stop thinking about the duration of your meditation.

A smartphone can provide both noise masking and serve as a timer signal. That is what I do, and I find I can meditate just about anywhere. A timer app can be used to alert you when your session is over. Try to pick a gentle alarm sound. An abrupt alarm sound can shock you out of meditation. That could generate some anxiety about anticipating when the alarm will go off, which again, will prevent you from getting deep into meditation.

You also need to be comfortable while meditating. You need to be comfortable, but not so comfortable that you could fall asleep. I do not recommend laying down. When lying down, there is a good chance you will fall asleep. We have all seen people meditating in the crossed leg lotus position. When first starting out, I do not recommend this position for the simple reason it is uncomfortable. The discomfort will be a distraction. Just sitting in a chair with straight posture and your hands on your thighs will do.

How to Meditate

Close your eyes and take three deep breaths. With each exhale, find excess tension in your muscles and direct focus to relax those muscles.

Continue to breathe deeply and slowly. The depths of your inhales should stabilize to about 75% of your initial deep breaths. Your breathing should be deeper than normal breathing, but not excessively deep. Your breathing rate should also stabilize to be slower than normal breathing. Deep breathing will naturally slow your breathing rate.

Once you are breathing deeply and slowly, direct your mental focus on maintaining the rhythm of your deep breathing. Focus on every aspect of your breathing. Focus on maintaining the same depth of inhale. Focus on the feeling of release and relaxation from the exhale.

As you focus on your breathing, your mind will wander to other thoughts. Once a wandering thought enters your mind, do not let the thought chain into other related thoughts. Instead, just let the thought go without any extra processing or judgement. Return your mind to focus on your breath.

Thoughts will continue to enter your head. This is normal. Each time a thought enters, gently return your mind back to your breath. Continue this until your timer goes out.

Initially, I would start out with a five-minute session. Eventually work up to 15-minute sessions. You should try to meditate once a day. Experiment with a time of day that works. Once you find a good time, stick with that time. You should not try to meditate within 30 minutes after eating. The early process of digestion impacts meditation.

That is all there is to meditating!

Are you Doing it Right?

So, when you focus on something very monotonous like your breathing, your mind enters a different state. It is not asleep, but it also is not the same as normal consciousness. It is like you put your mind into a low power state. When your surface thoughts calm down and quiet, you can start to sense the low-level background noise of your brain. When I start to drift into a meditative state, sometimes random, distant memories can surface. That is when I know my higher-level concision is letting go. You start to become aware of lower level activities that normally are masked by your higher-level consciousness.

You can focus on anything that is monotonous. It does not have to be your breath, though the breath is the easiest, and I think most effective. You can focus on monotonous sounds, or sensations in your body, or a phrase you repeat in your head. I have tried all of that and keep returning to focusing on my breath.

As I mentioned earlier in this article, there really are no words to describe what a proper meditative state feels like. All I can say is you have to keep practicing. You will develop the skill of knowing the difference.

The Benefits of Meditating

When just starting out meditating, you must take it on faith that you will get better at it, and that there will be some benefit. It will take a few months of practice before you start sensing any benefit. And even if you are a seasoned veteran of meditating, the benefits are subtle. The benefits can turn on so gradually as your practice improves, that you may not notice anything happening. After meditating for six months, stop for a week, and then start back up. When you start back up, you will be able to perceive the benefits.

Meditation will help you feel more relaxed and less stressed, give you better attention and focus, and will help you sleep. Meditation will also help you with self-control to change your behavior. I consider those pretty serious benefits.

I wish you the best of luck on your meditation practice. I do believe if you stick with it, meditation will grow to be an important, valued tool in your life.

Copyright © 2020 by Jeffery Lewis. All rights reserved.
Published by

Asynchronous Programming with C++

Asynchronous programming is a common pattern that vastly simplifies multithreaded programming. The idea is that a thread calls a function to be executed on a background thread. The call to the function returns immediately on the calling thread, and the function continues executing on the background thread. When the function is complete, the calling thread can get the results. A large percentage of multithreaded programming can be done using the asynchronous programming pattern. If the asynchronous programming pattern can be used in a situation, it is good practice to go ahead and use the pattern instead of creating a custom multithreaded implementation. A custom multithreaded implementation will be harder for other programmers to understand, and potentially more error prone. This article will provide a sample program illustrating asynchronous programming in modern C++.

In the sample program, there is a class called BackgroundWorker. BackgroundWorker has just two methods: DoWork() and DoWorkAsync(). DoWork() is a function that simulates a CPU intensive long running task. It generates millions of random numbers and sums them. DoWorkAsync() calls DoWork() on a background thread. Multiple DoWorkAsync() calls are made one after the other so they are executed in parallel on separate threads. The results of each DoWork() (i.e. the sum of the random numbers) is then retrieved and reported. The sample program is completely useless, but it illustrates running multiple execution threads of a function in parallel and then getting the results when they complete.

With C++ 11, the standard added the ability to do cross platform multithreaded programming with just C++. You no longer need to make operating system specific threading API calls to get the job done. The C++ standard added std::async() in the header for the purpose of calling a function asynchronously. The function can be any callable object in C++. That means a pointer to a function, a pointer to a member function, a functor, a lambda expression, or a std::function template instance. std::async() will return a std::future of the callable object which represents the execution return value when the background thread is finished. This return value is retrieved by calling get() on the future. If the background thread is still executing the function when get() is called, then get() will block until the function is done or throws an exception.

Here is the source code for the C++ command prompt program.


#pragma once

/**	@class BackgroundWorker
*	Use to simulate a long running function through use of summing
*	random number generation. DoWork does this work synchronously.
*	DoWorkAsyn will call DoWork asynchronously. */
class BackgroundWorker {


    /**	Simulate doing long running calculation by summing randomly
    *	generated integers.
    *	@param[in] iRepeats  Number of random numbers to sum.
    *	@param[in,out] fAverage  As output, the average of all the random numbers.
    *	@param[in] callBack  Function callback called when processing is done.
    *		The long long parameter is the return value of this method.
    *	@returns sum of random numbers.
    *	@throws runtime_error if a certain random number is chosen a certain
    *		number of times. This is to simulate exception handling. */
    long long DoWork(long iRepeats, float& fAverage, std::function callBack);

    /**	Essentially calls DoWork() asynchronously.
    *	@param[in] iRepeats  Number of random numbers to sum.
    *	@param[in,out] fAverage  As output, the average of all the random numbers.
    *	@param[in] callBack  Function callback called when processing is done.
    *		The long long parameter is the return value of this method.
    *	@returns future of DoWork().
    *	@throws runtime_error if a certain random number is chosen a certain
    *		number of times. This is to simulate exception handling. */
    std::future DoWorkAsync(long iRepeats, float& fAverage, std::function callBack);

}; // end class BackgroundWorker


#include "BackgroundWorker.h"

using namespace std;

BackgroundWorker::BackgroundWorker() {

long long BackgroundWorker::DoWork(long iRepeats, float& fAverage, std::function callBack) {

    cout << "Entering DoWork with repeats " << iRepeats << " on thread id " << std::this_thread::get_id() << endl;

    long long llSum = 0; // This is the return value of the sum of random numbers.
    fAverage = 0.0f;

    if (iRepeats < 0) {
        return llSum;

    std::shared_ptr spRndEngine; /**< Mersenne twister random number engine. */
    std::shared_ptr spRndDistribution; /**< Int distribution. */

    // This is used to generate a seed for the random number generator. Time is no
    // longer recommended to use as a seed.
    random_device theSeed;

    // Use the seed in instantiating the random number engine.
    // Note the use of the () operator on the theSeed.
    spRndEngine = make_shared(theSeed());

    // Set up a uniform distribution of ints from 0 to 99.
    spRndDistribution = make_shared(0, 99);

    int iBadNumberHitCountLimit = iRepeats / 100 + static_cast(iRepeats*0.00003f);
    int iBadNumberHitCount = 0;

    for (long i = 0; i != iRepeats; ++i) {
        // This call uses the random engine in the random distribution to
        // create a random number from 0 to 99.
        int iRandomNumber = (*spRndDistribution)(*spRndEngine);

        // Simulate something going wrong by throwing an exception if a certain number
        // is hit a certain number of times. 66 is the bad number.
        if (iRandomNumber == 66) {
            if (iBadNumberHitCount >= iBadNumberHitCountLimit) {
                // Simulate some type of exception occuring.
                stringstream ss;
                ss << "Bad value processed. Number of repeats is " << iRepeats << endl;
                throw runtime_error(ss.str());

        llSum += iRandomNumber;

    cout << "Exiting DoWork with repeats " << iRepeats << " on thread id " << std::this_thread::get_id() << endl;

    fAverage = static_cast(llSum) / iRepeats;
    return llSum;

std::future BackgroundWorker::DoWorkAsync(long iRepeats, float& fAverage, std::function callBack) {

    // Note the return value of this method is a future with return type of the function DoWork.
    // Note the use of std::ref() to pass fAverage by reference.
    // Note how address of member function is passed.
    // Note how the pointer to instance of class is passed after member function to call (e.g. this)
    // Pasing this is only required when passing a member function.
    // launch::async assures it is launched on another thread asynchronously.
    return async(launch::async, &BackgroundWorker::DoWork, this, iRepeats, std::ref(fAverage), callBack);


// CPlusPlusAsyncCPApp.cpp : This file contains the 'main' function. Program execution begins and ends there.
#include "BackgroundWorker.h"

using namespace std;

int main() {

    try {
        // Get the start time.
        using std::chrono::system_clock;
        auto tStart = system_clock::now();

        cout << "Starting program on thread id " << this_thread::get_id() << endl;

        unsigned int uiNumberOfCalls = 4; // This is the number of parallel, asynchronous calls
        // to DoWork to make.
        int iBaseRepeats = 10000000; // Base number of random numbers to sum.

        BackgroundWorker bw;

        // Set up vector of futures.
        vector vFutures;

        // Set up vector of averages of random number. This holds the fAverage output
        // parameter to DoWorkAsync.
        vector vfAverages;

        /**	Define the callback function for the asynchronous call. Note how the
        *	lambda signature matches the callback signature.
        *	Note, this callback is actually running on the thread that calls it.
        *	To invoke something on the main thread, would need to post a message
        *	via OS call (e.g. PostMessage).
        *	@param[in] llSumm This will be the sum of random numbers. */
        function TheCallBack = [](long long llSumm) -> void {
            cout << "Entering callback on thread id " << std::this_thread::get_id() << endl;
            cout << "Callback is passed sum of " << llSumm << endl;

        // Call DoWorkAsync uiNumberOfCalls in parallel.
        for (int i = 0; i != uiNumberOfCalls; ++i) {
            // Note how the number of repeats is incremented for each call. This is so the calls can be
            // distinguished.
                bw.DoWorkAsync(iBaseRepeats + i, vfAverages[i], TheCallBack)

        // Note, instead of using a callback to know when the DoWork is complete,
        // you could also poll the future with the Is_ready() method. If true,
        // then the execution thread has finished. Is_ready() does not block.
        // Is_ready() is experimental. You can also use wait_for(0) to check if 
        // the future is ready. wait_for() with a non-zero duration will block
        // for up to that duration waiting for the future to be ready. get() will
        // return the return value of DoWork. If an exception is thrown
        // by DoWork, it will be transferred to this main thread at the time
        // of calling get(). get() does block until the executing thread is done
        // or an exception is thrown.
        for (int i = 0; i != uiNumberOfCalls; ++i) {
            long long llSum = vFutures[i].get();
            cout << "Returned with sum " << llSum << " and average " << vfAverages[i] << " for number of repeats " << iBaseRepeats + i << " on thread id " << this_thread::get_id() << endl;

        // Get the end time and output the duration.
        auto tEnd = system_clock::now();
        auto durationRun(tEnd - tStart);
        using std::chrono::duration;
        cout << "Run duration: " << duration(durationRun).count() << " milliseconds" << endl;

        cout << "Ending program on thread id " << this_thread::get_id() << endl;
    catch (exception & e) {
        cout << "Exception caught! Message: " << e.what() << endl;
} // end main

The C++ code above is nicely commented. Reading those comments should explain most of the functioning. The C++ program illustrates features you would probably want to use in a real world program. For example, it shows how to pass a parameter by reference so you can use an output parameter in an asynchronous function (see fAverage parameter in DoWork() and DoWorkAsync() methods).

Exception handling is also illustrated. The DoWork() method can throw an exception if a specific random number is called a specific number of times. The exception does not happen on most runs. You have to run the program multiple times to see the difference between when DoWork() completes successfully on all threads, or when one of the threads throws and exception. If one of the threads throws an exception, the exception is percolated back to the main calling thread. It is important to understand that if an exception is thrown, it does not happen at the call to DoWorkAsync(). The call to DoWorkAsync() simply returns immediately a future to the method. The call to get() on the returned future is when the exception will percolated back to the main calling thread. Putting a try-catch around the future::get() is how you would catch exceptions thrown by the asynchronous function.

It is important to understand that when get() is called on the future, if the asynchronous method is not done executing, it will block the calling thread until it is done. When it is done, you will either get the return value of the asynchronous method, or an exception will be thrown if the asynchronous method throws an exception. get() blocking may be unacceptable in some situations. If this was running on the main UI thread for example, blocking could be unacceptable. You could call wait_for(0) to see if the future is ready. The 0 passed will cause wait_for() to return immediately. Unfortunately, this amounts to polling, and polling can be awkward to orchestrate while also keeping the UI responsive.

This example also illustrates passing a callback std::function to the asynchronous method. When DoWork() is done, the callback function is called by DoWork(), passing the return value to the callback function. You do not need this callback function if you are fine with just using future::get(). I wanted to also show the option of the asynchronous method calling a callback when done. Though not shown in this example, you could post a message on the message queue in the callback function. This will trigger an event when processing is done. This will allow your UI to know right away when processing is done without polling or blocking. Since the callback is called by DoWork(), the callback runs on the background thread that DoWork() is running on. This means you will not be able to access UI controls from the callback; thus the reason the callback will need to post a message to cause something to happen on the UI.

Here is an example of the program’s output when all the threads succeed:

Starting program on thread id 13304
Entering DoWork with repeats 10000000 on thread id 10868
Entering DoWork with repeats 10000001 on thread id 14528
Entering DoWork with repeats 10000002 on thread id 9752
Entering DoWork with repeats 10000003 on thread id 1036
Exiting DoWork with repeats 10000001 on thread id 14528
Entering callback on thread id 14528
Callback is passed sum of 495023730
Exiting DoWork with repeats 10000000 on thread id 10868
Entering callback on thread id 10868
Callback is passed sum of 494943204
Returned with sum 494943204 and average 49.4943 for number of repeats 10000000 on thread id 13304
Returned with sum 495023730 and average 49.5024 for number of repeats 10000001 on thread id 13304
Exiting DoWork with repeats 10000002 on thread id 9752
Entering callback on thread id 9752
Callback is passed sum of 494986882
Returned with sum 494986882 and average 49.4987 for number of repeats 10000002 on thread id 13304
Exiting DoWork with repeats 10000003 on thread id 1036
Entering callback on thread id 1036
Callback is passed sum of 495006297
Returned with sum 495006297 and average 49.5006 for number of repeats 10000003 on thread id 13304
Run duration: 281.249 milliseconds
Ending program on thread id 13304

As can be seen from this output, four DoWork() invocations occur one after the other, all on different threads. This gets all four threads working in parallel. As the DoWork(s) complete, you see the trace of exiting DoWork and entering the callback. Since the callback is called by DoWork, the callback and DoWork run on the same thread. This is evident by the thread id reported. The statements beginning with “Returned with sum …” come from the main function on the main program thread. The finishing of the threads does not necessarily happen in the order the threads were launched. It is random the order the threads complete. But the reporting back on the main thread following the future::get() call will always be in the order the threads were launched. This is because future::get() blocks until the thread either finishes or throws an exception. This is not as bad as it might seem because, while it is blocking on the main thread waiting for the first thread to finish, all the other threads are running in the background. The time it takes to call future::get() on all four threads is roughly the time it takes for the longest running thread.

Here is an example when one of the threads throws an exception:

Starting program on thread id 10668
Entering DoWork with repeats 10000000 on thread id 2044
Entering DoWork with repeats 10000001 on thread id 11016
Entering DoWork with repeats 10000002 on thread id 5932
Entering DoWork with repeats 10000003 on thread id 13068
Exiting DoWork with repeats 10000001 on thread id 11016
Entering callback on thread id 11016
Callback is passed sum of 494945635
Exiting DoWork with repeats 10000003 on thread id 13068
Entering callback on thread id 13068
Callback is passed sum of 494999070
Exiting DoWork with repeats 10000000 on thread id 2044
Entering callback on thread id 2044
Callback is passed sum of 495124183
Returned with sum 495124183 and average 49.5124 for number of repeats 10000000 on thread id 10668
Returned with sum 494945635 and average 49.4946 for number of repeats 10000001 on thread id 10668
Exception caught! Message: Bad value processed. Number of repeats is 10000002

As can be seen, the third thread throws an exception. The exception is percolated to the main thread when future::get() is called on the third thread. The main()’s try..catch catches this exception, and thus you see the “Exception caught!” message. Once the exception is caught, the programs terminates, and you never get the results back from the fourth thread.

Well that concludes this tour of asynchronous programming in C++. A lot of your multi-threaded programming can fit into the asynchronous pattern nicely. When it can, using the asynchronous pattern saves coding time, saves time for other programmers to understand your code, and potentially saves time to debug errors. Happy coding!

Copyright © 2020 by Jeffery Lewis. All rights reserved.
Published by

Why Microsoft’s Mobile Strategy is Unclear

At the October 2, 2019, Surface Event, Microsoft finally revealed to the world what they have been working on. Back in February 2018, I wrote a blog article explaining why Microsoft has the best long term mobile strategy despite the failure of their Windows 10 Mobile platform. Microsoft will be making phones again, but it is not what I thought. This article is an update to the original article given the latest information from the Surface Event.

First, I want to expand on a computing vision that the original blog article discussed. Back in 2015, when the first Windows 10 Mobile phones came out, Microsoft made a video showing the new Lumia 950 series phones. In the video, a man sets his phone on the table. On the table was a high definition TV, and a wireless keyboard and mouse. The phone presumably connects to the TV with Miracast, and the keyboard and mouse connect with Bluetooth. The Windows 10 Mobile device goes into Continuum mode where something very similar to Windows 10 desktop was presented on the TV. The man was then able to use his phone pretty much like a desktop computer and was shown running Office and searching the web like he was on Windows 10.

This was not a concept video. The Lumia 950 phones running Windows 10 Mobile could actually do this back in 2015. UWP apps that where engineered for various form factors could scale from phone to desktop beautifully. Though they retired Windows 10 Mobile, I was under the assumption this form factor agnostic vision would be refined with a new version of Windows based on Windows Core OS. This new version of Windows we now know is called Windows 10X.

Microsoft showed off their new Surface Duo phone at the event. This is essentially the dual screen Surface Andromeda that was leaked several years back. The big surprise is the Surface Duo is running Android. The Surface Andromeda had been initially developed to run an earlier version of Windows 10X. It seems Microsoft decided to switch to Android to increase the marketability of the Surface Duo. The Microsoft Store does not have anywhere near the apps in Google Play. If the Surface Duo ran Windows 10X, people would most likely still need either an Android or iOS phone for mobile app workflows. Microsoft is presuming only the most die hard Surface fans would buy a Surface Duo running Windows 10X due to limitations with apps. The mobile app landscape is slowing changing to be web based instead of native. This happened with PCs decades ago where web apps slowly replaced native programs. Native programs remain, and always will, but most work on the PC is done through the browser. This will be true for mobile in time. When that occurs, the OS platform will not be as relevant when it comes to app availability.

Prior to the Surface Event, I thought Microsoft was on track to make a pocket PC as their long-term mobile strategy. Is the dream of a pocket PC dead? Will we have to continue to live in a form factor fragmented computing world? The fragmented computing world of today has us using Windows on devices with screens 10 inches or above, but then when we go smaller, we have to switch devices, operating systems, accounts, and apps. This is expensive, time consuming, and more complicated. I think with Microsoft putting Android on the Surface Duo (instead of the initially intended Windows 10X), it makes the Windows pocket PC dream ambiguous, but does not rule it out for the long term.

The vision I have for the future is where each person of a household only has a single computing device. This single device would be in the form factor of a pocketable device. To use other form factors, the household would have a 2-in-1 lapdock and a dual monitor docking station for shared use. A 2-in-1 lapdock looks like a 2-in-1 laptop/tablet, but does not have the computing internals. It has monitor, keyboard, standard ports, power supply, and battery. You would use a USB-C or Thunderbolt cable to connect the pocket PC to the 2-in-1 lapdock. Connecting the pocket PC to the 2-in-1 lapdock would essentially enlarge the form factor of the pocket PC. The OS, accounts, settings, and installed apps would of course be identical. To get a full desktop experience, household members would plug their pocket PC into the docking station. Here you would get two large monitors, a full-size keyboard, and mouse. The docking station would also have ports for even more peripherals. Here, once again, the form factor is even more enlarged for maximum multitasking and productivity, but the computer itself has not changed. In this type of arrangement, apps would need to support multiple form factors. The UWP app development technology allows multiple form factor support.

I think the computing vision described above is simpler and more cost effective. In your household today, how many computing devices do you have? It would not be unusual to have 2 to 3 devices per person. Each person generally is managing multiple devices, multiple operating systems, multiple accounts, large form factor apps, small form factor apps, and the thousands of settings across multiple operating systems and apps of different form factors. This takes a lot of time and money to manage! There is also the time it takes to learn operating systems and apps. It typically takes me a few months of using an app to work out all the use cases and configuration permutations. During this break-in period, I am experimenting with settings, and fumbling with usage. This learning curve is real and costs time. The pocket PC vision promises a single computing device per person. You only have to set up, organize, and master a single device, but you can extend your form factor through these docking devices. I thought Microsoft was set to fulfill the pocket PC vision. With the Surface Duo running Android, things are unclear.

Microsoft may have a trick up their sleeve. I think they will provide support for UWP apps to run on Android and iOS. This will allow you to use the same app on Windows as you do on your Android and iOS device. This will help bring a unified app eco system closer to reality provided it incentivizes developers to develop UWP apps. But porting the UWP runtime and UWP apps to other platforms does not really complete the single device per person vision. You will still need a separate device for small form factor.

If you had a large “Columbo” style coat with an oversize interior pocket, the Surface Neo would fit into it. Could you consider the Surface Neo a pocket PC then? For people that didn’t see the Surface Event, the Surface Neo is the larger version of Surface Duo. The Surface Neo though runs Windows 10X. The Surface Neo is mobile, but just not pocketable in a standard pants pocket. I still think this is a pretty good accomplishment. You could get down to two devices per person. Right now, I’m not sold on the Surface Neo dual screen form factor. If I had my choice, I would want the guts of the Neo put into a Surface Go form factor. Todays Surface Go is mobile and can dock to larger monitors. My blog article goes in-depth about the capabilities and versatility of the Surface Go.

I am bothered by the fact Microsoft has a prototype of the Surface Duo running Windows 10X. Windows 10X was originally intended as the operating system for the Surface Duo. Would the Surface Duo running Windows 10X sell as a consumer phone? Probably not. But would the Surface Duo sell as an Enterprise pocket PC? I think that would slowly gain traction in the Enterprise market and then spread to the consumer market. I could see hospitals using a Windows 10X Surface Duo where users are moving around a lot, but then can dock at a shared docking station to get multi-tasking intensive work done. Microsoft can deliver something new here. Google and Apple are not able to delivery something like this in the near term. I think Microsoft should offer the Surface Duo with an Intel and Windows 10X variant to sell alongside with the ARM and Android version. Microsoft would not be really competing with phones. They would be offering a new type of device. Microsoft can bypass getting back into the phone race and beat everyone to market with a fully featured pocket PC. But will they do this? That unfortunately is unclear.

Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by


Why You Might Not Want to Use a Good Morning Snore Solution Device

Good Morning Snore Solution device

If you are a snorer and found that you are not compatible sleeping with a CPAP (continuous positive airway pressure) device, then you probably have searched the internet for another solution. There are devices out there that will move your lower jaw forward. These types of devices are called mandibular advancement. There are also devices that hold your tongue out. These types of devices are called tongue stabilizing. Mandibular advancement and tongue stabilizing devices have been shown in clinical trials to be effective for snoring and mild sleep apnea. The Good Morning Snore Solution device is classified as a tongue stabilizing device. It uses a soft bulb to create negative pressure. Your tongue is sucked into the bulb. This holds your tongue slightly out, which clears the airway for quiet breathing.

I used the Good Morning Snore Solution for over four years. By in large, during that time, I was satisfied with the product. Then I was told by my dentist that I have excessive gum recession on my lower front teeth. She showed me up close where the damage was located. When I got home, I put my Good Morning Snore Solution device on, and noted where the stops rest. The stops rest on your teeth and gums and hold the bulb in a location just outside of your teeth. In my case, the stops rested right where my gums were damaged. It was clear to me that four years of using the Good Morning Snore Solution has damaged my gums. My dentist told me the damage is irreversible. I’m currently in the process of seeing if periodontal work would be a beneficial option to repair the damage.

I know I’m just one person using this device. There are probably people that have used the Good Morning Snore Solution without suffering gum damage. Based on how the device fits over your teeth and gums, I suspect there are many who have suffered my fate and irreversibly damaged their gums. .

I have switched to using an AVEOtsd. The AVEOtsd is also a tongue stabilizing device. The key difference is where the stops rest. With the AVEOtsd, the stops rest on your lips, instead of your teeth and gums, which seems much safer to me. The AVEOtsd has a larger bulb that can create much more suction than the Good Morning Snore Solution. My tongue often popped out of the bulb of the Good Morning Snore Solution. That rarely happens with the AVEOtsd, and thus the AVEOtsd is more likely to be effective all through the night. Another thing I like about the AVEOtsd is that it is made out of medical grade silicone. The Good Morning Snore Solution is made from a proprietary plastic resin. I feel safer with medical grade silicone because it is supposed to be inert, and thus should not be absorbed by the body.

So if you are using the Good Morning Snore Solution, please honestly consider my warning. See where the device fits and if it is applying pressure to your gums. In my case, the edges of the stops rested on the edge my gum line.

Oh, and on another related note, never use the boil and bite style of mandibular advancement devices -these will completely shift your teeth over time. It happened to me, and I now have gaps between my teeth. You are better off getting this type of device from your dentist.

Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by

Surface Go Review: Delivers Far More than Expected

Surface Go shown with Type Cover and Surface Pen

The Surface Go was released August, 2018. I got mine for the holidays and have been using it for about five months. I have always considered the Surface line of hardware to be nice, but pricey. The Surface Go starts at $399. This significantly lower price point led me to look into the Surface Go as a travel computer. I would like to share my experiences with the Surface Go.

Configuration Design: It’s a Tablet and Laptop

The Surface Go is the smallest Surface device. It looks like a baby Surface Pro 6. The Surface Pro 6 and Surface Go are 2-in-1 configurations, which means they are a tablet and a laptop. The entire computer is essentially a tablet slab. When used without a keyboard, input is from the touch screen or pen. In this mode, these devices run Windows 10 in tablet mode. When the specially designed keyboard is attached, Windows 10 is used in desktop mode where keyboard, touchpad, and mouse input can be used along with touch and pen. The keyboard, or what Microsoft calls the Type Cover, is very nicely designed. It attaches to the tablet body with magnets. Power to the Type Cover is supplied by this special connection. You do not need to worry about charging the Type Cover. Taking the Type Cover on and off is very fast. Windows 10 detects when this happens and, provided you have the tablet mode setting to switch Windows 10 mode without asking, Windows 10 will go to desktop mode automatically when the Type Cover is attached, and go to tablet mode when the Type Cover is removed. The Type Cover also doubles as a very nice screen cover when you close the Type Cover on the screen, hence the name. Another cool design feature allows the Type Cover to be folded behind the screen. This is nice if you don’t have a place to put the Type Cover, and you want to use the device as a tablet. When you fold the Type Cover back behind the screen, Windows 10 will detect this and switch to tablet mode. A final nice design feature of the Type Cover is a secondary magnet that attaches the Type Cover to the tablet body. This will put the Type Cover at a raised angle for optimal typing comfort.

The Surface Pro 6 and Surface Go come with a high quality “kick stand”. The kick stand folds out from the tablet body. The kick stand has a wide range of motion. It can be adjusted to give a slight tilt when set on a table as a tablet, and then adjusted to holding the device more vertical when used like a laptop. It will stay in place in whatever position you leave it. When used as a laptop with the keyboard, the kick stand is required to hold the screen up. Some have wondered if the kick stand inhibits the “lapability” when used like a laptop. I have found that the Surface Go fits fine on my lap. The kick stand can be near the edge of my knees though, so people with smaller laps might have issues with the kick stand falling off your knees.

The Type Cover and kick stand, from strictly an ergonomic design perspective, has many advantages over an iPad. The iPad has no kick stand, so it must be held up with one hand when used as a tablet. Third party keyboards for the iPad use Bluetooth which will require the keyboard to be charged. I have found the Surface Go kick stand to be extremely useful. I also have found that switching between tablet mode and laptop mode to be very fast. My Surface Go sits in the kitchen as a tablet with the kick stand propping it up at the perfect viewing angle. The keyboard is nearby so can be quickly grabbed and attached if needed. This setup and central location have made my Surface Go very popular and well utilized.

Should You Get the Type Cover?

So, if you want to utilize the full potential of the Surface Go, I would get the Type Cover as an optional accessory. Most content creation activities are better suited using a keyboard. The more expensive Alcantara keyboard is backlit. This keyboard sells for $130, which I think is overpriced, but it does feel nice and the typing experience is good. Keep in mind, the keyboard for the Surface Go is smaller than a full-sized keyboard. The touchpad though is spacious. I got used to the smaller keyboard very quickly and now love typing on it. For a keyboard of this size, it is nice that it has dedicated Home, End, PgUp, and PgDn keys. Many keyboards on up to 14-inch laptops force you to hold down a function key to access these keys. One thing I don’t like about the keyboard is that it only has a Ctrl key on the left side. I have trained myself to use keyboard shortcuts extensively and have an invested muscle memory with right Ctrl key shortcuts. I’m still adapting to having just the one Ctrl key.

Though the Surface Go sells as a tablet without any of its optional accessories, the Surface Go is a full-fledged Windows 10 computer. Many applications for Windows 10, and even parts of the Windows 10 operating system, are not well suited for touch only. In these workflows, without the keyboard, you will be limited. Take Windows 10 File Explorer for example. I have yet to figure out how to select multiple files with only touch. With a keyboard, you hold down the shift or ctrl key along with mouse click to select multiple files. And it should go without saying that if you want to do a lot of typing, a keyboard is mandatory. So, I don’t consider the Type Cover optional. I understand why they sell them individually. The Type Cover could be used across different versions of the tablet. You may upgrade your tablet, but not your Type Cover. Keep in mind, if you have a Surface Pro Type Cover, it will not work with the Surface Go. It will be too big. So get the Type Cover, and I would splurge the extra $30 to get the backlit Alcantara version. The fabric feel on the Alcantara is super nice.

Should You Get the Surface Pen?

I think you should get the Surface Pen, even if you don’t expect to be doing much drawing or other types of pen-based work. There are times where UI elements on applications, and even web sites, will be too small on the Surface Go. It will be hard to select with a finger. An example of how a pen is much more precise than a finger is with highlighting text in an e-book. It is hard to nail the exact words using your finger, but it feels just like highlighting a real book using the Surface Pen. There are many applications, particularly web sites, that implement mouse enter, leave, and hover events. This simply will not work with touch. You cannot hover your finger over some control on a web site. This is very common on menus that drop down automatically when the mouse enters the menu, or menus that cascade as you move over sub-items. If you have the Type Cover with you, using the touchpad solves this problem. If you don’t have the Type Cover with you, then you will get frustrated with the web site unless you have the Surface Pen. The Surface Pen is held onto the side of the Surface Go by a strong magnate. I just leave it there for when it comes in handy. If I come across one of these web sites that forgets there is a world of touch out there, you can grab the Surface Pen to hover over the glass of the tablet. The pen can communicate proximity. This will act like mouse hover to the web site. An example of this kind of problematic web site is Internet Movie Database. Their menus on the desktop version of their web site will drop down when you touch them, but then once you release, they disappear. They are expecting a mouse to do this.

If you do a lot of conference calling, you may find the Surface Pen nice if you have to “whiteboard” something. And if you are an artist, there simply is nothing like the Surface Pen on the market right now. Windows 10 pen input with the Surface Pen takes in angle and 4096 levels of pressure which is communicated via Bluetooth. Applications must know how to read this information to leverage it. There are a growing number of artist applications that can utilize the pen input information to give realistic simulations of paint brushes and other drawing tools. I am not an artist, but I played around with some applications that fully utilize the Surface Pen. The Surface Pen experience is simply awesome. Even on a modestly priced computer like the Surface Go, there is no lag. It really feels like you are drawing on paper. So, get the Surface Pen. I think you will find it worth the $99 price.

General Impression of the Surface Go Experience

I got the 4 GB RAM and 64 GB storage model of the Surface Go. I thought I was going to use the Surface Go just for travel, so I didn’t want to pay extra. I didn’t expect it to become the dominate device of choice. When home, I use the Surface Go more than my laptop and phone combined. When at a hotel, I use the Surface Go more than my phone, and I have no need for the laptop. When away from wi-fi, then of course my phone becomes the dominate device.

The form factor of the Surface Go hits a unique sweet spot between a tablet and laptop. It is super portable. Without the Type Cover, it weighs just 1.15 pounds (522 g). With the Type Cover, it weighs 1.68 pounds (762 g). It is so small and light that you could throw it in a bag or backpack and not even notice you have it. But, you can still get work done on this thing. The screen is big enough to use browser-based web apps if you cannot find a Store app for what you want. The Surface Go is light enough as a tablet to make an e-reader for those digital books where you need something bigger for diagrams and tables.

The screen looks great. It is very sharp and can get bright. It is a 10-inch screen with 217 pixels per inch and 1500:1 contrast ratio. The 3:2 aspect ratio makes the screen taller when in landscape, which is great when in laptop mode, but also nice in tablet mode. I find I use tablet mode in landscape most of the time due to the 3:2 aspect ratio. I use portrait mode when doing immersive reading.

Many tech reviewers on the web have criticized the Surface Go for being under powered. It would seem that way if all you did is look at benchmarks and compared the Surface Go to much more expensive laptops. Microsoft has struck a nice balance between performance, size, weight, battery life, and price. If you currently have a laptop or desktop with a spinning hard drive, I believe you will find that the Surface Go will feel faster for most tasks. I have a 5400 RPM hard drive laptop, and my Surface Go feels faster all around. Booting is fast, coming out of hibernation and standby is fast, opening apps is fast, browsing is fast, and opening Office documents is significantly faster than my aging laptop. And I have the 64 GB eMMC drive, which is slower than the 128 GB SSD that is available on other configurations of the Surface Go. I suspect it will seem a bit faster with the 128 GB SSD model. The Intel Pentium Gold 4415Y processor with integrated Intel HD Graphics 615 does get the job done for most tasks. It will fall short for current high-end games, though you can do light gaming on the Surface Go. I suspect doing video editing might seem slower than a high-end laptop due to the slower processor. On most tasks, the Surface Go responds with very little lag, and scrolling of web pages is very smooth and responsive. Panning and zooming maps in Microsoft Maps is extremely smooth and enjoyable with the touch screen. The truth is, todays 8th generation Intel i5 and i7 laptops are extremely powerful. The Intel Pentium Gold 4415Y gets a 1941 single threaded Geekbench 4 processor score. The Intel Core i5-8265U, a popular 8th generation chip in laptops, gets a score of 4042. The multi-core scores respectively are 3815 and 12,184. The Intel HD Graphics 615 onboard the Surface Go gets an OpenCL score of 17,415. A populate integrated graphics chip on today’s laptops is an Intel UHD Graphics 620, which gets an OpenCL score of 23,435. A high end Nvidia GeForce GTX 1080 Ti gets a 215,390 score. These numbers may make you think twice about the Surface Go, but from hands on experience of day-to-day tasks performed on the Surface Go, I wouldn’t worry about the scores. You won’t be able to play high end games or edit large video files quickly, but you will be able to do a lot on the Surface Go for an entry price of $399. This video puts the Surface Go through extensive tests with audio production software. Audio production software can be very demanding on a computer, and the Surface Go proved capable of producing professional music. Sitting here now typing this blog article in Word, my Surface Go processor is only using 2% of its capacity according to Task Manager. I would not notice the difference if I had a much more expensive 8th generation Intel chip editing a Word document.

Regarding battery life, I seem to be getting about 7 hours of typical use. Microsoft rates it at 9 hours of video playback. I find 7 hours to be plenty. Battery life can vary all over the place depending on what you are doing. Surfing the web with repeated smooth scrolling is a pretty energy demanding task for any computer. So, if you are hitting web pages repeatedly, with rapid smooth scrolling, you can expect to get less than 7 hours. People think web surfing is light computing, but it is not given today’s information intense web sites and the rendering demands of smooth scrolling.

I have found the Surface Go to be a superior form factor over a laptop or phone in the following activities:

  • immersive reading a document or book with diagrams and tables
  • referencing recipes while cooking
  • watching movies or TV.

Surface Go is perfect for referencing recipes while cooking
Surface Go is perfect for referencing recipes while cooking

As mentioned earlier, the Surface Go is small and light enough to make a good e-reader. Where a 6-inch e-reader is too small for books with diagrams and tables, the Surface Go 10-inch screen in portrait mode is the perfect size and weight. A laptop is too cumbersome and bulky for immersive reading, and obviously a phone is way too small for complex documents. When cooking, the Surface Go in tablet mode propped on your kitchen counter is perfect for referencing a recipe. It is not too bulky to get in the way, and the touch screen is perfect if some scrolling is required. My wife gets a lot of recipes from the web, but has always printed the recipe when it came time to cook it. Putting a laptop on the kitchen counter just doesn’t work. The Surface Go is allowing to truly transition to digital recipes. Finally, watching movies or TV on the Surface Go is a great experience. The resolution, color accuracy, and headphone sound quality are very good. You can watch movies or TV on a phone, but on the Surface Go, it just looks way better due to the bigger screen. You could also do this on a laptop, but the weight of the laptop starts to encumber the experience. When watching movies or TV, the built-in kick stand is super handy. I consider watching movies or TV on the Surface Go with headphones to be a better experience than on my big screen TV provided you are watching alone.

Connecting Things to the Surface Go

The Surface Go is the first Surface product to have a USB-C port that includes DisplayPort output and power delivery. The Surface Go comes with a 24-watt adapter that connects to the proprietary Surface Connect port. If you don’t have your Surface Go adapter, you can use most USB-C chargers. The supplied adapter is rated at 15 V with 1.6 amps. Check your voltage and current of your USB charger. It should be a minimum 5 V with 3 amps (15 watts). Anything less than 15 watts will not be enough to charge while also using the Surface Go. The maximum power input to the USB-C on the Surface Go is reported to be rated at 45-watts. Most chargers though can communicate with the device being charged and step down their power delivery if the maximum adapter output exceeds the maximum device input. So, using a “smart” USB-C adapter over 45 watts is probably safe.

The USB-C power delivery is great when traveling. If you have a phone that also charges with USB-C, you only need to take one charger with you. You can leave the Surface Go adapter at home. If you have an iPhone, you can buy adaptors that output USB-C and USB-A. The USB-A can be used with a USB-A to Lighting cable to charge your iPhone, and a USB-C to USB-C cable can be used to charge your Surface Go.

The Surface Go can be docked to extend its connectivity. You have two choices on the port to use for docking. You can use the Surface Connect port on the Surface Go, or you can use the USB-C port. If you use the Surface Connect port, you would need to buy a Surface Dock. The Surface Dock will give you two Mini DisplayPorts, gigabit Ethernet, 4 USB A 3.0, and audio out. If you use the USB-C port, your connectivity will depend on the dongle or dock you use. Plugable makes a USB-C 4K Triple Display Docking Station with Charging Support. Using this dock with the Surface Go, you should be able to connect two 4K monitors at 60 Hz. Both the Surface Dock and the Plugable dock will also provide power delivery to the Surface Go through the single Surface Connect or USB-C connection. So, you don’t need to worry about the Surface Go running out of battery power while docked.

If you find you need extra storage, there is a microSD slot right under the kick stand. You can get up to 1 TB of extra storage. I recommend getting a UHS-I, speed class U3 card. This will give you the best speed for your money, but do not expect read and write speeds to be faster than the eMMC or SDD drive. Windows 10 allows you to move apps to a microSD card if you are running out of room on your main drive.

You can also wirelessly connect to monitors and digital audio using Miracast. Roku and nearly all smart TVs are equipped with Miracast though it may not be called that on the device. I’m able to wirelessly connect to my TV with 4K resolution as a second monitor. Photographs look amazing this way.

Windows 10 in S Mode

Windows 10 in S Mode is supposed to be for security and better performance. When in S Mode, you can only install apps from the Windows Store. Apps from the Store are vetted by Microsoft, so should not have viruses. Also, UWP apps from the store can be better controlled in terms of the resources the app can use. A lot of people complain that their Windows 10 computer gets slower and slower over time. This is not Windows 10 getting slower, this is your computer getting bogged down with Win32 programs running things in the background. S Mode is not faster. It is just less likely to get bogged down with legacy programs over time. If you take a new Surface Go and take it out of S Mode, it will not slow it down.

I tried to stay in S Mode. I lasted about 2 months, then I decided I needed to install a conferencing app from the web. I checked with Task Manager to make sure the Win32 conferencing app did not hog resources while it wasn’t loaded. It was well behaved. In that case, I was lucky because the Win32 app was well behaved. If you continually install badly behaved Win32 programs, over time your performance will degrade.

My recommendation is to just go ahead and take it out of S Mode. You do that via the Store. There is a link in your Settings that will take you to the place in the Store to take it out of S Mode. See below for more information.

Some Windows 10 Settings and Configurations Best Suited for a Surface Go

If you happen to have bought the 64 GB model, you will want to be careful about storage on your main drive. After I set up my 64 GB model, with Office, Netflix, and Sling installed, I had 40 GB left over. For major Windows 10 feature updates, you will typically need 6 to 11 GB of free working space to perform the update operation. Major feature updates happen twice a year: once in the Spring and once in the Fall. For the May 2019 (1903) update, Microsoft has announced you need 32 GB of disk space to store the operating system. This will include a new 7 GB reserve set aside to help with disk space availability for things like updates and temporary files.

Windows 10 will get maintenance updates usually on Tuesdays. These updates will start to accumulate on your main storage. I recommend turning on Storage sense to automatically purge unnecessary files on a regular schedule. Go to Settings > Storage > Storage sense, and set to on. Continue further by clicking “Change how we free up space automatically”. Here you can specify how often to run Storage sense and what type of files to free up. The scheduled Storage sense will not free up all type of files. You should run Disk Cleanup at least once a month to purge other files. You can run Disk Cleanup from the properties dialog of your drive by right clicking the drive in File Explorer and selecting Properties, and then click the Disk Cleanup button.

Aside from managing your storage, here are some other settings and configurations of interest:

  • Take out of Windows 10 in S Mode. Go to Settings > Update and Security > Activation for the link to the store for your free upgrade to Windows 10 Home edition.
  • Use OneDrive On-Demand. OneDrive On-Demand allows your files to only take up storage when accessed over the network. Right click OneDrive cloud icon in System Tray, select Settings, in settings dialog click Settings tab, then check “Save space and download files as you use them”. You can also control at a folder level to always keep select files on the local drive. In File Explorer, right click a folder, then select “Always keep on this device”. This way you can have some files networked, and others available for offline use.
  • Use Power Throttling. This will minimize background process CPU utilization. When device is on battery power, click the battery icon in the System Tray. Set the Power Mode slider to “Better battery”. When plugged in, repeat this process, but instead set the Power Mode slider to “Best performance”. There is no need to use power throttling when plugged in.
  • Lower display brightness when on battery. When on battery power, go to Settings > System > Display > Change brightness, to set brightness to about 50% or lower. This will have the greatest impact on how long the battery lasts. When plugged in, go ahead and set brightness to 100%. Windows 10 will remember the setting for each power mode.
  • Try Edge. Edge is already installed so you have a browser without taking up extra storage to install another one. If you feel you absolutely must have a different browser, I challenge you to just try Edge for two weeks. You will probably find your life will be pretty much the same. Edge is being rewritten to use the Chromium engine. This is the open source engine the Chrome browser is based on. When the new Edge is available (expected late 2019 or early 2020), it will be largely redundant to install Chrome.
  • Use Windows Defender. Remember when I was talking about badly behaved Win32 programs. Well it is my opinion that third party anti-virus programs are the worst offenders. If you don’t carefully monitory their settings, they will go off and do excessive and unnecessary processing like defragmenting your hard drive, and cleaning your registry. Windows Defender will keep you safe, will not get in your way, will not suck power out of your CPU and battery, and will not take up extra storage to install.
  • Automatically switch to tablet mode. Every time you attach or remove the Type Cover, you are not going to want to click a confirmation. Go to Settings > System > Tablet mode > When this device automatically switches tablet mode on or off, select “Don’t ask me and always switch”.
  • Make text bigger. You might find that text is too small on the Surface Go. Go to Settings > System > Display > Change the size of text, apps, and other items. It defaults to 150%. If you find things are too small, try 175%.
  • Set single click to open in File Explorer. When in tablet mode, double tapping to open something in File Explorer is very awkward. In File Explorer, File menu > change folder and search options > Folder Options dialog General tab > select Single click to open an item (point to select) radio button.
  • Make a Taskbar toolbar for the desktop. When in tablet mode, you will not have access to your desktop icons. You may have handy links to documents on your desktop. Right click the Taskbar, select Toolbars > “New toolbar…”. When the folder selection dialog opens, navigate to your user account folder, then select the Desktop folder. This will put a toolbar on your Taskbar called Desktop that will have shortcuts to your desktop icons that you can access when in tablet mode. If you change icons on your desktop, this toolbar will stay in sync automatically.

Which Surface Go Configuration Should You Buy?

I have the 64 GB storage model. I regret getting this version due to space being tight. Give yourself a little more breathing room and get the 128 GB SSD configuration. This will raise the price by $150, but I believe it will be worth it if you plan to use your Surface Go regularly.


Surface Go shown with backpack
Surface Go shown with backpack

I didn’t expect to use my Surface Go so much. I thought it was just going to be for traveling. I ended up loving the Surface Go. My wife also loves it. Microsoft’s execution of the device hits a magical sweet spot in terms of size, weight, performance, and price. The small size is perfect for single task content creation or media consumption. The small size also makes taking the Surface Go with you a no-brainer. Just throw it in your bag and you got a full computer in case you need one. I love traveling with my Surface Go, but I also love using it around the house. I didn’t expect to love using it at home. I wouldn’t say my laptop is collecting dust, but my laptop utilization has been cut down by about 80%. To me, the Surface Go is an extremely successful purchase because it is getting used and enjoyed extensively. I think how well a device is executed is determined over time by its utilization. I have used my Surface Go for five months, and my wife and I gravitate to it over the laptop and phone. That tells you the slower processor doesn’t really matter. There is no irritation from being slow. Microsoft got the things that matter right. The gorgeous display, fluid touch response, and ultra-portable size make the Surface Go a winner.

Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by


How I Solved My iPhone GPS Problems

I have recently purchased two new iPhone 8s; one for myself and one for my wife. By and large, the iPhone 8 works well except for one major flaw – the GPS doesn’t always work. GPS is by far my most beloved feature of a smartphone. When I was getting GPS failures, I was pretty upset.

So I tried everything on this article. All the suggested workarounds did nothing for both phones. I still could not get Apple Maps and Here WeGo to reliably navigate. After extensively testing both phones and in different locations, I came to realize bad GPS reception was causing the problem.

I used the app “GPS Diagnostic” to measure satellite signal strength. What I found is certain locations in my car have no GPS reception with the iPhone 8. What is interesting is that it matters if the car is running. If the car is not running, GPS works great everywhere in the car. Once the engine is started, GPS reception drops to nothing over much of the dash.

I managed to find a location on my dash where the iPhone 8 got decent GPS reception (thanks to “GPS Diagnostic”). I have used two hardware-based navigation systems and three smartphones in this same car, and in the location where the iPhone 8 will not work. All five of these devices had no GPS reception issues. This tells me that the iPhone 8 has bad RF noise rejection when it comes to GPS reception. This is seriously disappointing. My expectation for these high-end and expensive devices is that something as basic as GPS reception and its ability to reject RF noise, should be on the upper end of performance. Instead, the iPhone 8 has extremely poor performance. Apple, I’m not impressed. Please fix this.

Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by


Why the Documentary “Behind the Curve” is Worth Viewing

Behind the Curve is a 2018 documentary directed by Daniel J. Clark and produced by Delta-V Productions. Behind the Curve has an important message that applies to everyone.

I started watching Behind the Curve on Netflix not really knowing what it was about. Initially, it appeared to be about this movement of people that believe the earth is flat. They call themselves Flat Earthers and they claim to be over a million people strong. I thought “seriously?” and was about to shut it off. But somehow the documentary kept my attention and I never managed to shut it off. In fact, I’m glad I watched it up to the very last second. Not until the very last second did I realize Behind the Curve is brilliant. The ending is awesome.

Behind the Curve is more an introspection of why people commit to belief systems. The Flat Earth movement is just the topic of focus to take an intimate tour of its people and how they came to adopt such a belief. Delta-V Productions should be commended for taking a companionate look at the Flat Earthers. Flat Earthers are an easy target to unleash superior minded criticism. Behind the Curve though lets their voice be heard so the human fallacy of believing something despite evidence to the contrary can be understood.

There are comments from psychologists that talk about how we start to invest part of our identity into the beliefs we hold. The documentary shows how Flat Earthers get a sense of community from going to the conferences, and how their spoke person Mark Sargent feels an obligation to the movement. Behind the Curve is important because everyone can become a Flat Earther so to speak, but just with different beliefs. No one is fully immune. Hopefully Behind the Curve will help you have more empathy when faced with people that see things differently.

Behind the Curve doesn’t really offer tangible solutions to growing belief fractionation spread by the internet, but it is a good start. There are many important topics where people choose a camp and only listen to people in their own camp. Society can be immobilized to solve problems without having a way to join the camps together. Doing something about climate change is an example where hardened mindsets are not budging by just stating the science. We need something better than just papers from scientist. Behind the Curve does touch upon the growing distrust of science. This is a scary trend because logic and evidence are supposed to be our guiding compass for society. The scientific process is founded on logic and evidence. If we don’t trust science, then what tools do we have to move a society forward?

So, check out Behind the Curve, don’t laugh at the Flat Earthers, and watch it to the last second before the credits appear.

Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by

Why the Oxford Study on Teen Screen Use and Well-Being Should be Discarded

Recently the media is buzzing about a new University of Oxford study that seems to indicate there is no significant association between teen digital technology use and well-being. The study by Amy Orben and Andrew K. Przybylski published in Nature Human Behavior, claims that teens using computers and smartphones are no worse regarding their well-being than teens eating potatoes. We can relax now about teens being on their phones all the time thanks to the findings of what some are calling the most rigorous study to date regarding this subject matter. The study says it has a sample size of over 355,000 teens and used progressive statistical techniques.

Well I seemed a little surprised by the study’s findings, so I decided to take a closer look. Here are the highlights of what I learned about this study.

  1. All data came from three existing datasets. They did not collect the data themselves.
  2. All three datasets collected data using self-reporting surveys. This included questions about technology use and how well they thought they were doing.
  3. The first dataset referred to as YRBS collected data starting from 2007, well before smartphone use became commonplace with teens.
  4. The YRBS dataset simply asked two questions about technology use: did they use electronics, and did they watch TV.
  5. The second dataset referred to as MTF collected data starting from 2008.
  6. The MTF dataset asked a few more questions about technology use. It asked about using social media, weekend TV viewing, and using the internet for news.
  7. The third dataset referred as the MCS study is regarded as the best quality data by the researchers. This dataset though has a sample size of less than 8,000.
  8. The MCS dataset surveyed teens from 13 to 15 years old born September 2000 to January 2001.
  9. The MCS study asked only five questions about technology use. These involved questions about watching TV, playing electronic games, using the internet at home, using social media, and whether they owned a computer. Four of the five questions did try to measure time usage by self-reporting time on a 9-point scale.
  10. There were also other questions for comparison ranging from sleep, eating breakfast, and eating potatoes.

The media is claiming this study to be exhaustive and rigorous. The study did use a slick way of processing data using a technique called Specification Curve Analysis (SCA). This form of analysis crunches the associations in as many pathways as possible and meaningful given computational limits. So that sounds great, but I consider the datasets to be very high level and low quality since the questions are general and only self-reporting surveys were used. In an era where computer use is somewhat ubiquitous, the general nature of the questions (e.g. do you own a computer) leads to noisy datasets. So, a lot of computer time was used for analysis, but as the saying goes, garbage in, garbage out. You cannot squeeze out nuanced truth from very high-level questions, no matter how much you crunch the data.

Aside from the low-quality datasets, this study has a fundamental flaw in its design. The surveys only measure technology use and well-being at a point in time for an individual. This method cannot understand the impact of technology use exposure over the duration of time. The real question to ask is how much technology use over how much time impacts the development and well-being of adolescents. Surveys at a single point in time cannot answer this question. The MCS dataset, which is considered the best dataset of the three, only looks at 13 to 15 years old in the UK. It would have been better to follow these children through middle school, high school, and college, continuing to monitor technology use in much more detail with real measurement on types of content, and then measure real mental health events (not self-assessment from survey).

If you look close at the results of the associations discovered, the nature of the noisy datasets starts to be revealed. As mentioned previously, other questions unrelated to technology use were asked for baseline comparisons. These other associations were compared to technology use. For example, from the MTF dataset, binge-drinking was found to be 8.1 times more a negative impact on well-being than technology use. Bullying is 4.92 times from the MCS dataset. Eating potatoes is 0.86 times which is close to 1 and thus the statement that technology use is as safe as eating potatoes. But looking close at the data, you see that being arrested is 0.96 times. So, you could say that technology use has the same impact on well-being as being arrested. Music has 32.68 times positive impact on well-being. Going to the movies has 11.51 times positive impact. Those numbers for music and movies seem completely off. That is what happens when you have noisy datasets. These association numbers can be all over the place. Getting enough sleep can have as much as a 44.23 times positive impact on well-being. Getting enough sleep was asked by all three datasets. What is interesting is that the associations vary from 1.65 times to 44.23 times for sleep across the three datasets. This again is noisy datasets rearing their ugly head. And if you are a parent of a teen, you know that technology use can impact sleep of adolescents. How then does sleep have such a huge positive impact, but technology use has virtually no impact? Bullying in today’s context is largely taking place on-line. How then does bullying have a 4.92 negative impact, but technology use has very little?

Unfortunately, we need to wait for better research to answer the question of technology use and well-being. In the meantime, if you are a parent of a teen, please use your common sense. Here are some points to consider.

  1. If your teen is playing video games excessively where it impacts his or her sleep, eating habits, socialization, and getting school work done, get professional help for your child. Video game addiction is now recognized by the World Health Organization as a real disorder.
  2. Talk to your child about on-line bullying. If you think your child is being bullied on-line, then you need to help your child deal with that.
  3. Make sure your child does not go to bed with his or her smartphone. Sleep is very important. Teens will communicate via social media all hours of the night if you let them.
  4. Consider using technology that blocks access to porn sites. Boys are viewing a lot of porn and we have no idea the impact this has on their view of women and expectations of normalcy in intimate relationships when they grow up to be men.
  5. Talk to your teen about distracted driving. Put some tangible rules in place about phone use and driving. And as a parental role model, put your phone away when you drive.
  6. Consider eating dinner together as a family and not allowing TV or phones during this time. Your kids will complain at first, but the whole family will come to value this most basic of human bonding experience.
Copyright © 2019 by Jeffery Lewis. All rights reserved.
Published by


Why Microsoft Still has a Strong Mobile Strategy

The title of this article seems absurd on the surface, especially since Microsoft just announced last October that Windows 10 Mobile will be discontinued. In addition to announcing they will be discontinuing Windows 10 Mobile, they announced they will not be making any devices for Windows 10 Mobile. And also, it is very clear that Microsoft has failed to capture market share on phone devices. Then how can Microsoft have a strong mobile strategy?

Microsoft has a strong mobile strategy based on their current and future road map of their Windows 10 operating system and application development technologies. This article will make a case that Microsoft has a strategy to converge the form factors of desktop, laptop, tablet, and phone into a single version of Windows 10, and that this positions them for a strong, long term future with mobile.

We should first review the general trends in computing to get some sense of where the future of computing is headed. The computing power of smartphones in the ten years they have been around has increased dramatically, all the while maintaining a pocketable form factor. The specifications of current flagship smartphones read like that of a laptop computer. Smartphones now have multi-core, high clock rate CPUs, and a lot of RAM. The Samsung A8 sports 6GB of RAM. The OnePlus 5 sports 8GB of RAM. Even though they have specifications like a laptop, are current smartphones as powerful as a laptop? Over the years, PCs have prioritized shear computing power without really constraining their power supply. Phones on the other hand, have put energy consumption as an important priority. When one limits the amount of energy a CPU can consume, that will impact how much computing power it can produce.

To try to answer the question if current flagship phones are approaching the power of a laptop, I downloaded from the Microsoft Store the AnTuTu benchmarking tool. AnTuTu is a respected benchmarking tool originally used for Android devices. It is now ported to iOS and Windows 10. AnTuTu is a native implementation for Android (as opposed to Java virtual machine implementation). I would assume it is a native implementation on iOS. In Windows 10 though, if developed in C#, it would be similar in performance to a Java virtual machine implementation. So, though AnTuTu is ported to these platforms, you cannot be sure computing power is compared equitably because of the unknown differences in the final native execution of the benchmarking tests. The benchmarking results have to be used to just broadly compare performance between different platforms and hardware.

If you look at the AnTuTu’s web site, the iPhone 8 Plus gets a total score of 217,385 (October 2017 results). The OnePlus 5 get a score of 181,047. The Samsung Note 8 get a score of 178,079. Running the benchmarking tool on my Windows 10,  Intel i3 computer with 6GB of RAM and Intel integrated graphics, I got a score of about 151,000. This is a six-year-old laptop mind you. Running it on my Windows 10, Intel i5 with 8GB of Ram and Intel integrated graphics, I got a score of about 192,000. This is a four-year-old laptop. Running on my son’s Windows 10, Intel i7 with 8GB of RAM, solid state drive, and Intel integrated graphics, I got a score of about 275,000.

As you can see, current flagship phones are getting pretty impressive benchmark scores when compared to an older laptop. These phones still have some ways to catch up when comparing to current day laptops. I suspect PCs with a dedicated graphics card would get even higher scores. None the less, this little comparison shows that a phone could be used for the processing duties typically used on a PC.

Not only have phones been getting more powerful, time using a phone as compared to time using a PC has increased dramatically. This has led to higher and higher expectations from phone apps. People are no longer expecting watered down phone apps, but apps with complete feature sets so most workflow scenarios can be carried out on the phone.

So now with powerful phones and powerful apps, there is one problem that phones have. Phones are too small. The phone form factor is its current limitation on what you can productively do on a phone. Without a full keyboard and reasonably sized screen, it doesn’t matter how powerful a phone is or how powerfully designed the apps are; you still are limited by the form factor. It becomes too awkward to have to zoom and pan documents, keep switching web pages and/or apps, and to type with your thumbs.

This is where Microsoft, Apple, and Google seem to agree that what needs to happen is convergence between the various form factors present today. That is, there needs to be some form of convergence between desktops, laptops, tablets, and phones. Convergence will allow continuity between phone apps and their operating systems with that of larger form factors typically found on desktops and laptops.

So now I’d like to talk about Microsoft’s strategy on this convergence and why I believe Microsoft is considerably ahead in this effort. Windows 10 Mobile may be on its sunset, but that doesn’t really matter. Microsoft is building Windows 10 in a way they don’t need a specific mobile version of Windows 10 to run on a small device like a phone. They have to retire Windows 10 Mobile because it is not cost effective to maintain if it no long has any distinguishing features from the upcoming Windows 10.

Microsoft has been working on this convergence since at least Windows 8. They managed to get Windows 10 and Windows 10 Mobile to share what they called at that time OneCore. They also got a type of monitor connection called Continuum that allows a Windows 10 Mobile phone to give a desktop like experience when connected to a larger monitor, keyboard, and mouse. HP sold a phone called the Elite X3 that really took to spirit how Windows 10 Mobile could be used like a desktop with the Continuum feature. The Elite X3 had a docking station to hook up to a large monitor, keyboard, and mouse. The Elite X3 also had what they called a lapdock. This is something that looks just like a laptop, but only has display and power. It has no computing capability or storage. When you hooked up the Elite X3 to either the docking station or lapdock, Universal Windows Platform (UWP) apps scale appropriately for the given monitor size. It does not look like just a phone app enlarged. I have a Lumia 950 Windows 10 Mobile phone that also has this Continuum capability. When you launch a UWP app on a larger monitor, it is very hard to tell you are not on regular Windows 10.

There are differences though between Windows 10 Mobile Continuum and the PC experience on Windows 10. For one, windows are not resizable with Continuum. The app window will fill an entire monitor. It seemed appropriate then to keep adding feature improvements to Continuum to bring it closer to a true desktop experience, but this would not be cost effective given Microsoft’s long-term plans.

Microsoft is working on a new Composable Shell (CShell). A shell control things like the start button, start tiles, taskbar, and window title bar with minimize, restore, and close controls. In other words, it is the binding UI framework that allows you to interact with Windows 10 and its programs. Windows 10 currently has a shell for desktop and tablet. Windows 10 Mobile also has a shell optimized for a phone size screen, touch interface, and the standard Windows 10 Mobile phone buttons. With the new CShell, it will be possible for a single device to take on multiple shells forms. Depending on the context of the display and input devices, Windows 10 with the new CShell will be able to be phone like on a small device, and PC like on a larger form factor. This is why they don’t need Windows 10 Mobile going forward. Windows 10 will be able to be phone like without the need for a separate mobile edition of Windows.

Microsoft has also just recently launched Windows 10 on ARM. ARM is the CPU architecture that nearly all phones run on. Windows 10 on ARM can run on the latest Qualcomm CPU and allows you to run older Win32 style applications. It allows you to run Win32 style applications using emulation similar to how x64 Windows can run x86 programs with the WOW architecture. Windows 10 on ARM also does not loose it connectivity when put to “sleep” (sleep is in quotes because I’m not sure if Windows 10 on ARM even calls it that). These laptops have continuous cellular connectivity through the Qualcomm cellular modem. So the “sleep” on the Windows 10 on ARM laptops is more like when you lock a phone; a lot of stuff is suspended, but connectivity stays up so communications can continue to arrive.

If you really think about all the building blocks Microsoft has, and the fact that todays phones are almost as powerful as a laptop, they are not far from being able to make a pocketable PC that is also a phone. If you take a Windows 10 on ARM laptop, add a telephony stack, add the new CShell, and then shrink it down to the size of a phone, you basically have a pocketable PC that is also a phone. They already know how to put a telephony stack on an ARM platform (e.g. what was already done on Windows 10 Mobile). The new CShell is the missing piece. To be fair though, it is a bit more complicated than that. Windows 10 still ships with a lot of accessory applications that use the older Win32 style of application. An example of this is File Explorer. Microsoft is working to port these accessory applications to Universal Windows Platform (UWP, to be explained in more detail further down). Having these accessory applications as UWP will complete the experience so they can be used on a small form factor.

What is not clear though is if such a pocketable PC is going to be able to run Win32 applications. This is where Microsoft is working on this thing called Windows Core OS. This will essentially modularize Windows 10 so that OEMs can pick and choose what modules they add to the deployed OS. On future devices with Windows 10, using the new Windows Core OS, the OEM can choose to not include Win32 support. The main reason to omit Win32 would be the resource demands Win32 support requires. For starters, Win32 support requires more storage space to install the OS. Also, Win32 support may not be as energy efficient given many scheduled tasks and services required of Win32. So there could be pocketable PCs that can run older Win32 application, and there could some that do not.

Microsoft has also a new development standard they introduced in 2015. It is called Universal Windows Platform (UWP). This development standard is modernized over the 20 some year old Win32 application standard. UWP is designed to write once, and deploy on many different form factors and device types. UWP apps can target Windows 10, Windows 10 Mobile, HoloLens, Xbox, IoT, and Surface Hub. UWP apps are more secure than Win32 applications, and have better transparency on the resources they are consuming. UWP apps also have better permission control for granting access to hardware resources such as sensors, and data such as contacts.

Unfortunately, there is the perception that UWP is just for mobile. This is very far from the truth. Microsoft is fully committed to UWP. The plan is to gradually retire Win32 and transition to UWP. New features are not being added to Win32. New features like inking and mapping are only being added to UWP. When Microsoft announced they were retiring Windows 10 Mobile, several companies soon there after announced they would be retiring their UWP apps. The reasoning being if there is no more Windows 10 Mobile, then why support their UWP app. UWP apps also run great on the desktop provided the app designer considered the desktop form factor in the UI design. I use many UWP apps on my laptop such as Edge, Mail, Calendar, People, Calculator, Maps, Sygic, AccuWeather, Sling, and Netflix, to name a few. I’m finding the UWP experience on the laptop form factor to be better than the equivalent web app. They load fast and interact fast. They also can run in the background to forward notifications and down load communications. And they are better to run on a laptop than a phone because the screen is bigger, and you have a full keyboard. In fact, since the UWP app on my Lumia 950 phone is essentially the same as the app on my laptop, the cognitive learning curve and usability is identical between the phone and laptop. I do not prefer a form factor just because I know how to use the program on that form factor better. They are identical. I pick a form factor to do something more on what is easier to use by nature of the form factor, and what form factor is currently accessible. If both the laptop and phone are both accessible (like when I’m home), I’m finding I am using the laptop form factor just because it is more productive on the larger screen and full keyboard. This is what starts to happen when the forces of platform convergence take shape. You don’t pick a platform just because that is where you have the app installed for a particular task. You pick a platform based on the most productive and accessible form factor. When a pocketable PC is available, and you have it connected to a lapdock or larger monitor, you will be able to do PC AND phone like tasks all in one experience. For example, you will be able to comfortably work on a document, AND text someone with SMS, or take a phone call. So app developers, please don’t think of UWP for just phone development. With the capabilities of convergence upon us, you have to think of UWP apps being used on multiple form factors; small and large.

So, is convergence really upon us? Microsoft is allegedly working on Project Andromeda, which has been associated with a Surface branded phone. Project Andromeda will be the first released versions of Windows 10 using Windows Core OS (e.g. the modular form of Windows 10). It will run on ARM using the Qualcomm Snapdragon 850 chip. I suspect Andromeda will have a CShell supporting a “phone” like experience, one for two small monitors, one supporting a tablet experience, and one supporting a laptop or desktop experience. The Andromeda device will have two phone size screens connected by a hinge. When the device is open, it will be a small tablet. The device will be able to fold in half, and when folded, will be pocketable. It will have a telephony stack, so will be able to do phone like things. When connected to a dock, it will use the desktop CShell and has the potential of replacing your PC. It is unclear if it will support Win32. Some sources are saying it will support Win32, but maybe not on the first release. This device sounds really great, but is it real? Microsoft has not made any formal announcements, but most reliable sources are expecting Andromeda to be released some time in 2018. And OEMs like Dell are on board with releasing their own version of an Andromeda like device in 2019. Convergence is coming!

Life with convergence will be simpler. I am really looking forward to this. Image having just one device for all your computing needs. You only have one device to purchase, configure, and maintain. You only have one device to purchase, install, and configure apps for. You only have one version of an app to learn how to use with one consistent experience. And sharing of data between platforms, like between a phone and desktop will be one less thing to have to set up. You will be able to do tasks for the best suited and accessible form factor. You won’t really have to think about how you have all your devices setup and configured to deal with all your workflow use cases and mobility needs. And with 5G coming in the near future, it is very likely users will just bypass WiFi for connectivity. 5G will have cellular connectivity forecasted in the gigabit speeds, which will be faster than what you can get with WiFi. So your one device will have the same connectivity where ever you go; away from home or at home. And only having one device is going to save you money. Think about how we purchase computing power today. We are paying a lot of money to have near similar computing power for three form factors (e.g. little phone, tablet, and desktop). Just as a basic estimate on what a family of three is paying for all this redundant computing power, say a family of three each has a laptop, tablet, and phone. Estimate $900 for a laptop that lasts four years. Estimate $600 for a tablet that lasts three years. Estimate a phone that costs $800 that lasts two years. Do the math. That comes to over $200 a month; or close to $2,500 a year; or $25,000 a decade! We need something simpler.

A pocketable PC is inevitable given the trends in computing power and miniaturization. What people are going to have to ask themselves, is what operating system are they going to want on this one device they own. Everyone has their own reasons, but let me share my thinking on this. Apple makes great devices. But that is their business model. They sell devices. When you go with Apple as your operating system, you can only choose between devices that Apple provides. I do not like having this limitation. I like for market competition to be able to make competing devices with different feature sets and price points. Android is a great operating system, but unfortunately, Android is an operating system for a throw away culture. OEMs love Android because it is free and they can modify it. Once they have provided maybe a few updates to a device, they have already moved on to the next great thing. They essentially abandon an older device, and the device will stop getting updates. This, in my opinion, is not acceptable. This one device is going to need updates in a world where hacking is common place. OEMs of Android device are not motivated to provided updates for the long term because it is not cost effective to keep maintaining these custom Android builds, and it allows them to differentiate OS features only available if you purchase a newer device. They want you to essentially throw away your old device and get a new one if you want it to be safe, and be able to run the latest stuff. These reasons are why I’m rooting for Windows 10 to be this one OS I will use for this one device. I think Microsoft can pull off this world of computing convergence.

So Microsoft has a strong mobile strategy because they have a strong strategy for computing convergence. We have to stop thinking that mobile means phone. Mobile just means small in size, connected with cellular, and can run on battery power. PCs of the future will be highly mobile and will be able to make phone calls. App developers will need to make apps that can deal with multiple form factors. Once we can all break this biased thinking that mobile means phone, we can enjoy and look forward to the world of computing convergence that is coming.

Copyright © 2018 by Jeffery Lewis. All rights reserved.
Published by