Why I Love the Surface Duo

I have been using Microsoft’s new Surface Duo now as my phone for over a week. Given the huge amount of negative press the device has received based on specs and software bugs, I felt the need to chime in with a positive perspective.

I have been an iPhone user for over a decade, since the very first model. Since the iPhone 6, I have been opting for the largest screen size available. I love having a screen I don’t have to squint to see, and room to type.

Reading and Note-Taking Multi-Task Setup

I’m also an avid pen-based note taker. I used to buy the Tablet PCs before the iPad existed. Earlier this year I made the computer switch from MacBook Pro to Surface Book, and am completely satisfied with that decision.

Given my preferences for large screen phones and pen note taking, the Duo is the ideal device. Even in single-screen mode, flipped all the way open, the Duo has a 5.6” display, which compares well to many flagship phones. Put together, the two screens create an 8.1″ canvas. In addition, the 3:4 screen ratio for each screen seems to me much more productive than the tall skinny aspects of many phones. It’s a balance of width and height more familiar from laptops and physical notebooks.

The deep integration of MS Office is also a big plus. OneNote, Outlook, and ToDos are important for me keeping on top of communication and planning. The ability to have two apps open side by side is one of those things you don’t realize you wanted until you have it. How often do you get a security code in email, and need to copy/paste it into an app or website? On a single screen device, this requires a lot of app switching. On the Duo, you never lose the login screen while you’re checking your email.

Another amazing productivity setup: reading or video on one screen, OneNote on the other for jotting down ideas.

Now, to address some of the criticisms. First, the Duo is unfortunately being compared to the Samsung Galaxy Fold. When making this comparison, reviewers obviously complain about the gap between screens. OK, fair enough. Reading or watching a video stretched across two screens in landscape mode is a terrible experience. So don’t do that. Like I said, a single Duo screen is equivalent to many smartphones, and just fine for when I want to consume video. As for reading, the Duo-optimized apps support a book reading mode (two pages), and reading a scrolling page is actually not bad in portrait mode (as long as you can scroll the content around the gap).

Scrolling in Portrait Mode

Other users have complained about software glitches. I truly feel like a lot of this is just getting used to a new device. Sure, sometimes a rotation or keyboard or app switch doesn’t do what I expected it to do. But I feel like that’s a combination of my learning curve and brand new software, which I trust Microsoft to continue improving (they have said there would be at least monthly updates).

The camera is another point of serious complaints. I get it. We’ve become accustomed to amazing quality photos from our phones. The Duo camera takes beautiful photos in certain conditions, and terrible photos in others (low light, especially). But look at it this way. The Duo camera is actually amazing considering it is a 4 mm sensor. The reason for the ubiquitous “camera bump” on other phones is that the sensor depth is a limiting factor in photo quality. Yet I’m perfectly happy with this tradeoff, and the idea of making the Duo thicker or giving it a bump seems alien to its beautiful thin aesthetic. Worse, I’ve heard many users say they want an external camera. So, you’d have to have the device opened to full size to take a photo?! It makes much more sense to flip it around to single screen mode to take photos, allowing for easier handling and stability while snapping.

The battery (batteries) on the Duo provide a full day of moderate to heavy usage. I do occasionally have to plug in in the evening, if I’ve been on it nonstop. But again, this is a failing of many phones, not just the Duo. And like the camera the real performance is actually better than the anticipated performance based on spec comparisons.

Finally, the price. Yep, it’s steep. If you can’t afford it, I totally get it, and there’s nothing inherently wrong with a $300 smartphone. But given the two 5.6″ screens and high-quality custom hinge, I think the price is in line with other flagship phones (one place where I’m happy to compare to the Galaxy Fold).

Composition Mode With Thumb Split Keyboard

So there you have it. It’s an expensive yet super productive, thin, adaptable, multi-monitor device that fits in your pocket. And there’s nothing else competing in that space. I will be a happy Duo user for the foreseeable future.

By the way, if you’re a software developer, check out my other blog and podcast at tocode.software.

iOS/Swift and Android/Java Conversion Chart

I am beta-testing my first Android app, and have recently completed my second iOS app. Having taught myself how to program in both Swift and Java, I spent a lot of time lamenting the inability to easily convert code between the two. Sure, there are cross-platform solutions, but as an independent developer, I couldn’t afford to invest a ton of money in a paid system. Plus, I had already learned Swift, and this wasn’t helpful for many cross-platform solutions.

Below is a list-in-progress of concepts and objects that have parallels between the two operating systems and languages. Feel free to comment and make suggestions!

iOS Android
storyboard/nib design/layout/xml
constraints layouts
UIViewController Activity/Fragment
UIView View
UITableView RecyclerView/LinearLayout
UICollectionView RecyclerView/GridLayout
UIPickerView Spinner
UITextView/UITextField EditText
UILabel TextView
UIButton Button/ImageButton
UIImageView ImageView
UISwitch Switch
viewDidLoad() onCreate()
viewWillAppear() onResume()
viewWillDisappear() onSuspend()
NSNotification.postNotification() sendBroadcast()
NSNotification.addObserver() BroadcastReceiver.onReceive()
dispatch_async() AsyncTask()
 Swift Java
Class Class
String String
Int int/Integer
Bool boolean/Boolean
Array ArrayList/[] — example: String[]
Dictionary HashMap
for i in i..<count { } for (int i=0; i<count; i++) { }
for item in array { } for (String item : array) { }
if x == 5 if (x == 5)
switch object switch (object)
case:
x = 4;
break;
case:
x = 4

I hope this is helpful to some other beginning programmers! Reinventing the wheel for each device is hard enough…not even knowing what the wheel is called is even worse!