Web, native or cross-platform?

So you’ve come up with a concept for an app or you have a service which in your mind would benefit greatly to be “appified “and given to the end user, but what tech do you choose to use? A web page? Hybrid web app? Native apps? Or do you go cross-platform?

At Shortcut we’re blessed with lots of highly skilled native developers for both iOS and Android, and we believe that native is the way to bring forth the best experience for the end user. There’s really no arguing it considering the platforms are designed this way.

Since the launch of iOS and the app store we’ve had a steady increase of alternative solutions that allow you to create apps that work on multiple platforms. The motivation behind these solutions is to leverage the knowledge you already have. It might be a particular language or a whole ecosystem that would be foolish to leave behind to go and learn Swift and Kotlin (or would it?). One other motivation is to be able to share code, assets and other resources, because why do the same work two to three times over?

Having worked with web, hybrid, native and cross-platform apps I can recommend these four ways of achieving your goal:

  • Web page
  • Native app using Objective-C/Swift for iOS, Java/Kotlin for Android and C# for Windows 10
  • React Native (Javascript)
  • Xamarin (C#/F#/VB.NET)

If you’re a web developer reading this you might ask me why I left out hybrid apps (or progressive web apps). Hybrid apps offer the user experience of a web page but is presented like an app. Very confusing. It can work, but experience has shown me and others (look up Facebook) that it’s not really to be recommended. However, that’s why I’ve included React Native.

Before we proceed lets get a little bit more familiar with React Native and Xamarin which represents the cross-platform choices I’m comfortable recommending:

React Native is a framework that allows you as a developer to leverage your experience and knowledge of Javascript and React for building native mobile apps. React Native is available for iOS and Android with Windows 10 support being currently developed. You define your UI the same way as you normally would when creating a web-page with React. The difference being there’s no browser or HTML involved. You use components such as Image, View, Text, ListView etc which are native UI elements that are represented as React components. It’s quite neat. It also aims to provide a common set of components to easily create apps that span multiple platforms such as iOS, Android and Windows.

Xamarin is a platform for creating native apps using C#, F# or Visual Basic .NET and leverages the power of the .NET framework. Xamarin gives you access to the whole API surface of iOS and Android and applies some .NET bits to it where possible. If you have experience with iOS and Android you will be quite familiar using Xamarin, because it’s the same components, classes, storyboards and XML layouts that you’re used to. Xamarin also provides a UI abstraction layer with their Xamarin.Forms framework you can use for writing layouts once in C# or XAML that works on iOS, Android and Windows. It works the same way as React Native where you have common components such as Buttons, Images that translates to UIButton for iOS and Button for Android and Windows behind the scenes.

“Okay Henning, enough talk, I’m on a tight schedule, just give me the answer so I can tell my managers what we’re gonna use for our app and be done with it”

I wish it were that simple. The trick to choosing the right one is challenging your idea, churn the user experience and don’t fixate on any one solution early on in the process. I highly recommend bringing in designers and developers that have experience with developing mobile apps. Especially if you’re thinking of hiring an app agency. The team will work with you on the idea and advise you on what will be the most beneficial for what you are trying to achieve.

When working through the app there are a couple of things to consider and determine early on which will help you decide:

What is the goal of the app? What’s the main feature going to be and who is it for? Under what conditions will the users be using this app? In some cases some ideas are better portrayed as a web page than an app. Challenging the idea early on will help you better determine this.

Do you want a full app or a prototype? When being agile (LEAN) it is highly recommended to test your concept early on with real users. Is the prototype going to be on iOS, Android and/or Windows? Cross-platform tools like React Native and Xamarin.Forms can get you quickly up and running with working prototypes reducing the workload needed to develop and maintain multiple platforms.

Who’s going to be doing the actual development? What are the strengths of the team? Don’t be clouded by your IT department or higher ups. It might sound nice that you want a web solution (or some other specific solution) since you can maintain it yourself when the app is done. Don’t fool yourself. If you’re serious about the app it will never be “done” and it is highly likely you won’t have the resources to push on through yourself.

The most important thing when choosing a framework is to not let your decision impact the user experience. You’ll most certainly want the users to have a great experience. It will be beneficial to you and your company.

I’d love to talk more about this with you so please do feel free to comment, contact me on my e-mail or tweet me @henningmosand.

If you’re serious about developing great user experiences then take a look at www.shortcut.no — we’ll be happy to talk and work with you.

Microsoft Student Hackathon 2015 in Oslo

On the 18th to the 19th of September, Microsoft Norway and myself are inviting students to attend a hackathon event at Microsoft’s headquarters at Lysaker Torg 45. It’s a tradition and I’ve participated a couple of times during my period at The Norwegian School of Information Technology now knows as Westerdals Oslo School of Arts, Communication and Technology (Westerdals ACT). It is quite the honor to be on the other side of the table this time and my good friend Anders Gill (Technical Evangelist) and I will kick things off with a thirty minute presentation each where we’ll be talking about Windows 10, Universal Windows Platform, Azure and the new Windows Bridge for Android and iOS.

For those into gaming there will be competitions in FIFA and Halo as well, so come on down on the 18th of September and join us in creating awesome new ideas, apps and websites!

Make sure to visit the post over at Channel9 where we have made a little promotional video or just watch it here and remember to sign up at this page.

 

Hope to see you there!

 

 

Tool: Switch between Dark or Light theme on Windows 10

If you’ve been following news regarding Windows 10 lately there’s a good chance you have probably picked up that it’s possible to switch Windows 10 over to a Dark theme. It requires fiddling with the registry and there are some guides out there on how to do it, but why go through any trouble? I discovered today that my good friend and brother had released a simple tool that you can use to switch between Dark and Light themes.

Windows-10-dark-theme-tool

Interested? Then head over to “Windows 10 Dark Theme Enable / Disable Tool” on Tommynation.com for the download.

Running Windows 10 Mobile Insider Preview build 10080 on Lumia 930

With the latest insider preview build of Windows 10 for Phones — now named Windows 10 Mobile — released you can now install it on your flagship phones like the Lumia 930 that I’m using. So that’s what I did. I hopped on the fast-ring and let the update process do its job.

When I returned to the phone (downloading and installing can take some time) — I was greeted with a loading screen. Turned out to be an eternal loading screen. It kept on loading and my phone started to heat up. I plugged it out of the charger and turned it off. I turned it back on again after a while and the loading screen still greeted me and it kept on loading. I found out I could however access the notification center, Cortana and even use the task switcher. The loading screen was in fact the start screen not being able to load. I thought I would have to use the recovery tool.

Then I tried resetting my phone from Settings > System > About > reset phone. After a reset the start screen appeared. With huge tiles. I then read some tips on tweeterspacespherenet about this particular issue and resolved it by going into Settings > Personalization > Start and enable “Show more tiles”. The tiles would be smaller, but there’s still some issues with the icon size to tile size ratio, but I can live with that for now.

Another issue you might run into is that backspace does not do anything. By adding another keyboard from Settings > Time & language > Keyboard this started to work as well. I might also add that I like the way you switch between languages now. Swiping on the space key? Nice gesture.

To sum it up or TL;DR:

Start screen not showing? Getting an infinite loading screen?

Reset your phone from Settings > System > About > reset phone

Huge tiles on your start screen?

Go to Settings > Personalization > Start and turn on “Show more tiles

Backspace not working?

Go to Settings > Time & language > Keyboard and add another keyboard language

One more thing; have you noticed a mouse cursor in the top-left corner when you tap on the back, home or search button on your phone? Try pairing a bluetooth mouse. You can now use your mouse to click on stuff on your phone. The scrolling does not work though:

 

Windows 10 Continuum for Phones

Ever since I got to play with my dads Nokia 9210i Communicator back in the early 2000s I’ve always been searching for the mobile experience that could evolve upon request. That could be a small phone, but when you needed a little extra it could adapt. The 9210i Communicator was something like that and I’ve been searching for an upgraded experience ever since.

"Nokia 9210" by J-P Kärnä. Licensed under CC BY-SA 3.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Nokia_9210.jpg#/media/File:Nokia_9210.jpg
“Nokia 9210” by J-P Kärnä. Licensed under CC BY-SA 3.0 via Wikimedia Commons – http://commons.wikimedia.org/wiki/File:Nokia_9210.jpg#/media/File:Nokia_9210.jpg

 

Upon this day I have been through phones running Windows Mobile (or was it PocketPC Phone Edition of some sort?) and the last phone I bought that was anything like the 9210i Communicator: Nokia N900. I loved the device. It had a full keyboard and ran Linux. I could use the package manager and download more hardcore software, and it had pretty much (at that time) every possible way of connecting to people, networks and devices. Eventually I had to switch it with something more modern that allowed me to run the apps I had started developing for Android.

Nokia N900. Look at that task switcher
Nokia N900. Look at that beautiful task switcher

The market had been quiet for quite some time, then Microsoft showed up with their Surface and Surface Pro tablets that ran Windows 8. The Pro being a fully fledged computer running on Intel chipsets, with full USB port and a 10,8″ multi-touch screen and add the Type or Touch Cover and you had a laptop. Finally I thought; now we’re getting somewhere. In fact, I own Surface, Surface Pro, Surface Pro 3 and a Surface 3 to this day. It has really come to be the type of device I’ve wanted for many years. It is a beautiful tablet that can evolve into a laptop (attach the keyboard) or a desktop (dock it) and the experience adapts for its usage.

WP_20150510_14_16_15_Pro

 

The Surface is a great step on the way for the experience that I’ve sought for all these years. It’s still not quite there, but Microsoft seems to be heading in that direction. At the Xamarin party the night before the Build 2015 conference started I talked with a Microsoft employee, and I got to talk about this concept with him. After I told him my story, he smiled and said “It’s not quite ready, but it will come”. I was intrigued.

The next day at the keynote Joe Belfiore showed us Continuum for Phones. Continuum is already known in Windows 10 as the feature that switches the Windows experience from PC mode to tablet mode and vice versa. Continuum for Phones will allow you to dock your phone or connect to a wired or wireless screen and it will adapt to become a desktop. The only downside with these phones today is that they run on ARM architecture and that means the only software you can run must be built for ARM.

Continuum-Windows-Phone
microsoft-windows-10-continuum-for-phones

 

Down the road Microsoft hopes that the majority of mainstream apps will be Universal Apps that run across the Windows 10 device family, but until that time there’s still a bunch of classic Win32 apps that one would want to run. At least that I would want to run. Until phones come with an Atom chip or some other x86/x64 chip there’s always Remote Desktop to the rescue.

With Windows 10 the phones have access to the same HID support so mice, keyboards and all the other USB peripherals will be able to work with it. Marvelous. When you connect your phone to a dock or a screen, you can still use your phone normally, so it will be like having dual-monitors where one screen is really tiny.

I am genuinely excited about this feature, and is a major step towards the experience I’ve been seeking. It’s still not quite there.

My hopes going forward is take the same concept and introduce a Surface Phone and bundle it with empty Surface tablet shells and other formfactors. Why empty? When we get there, it will no longer be necessary to bring your laptop or tablet with you. The phone is your PC, and you can dock your phone in to the Surface shell. The phone can adapt to become a touchpad if you want (imagine docking it where the touchpad would normally be) as we all know that the only ones that have great touchpads for laptops is Apple. The shell can contain extra batteries instead to increase the longevity of your session. There’s many possibilities, and I would love to one day just carry a phone with me. That’s at least the first step, then we can talk about more complex interfaces as we’re getting closer to realizing them.

The other company that has been making the same kind of progress is Ubuntu with their Ubuntu Phone, so if you’re a Linux user (as I once heavily was) then you should totally check that out. It’s exciting times that’s for sure!

0212_ubuntu_android_660

One last thing: Microsoft should drop the Continuum for Phones name and just go with Continuum. Please.

Surface 3 initial impressions (interrupted)

Surface 3 was released to the public here in Norway on Thursday (7/5/2015). I was lucky enough to get my hands on one for free the very day.

The largest online retailer of computer equipment Komplett.no held a contest in association with Microsoft Norway. Having been situated at home the last couple of days (under the weather), I told my girlfriend about this contest. Komplett.no would announce at the strike of 12, 15 and 18 three locations where the first person to see one holding the Surface 3 and “shouting” “I want a Surface 3” would get to take that Surface 3 along with a Type Cover home. Eagerly we sat around 12:00 and waited for the announcement, and one of the locations announced was pretty close, so my girlfriend put on her shoes and ran to try get a hold of one. When she was almost at the location I texted her that it had already been given away.

After that first attempt I thought the next announcements would be in different cities or in a galaxy far far away. When my girlfriend got home she handed me a large white shopping bag: “Here, I got something for you”. Turns out that she followed the 15:00 announcement and the location? Right outside where she works, so she immediately ran over and got it. So thank you darling for the effort, it was really nice of you!

Here's my girlfriend holding the Surface 3 and the new Type Cover
Here’s my girlfriend holding the Surface 3 and the new Type Cover

Enough with the mushy backstory already, let’s take a look at what we got here.

First Technical Preview of Windows 10 for Phones launched

Today Microsoft launched the first version of Windows 10 for Phones. This is a Technical Preview just like the desktop counterpart, and is only recommended for the hardcore enthusiasts that don’t mind to encounter bugs, crashes, weird behavior and unfinished work. I like to live on the bleeding edge of technology. If there is something new I can test then I want to test it out. Unfortunately, this first release is only intended for a small sub-set of Lumia devices in the low-end part of town. If you got one of these devices then you should be able to test out Windows 10 today:

  • Lumia 630
  • Lumia 635
  • Lumia 636
  • Lumia 638
  • Lumia 730
  • Lumia 830

That means I won’t be able to test it out quite yet, I posess a Lumia 520, 530, 1020 and 930, so you have to rely on other sources for videos, screenshots and “reviews” of the Technical Preview. If you want to see what’s new and what’s coming in the near future, take a look at this video feautring Joe Belfiore:

Why am I not getting this preview right now!?

Apparently our beloved high-end devices have very tight OS-partitions and no possibility at the moment to dynamically adjust the partitions, which as stated by Microsoft makes it hard to update the OS in-place:

“Some context on why we chose these and not higher end phones like the 930/Icon or 1520: We have a feature that will be coming soon called “partition stitching” which will allow us to adjust the OS partition dynamically to create room for the install process to be able to update the OS in-place. Until this comes in, we needed devices which were configured by mobile operators with sufficiently sized OS partitions to allow the in-place upgrade, and many of the bigger phones have very tight OS partitions.”

Check out the blog post announcing the release, and be sure to check out the known issues before you decide to install the Technical Preview on your phone!

Microsoft Blog: Announcing the first build of Windows 10 Technical Preview for Phones