October 25, 2019

XamExpertDay 2019 Cologne

Microsoft Office Cologne

Who Spoke

Speakers

Almir Vuk

Almir Vuk

Microsoft MVP, Software Development Engineer at App Impact d.o.o Sarajevo

Arne De Cock

Arne De Cock

Info Support NV

Codrina Merigo

Codrina Merigo

Sw engineer, Xamarin developer @ Fresenius Medical Care

Dennie Declercq

Dennie Declercq

Developer & President DDSoft

James Montemagno

James Montemagno

Principal Program Manager for Client Developer Tools at Microsoft

Jean-Marie Alfonsi

Jean-Marie Alfonsi

Freelance software engineer at Sharpnado

Konrad Müller

Konrad Müller

Software engineer

Luce Carter

Luce Carter

Microsoft MVP and lover of code, sunshine and trains.

Mark Allibone

Mark Allibone

Lead Mobile Developer Rey Automation, Microsoft MVP

Sandra Ahlgrimm

Sandra Ahlgrimm

Cloud Developer Advocate at Microsoft

Stefanija Popovska

Stefanija Popovska

Xamarin Developer @ MCA dooel

Tomasz Cielecki

Tomasz Cielecki

Software Developer at TrackMan. Microsoft MVP

What Happened

Schedule

Containers; Local and in Cloud for Development, Testing and Production

Sandra Ahlgrimm

Every mobile app will need a backend at some point. That needs to run somewhere and somehow. We actually don’t care as long as it is fast, reliable and preferably cheap. Containers allow us a lightweight execution. In this keynote Microsoft’s Cloud Developer Advocate Sandra Ahlgrimm will guide you through the journey of container usage on your local dev machine and in the cloud for development, testing and production.

09:15

50 min

An introduction to authentication with OpenID Connect

Konrad Müller

Nearly every modern connected app needs to have a secure authentication mechanism, either to simply authenticate the user or to allow further authorization to access data. This talk will present the OpenID Connect standard as an authentication solution for your app and how it integrates in your backend system.

10:10

50 min

Building your IoT front end with Xamarin Froms

Mark Allibone

Have you ever wondered how hard it would be to build to your own little internet-connected sensor system? See how to connect devices to the cloud with Azure IoT. Moreover, once in the cloud, how the data can be processed. By using SignalR clients are provided with a continuous stream of data and insights. Discover how to build a small scale monitoring system and observe it on a mobile app developed with Xamarin Forms.

10:10

50 min

Improve people with disabilities life with Xamarin.Essentials

Dennie Declercq

This talk is for the makers! For the makers who are making apps for people with disabilities. Apps to give quality of life to people who aren’t used to use a smartphone. In this talk we are going to focus on how Xamarin.Essentials can make steps to develop accessible apps a lot more easy. Xamarin.Essentials is a NuGet package you can download in combination with Xamarin.Android, Xamarin.iOS and Xamarin.Forms. This is going to be an awesome session that combines technical stuff and non-technical “social care”.

11:10

50 min

Implementing push notifications with VS App Center in Xamarin.Forms apps

Almir Vuk

Visual Studio App Center is constantly evolving and getting better. One of the greatest features of VS App Center is that you can use it to send Push Notifications to your cross-platform mobile apps and engage users with them. We all can agree that push notifications are very important and useful when we speak about mobile apps. Using VS App Center you can send notifications through the UI of VS App Center, but most importantly you have availability to send them from your backend using VS App Center REST API. In this session I will cover all steps required for implementing push notification feature in Xamarin.Forms apps using Visual Studio App Center.

11:10

50 min

What's New, Hot, & Awesome for Xamarin Developers!

James Montemagno

Join Microsoft’s James Montemagno for a special presentation showing off all of the amazing advancements that are happening for mobile development with Xamarin and .NET. In this packed session James will show off everything that you need to know that is coming for Xamarin developers in the SDKs, Ecosystem Tooling, and much more! You don’t want to miss out!

13:00

50 min

Coming out of your Shell - What's new in Xamarin.Forms 4.0

Luce Carter

Xamarin.Forms 4.0 came out in May 2019 and with it, a load of new features to make your life easier as a developer. In this talk, Luce will discuss the new features including Shell, a navigation framework taking away some of the complexities when developing UI's that all link together.

14:00

50 min

MVVM async loading: free yourself from IsBusy = true

Jean-Marie Alfonsi

This session talks about the issue of using two much inheritance in the view models and brings technical solutions to solve this by composition. It focus on the async loading of the view models and the handling of the result (error, empty state). The target audience is MVVM/Xaml developers (UWP/WPF/Xamarin.Forms). ## Common inheritance scenario We'll start by seeing how the async loading view model initialization is done most of the time: ### excerpts *So, here is our shameless initialization code (spoiler alert: this is wrong).* ```csharp public async void Initialize(object parameter) { await InitializationCodeAsync((int)parameter); } ``` *This is a little better:* ```csharp public async void Initialize(object parameter) { try { await InitializationCodeAsync((int)parameter); } catch (Exception exception) { ExceptionHandler.Handle(exception); } } ``` *But wait, I want to give a UI feedback to the user:* ```csharp public async void Initialize(object parameter) { IsBusy = true; HasErrors = false; try { await InitializationCodeAsync((int)parameter); } catch (Exception exception) { ExceptionHandler.Handle(exception); HasErrors = true; ErrorMessage = } finally { IsBusy = false; } } ``` *Pfew, this is a lot of copy paste on each of my VM, I will create a base VM for this, and all my VM will inherit from that.* *Then stop it, stop that nonsense. Just use Composition over Inheritance.* ## Compostion We'll compare this code to the use of a component responsible for the view model state management: ```csharp public ViewModelLoader < ObservableCollection < SillyDudeVmo > > SillyPeopleLoader { get; } public void Initialize(object parameter) { SillyPeopleLoader.Load(LoadSillyPeopleAsync); } ``` ### NotifyTask Then we will deconstruct the ViewModelLoader object piece by piece to show its true nature: #### excerpts *The ViewModelLoader is built around A Task wrapper implementing INotifyPropertyChanged: the NotifyTask.* *This component has been created by Stephen Cleary years ago (https://msdn.microsoft.com/en-us/magazine/dn605875.aspx).* *It handles all the common states of a ViewModel loading:* 1. Loading 2. Success 3. Empty state 4. Error (and all sub exceptions with a ErrorHandler: Func < Exception, string >) 5. Refresh *So instead of giving to a parent view model the responsibility to handle all these for us, we just create a reusable component to do so, achieving a clearer architecture.* ## The View side We'll then finish by a showcase of a component I wrote for Xamarin.Forms: ### excerpts *The TaskLoaderView (https://www.sharpnado.com/taskloaderview-async-init-made-easy/) is the natural brother of the ViewModelLoader: you bind a ViewModelLoader to a TaskLoaderView.* *This component removes the async initialization pain from the view models (try catch / async void / IsBusy / IsInitialized / base view models / ...), and the IsVisible properties from the Views, by using Composition.* *Now prepare to be be dazzled!* *Dazzling demo* Clap, clap, clap. THE END.

14:00

50 min

DevOps: Continuous delivery for Xamarin application, Azure DevOps and App Center

Stefanija Popovska

Manual distribution on mobile applications can be a tedious process for all stakeholders (developers, testers, clients). The process of building, testing, packaging & distribution needs to be streamlined to the point where it’s a single push of a button. I will tackle the problems that need to be addressed in the entire flow such that the developers will focus on delivering new functionality, rather than repeating the same brittle delivery procedure. The presentation will include a use case where I’ll demo the entire process of a CI/CT/CD hands-on. I’ll develop a sample application from “New Project” to Production.

15:00

50 min

Industry 4.0: Standalone smartwatches, are we there yet?

Arne De Cock

What seemed like a nice gizmo from James Bond movies is now part of everyday life. Smartwatches are seeing major adoption on the streets and they do not seem to be "just a fad". But... are they ready to be used in industrial environments? Will the factory-worker of the future have this companion on his/her wrist or will it be stuck in the consumer-only market forever? To jump with both feet into the future, we challenged ourselves to build a stand-alone smartwatch app for WearOS and Tizen to support factory workers in a construction plant. Xamarin being our framework of choice. From the start, this project raised a ton of questions: - How do we connect the application to all the machines we got? - What tweaks you need to make the battery last a full 8-hour shift? - How to stop the app from getting killed by the OS? - How do we make sure employees can not use the watch to surf the web? - Can we provision 100s of devices in a quick and simple way? - ... and many more. During this talk we will answer all these questions, show you our setup and architecture for the project and give you our view on the future of "smartwatches for industry 4.0".

15:00

50 min

Debugging Android UI

Tomasz Cielecki

Improve performance of your Android UI, using the wealth of tools provided in Android Studio and on your device.

16:00

50 min

UI Testing with Xamarin.Forms

Codrina Merigo

Learn more about the UI Test for Xamarin.Forms using a BDD approach. Also a demo on writing and have all green tests for your app.

16:00

50 min

Where It Was

Location

Microsoft Office Cologne

Holzmarkt 2, 50676 Köln, Germany

Relive The Moments

Photos

View Photo Gallery