October 25, 2019
Microsoft Office Cologne
Who Spoke
Microsoft MVP, Software Development Engineer at App Impact d.o.o Sarajevo
Info Support NV
Sw engineer, Xamarin developer @ Fresenius Medical Care
Developer & President DDSoft
Principal Program Manager for Client Developer Tools at Microsoft
Freelance software engineer at Sharpnado
Software engineer
Microsoft MVP and lover of code, sunshine and trains.
Lead Mobile Developer Rey Automation, Microsoft MVP
Cloud Developer Advocate at Microsoft
Xamarin Developer @ MCA dooel
Software Developer at TrackMan. Microsoft MVP
What Happened
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
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
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
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
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
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
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
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
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
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
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
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
Holzmarkt 2, 50676 Köln, Germany