A Month with Microsoft Surface Pro

October 2018 | Dios Kurniawan

As a decade-long fan of Thinkpad laptops, I made a huge decision last month when I bought a Microsoft Surface Pro (2017 model). It is a departure from my original taste of black, sturdy, work-oriented Thinkpad. Surface Pro is small, fashionable, stylish-looking with so much focus on look. The case cover, which also acts as the keyboard, is built around Italian-made Alcantara fabric – which is also used in Porsche supercars – gives the whole system a distinctive, soft-to-touch premium look.

By definition, Surface Pro is actually a tablet, not a laptop; the keyboard cover is an optional accessory that costs me IDR 2,000,000 (I chose cobalt blue color). My original plan was to use Surface Pro to function as a laptop replacement because I needed something small and light, really light to go with me literally anywhere.

After experiencing Surface Pro for a little more than a month, this is what I can share with you:

The Keyboard
Compared to my Thinkpad X1 Carbon, which is regarded by many people as the gold standard of quality laptop keyboards, typing on Surface Pro is somewhat less than satisfying. The keyboard, which is a detachable case, does flex quite a lot. I need a solid flat surface to use the machine properly, something that may not always be easy to find in public places.

Key travel is deep, but does not provide the excellent key travel as in my Thinkpad.

Touchpad is large enough, although not as large as that on MacBook Pro. However no matter how good the latest touchpad technology is, I still prefer using a wireless mouse because it is more precise and easier to work with, so I always carry one with me.

Installing the keyboard is literally a snap, the magnetic connection secures the tablet and keyboard. Keyboard and tablet work so well together that I have barely not needed to separate the two.

Processing Power
My setup comes with the 7th generation Intel Core i5 and 8GB of RAM. While this looks okay on the paper, there is one caveat: it is a fanless design, meaning the CPU is throttled when the temperature starts heating up, preventing the CPU from achieving its full potential power. I frequently experience lags when opening apps and large files. Compared to my Thinkpad which sports Intel Core i7 processor, the Surface Pro is way behind.

Portability
I have to admit Surface Pro looks stylish under my arm when walking into a meeting room. Its compact size makes it easy to pack and go. I can barely feel it when it is inside my bag. It is the pinnacle of portability. But as it is literally not a laptop, consequently it is only good on desks or flat tables. It is not so “lappable”; using it on the lap presents its own challenges. The kickstand keeps falling off on my lap.

Using it in airliner tray is even more troublesome, as the standard airline tray cannot accommodate the extra space needed by the kickstand. I cannot use my Surface Pro in the air, except using it in tablet mode.

Using It as A Tablet
The display is excellent, delivering intensely bright and vivid images, rivalling that on iPad Pros. Watching Netflix movies on Surface Pro in tablet mode has become my favorite activity at night.

Reading e-book, on the other hand, is a bit not so fascinating experience because handling it with one hand is challenging. It’s a bit heavy for me. I still prefer using my 8-inch tablet to read e-books.

The Windows 10 Tablet Mode user interface is difficult to use, to say the least. Compared to iOS, in term of tablet-friendly usability, Windows 10 is light years behind.

I purchased the Microsoft Pen (another IDR 1,200,000 or so) to use it for note-taking and it worked just great. The pen also magnetically snaps into the body for easy transport.

Using It with An External Monitor
I have 4k monitor at home to use with my Surface Pro, along with Bluetooth mouse and keyboard. This way, I have a truly desktop experience although the CPU performance limitation remains.

Ports
Potential buyers, be warned:  Surface Pro only has one (yes, one) standard USB port. No USB-C. No HDMI port either. Only one archaic Mini DisplayPort for outputting video. If you do a lot of presentation, make sure you have a converter with you all the time.

The Verdict
Surface Pro is not a laptop, but Microsoft wants you to buy it to replace your laptop. Beware, it may not be for everyone. If you rarely use the tablet mode (like me), then you would be better off buying traditional laptop. The lack of solid processing power is a obvious weakness. However, if what you need is a small, very light and truly portable 2-in-1 device which can handle light computing requirements, Surface Pro may be your answer.

**UPDATE JANUARY 2019**
I just upgraded to Surface Pro 6, which was released couple months ago. It came with the latest 8th generation Intel Core i5 processor and a faster SSD. Microsoft claims it is 60% faster than the old model, which I can safely confirm : yes, this new machine is considerably more powerful than my old Surface Pro. Programs load faster, lags are less than before. However, the physical design is exactly the same with the old model.

Installing Scikit-learn in MacOS

August 2018 | Dios Kurniawan 

Scikit-learn is an interesting library for doing machine learning work on Python. It offers regression, classification and much more, and the good thing is it’s free. However, I found it a bit challenging to install scikit-learn on Mac OS X. The documentation on scikit-learn.org is not enough to get going. I knew I could use Anaconda distribution, but I was looking for a more ‘manual’ way.

After some try-and-error, I have successfully installed scikit-learn on my MacBook. For those who might have the same problem, I am sharing the installation steps in this blog post. Just follow the steps below. This assumes you don’t have Python installed on your Mac yet.

  1. Install XCode
    To begin with, download the latest XCode from the Apple App Store if you haven’t done it. XCode is a strong IDE, but some will say, we want to run Python, why do we need XCode? Well, for some reason, XCode is needed for its command line tool for the subsequent steps below. I don’t know why, but it just works.After XCode is successfully installed in your Mac, you must install the command line tool. Open a Terminal and issue this command:

    xcode-select --install
    

    Follow the instructions until finish. Then, continue with this command to deal with the licence agreement:

    sudo xcodebuild -license
  2. Install Macports
    Apart from XCode, you will need Macports to install development tool packages. You can download it from macports.org. Just follow the installation instruction. After installation is finished, optionally execute the following command to check for updates:

    sudo port selfupdate
  3. Install Python using Macports
    Now comes the Python package itself. Using Macports, you can easily download and install Python. At the time of writing, the current version is 3.7, so use “python37” as the argument for the following command:

    sudo port install python37

    To make the default Python is set to the latest version, execute these commands:

    sudo port select --set python python37
    sudo port select --set python3 python37

    After that you may want to verify the installation. Open a new Terminal and execute:

    python -V
    

    Check if the default version is correct.

  4. Install Numpy, Scipy, Pandas and other libraries
    Because scikit-learn is built on other libraries like Scipy and Numpy, you will need installing these packages too:

    sudo port install py37-numpy 
    sudo port install spy37-scipy 
    sudo port install py37-matplotlib 
    sudo port install py37-pandas 
    sudo port install py37-statsmodels 
    sudo port install py37-pip
    sudo port select --set pip pip37
    
  5. Finally, install the scikit-learn package
    Use pip to download and install. Execute:

    sudo pip install -U scikit-learn

Check if it is correctly installed by running this in Python:

import sklearn
print(sklearn.__version__)

It should return the installed version like this:

0.19.2

That’s it! Now you can use scikit-learn in your Python program.

XenServer Failed to Boot

June 2018 | Dios Kurniawan

To support our clients, my company uses Citrix XenServer hypervisor quite heavily – because it is simple and it works well. But few days ago, the moment I have dreaded for long time eventually happened: one of our servers refused to boot after a power interruption. No error message shown, it simply wouldn’t boot. I couldn’t even get into the configuration screen.

After many days of looking for a solution, the answer was simple: use the XenServer installation CD/DVD media to reinstall or upgrade the existing XenServer. Sounds risky because that means overwriting many existing files, but it works. This is the step-by-step:

  • 1. Boot machine with XenServer CD/DVD media, enter the installation screen. Stop at the first welcome screen.
  • 2. Type “menu.c32”, don’t press Enter.
  • 3. Press Tab when the new screen opens.
  • 4. Add “disable-gpt” in the parameter list of mboot.c32.
  • 5. Continue with the installation and restart the machine.

This fixes the boot problem while preserving the existing VMs inside. I hope this can be useful for those who may face the same problem.