Andrew Hoefling

Speaker | Mentor | Coder | Leader

A mentor first and a coder second, an Open Source developer. Coffee + Code = <3. Every day I try to write code just slightly better than I did yesterday. Once a week a crush code on my Live Coding Stream, you should check it out!

I'm Andrew Hoefling, and I work for FileOnQ as a Lead Software Engineer building mobile technologies for Government, Financial and First Responders using Xamarin. 

The content on this website reflects my personal opinions, and does not reflect the opinions of my employer or affiliates

Azure Blob Storage provides a powerful file storage API for saving files of any size that can then integrate with you application. A common request is being able to store simple metadata with the file and in the past I would create a simple database to store that data. Built-in to Azure Blob Storage is the ability to store metadata for the blobs usins a Key-Value-Pair of strings. This helps reduces software complexity while meeting the demands of metadata for blobs.

Shared Access Signature (SAS) provides a secure way to upload and download files from Azure Blob Storage without sharing the connection string. A real world example would be to retrieve a Shared Access Signature on a mobile, desktop or any client side app to process the functions. This removes any need to share an all access connection string saved on a client app that can be hijacked by a bad actor.

In DNN the Persona Bar is the admin control bar for managing sites. The Persona Bar is highly customizable from the top-level admin controls to the individual admin modules. The nice thing about developing modules for the Persona Bar is you do not need to use a specific development technique. The platform allows you to inject whatever HTML, JS, and CSS you choose, as long as you follow a few basic rules. Let's look into adding an Uno Platform app into DNN as a Persona Bar Component.

Azure Blob Storage is a great tool for storing any type of file for easy access in your app. The APIs allow you to easily upload and download files of any type which integrates with many popular languages and frameworks. If the SDK isn't supported you can always fall back right to the RESTful endpoints (which I wouldn't recommend, unless you absolutely have to).

C# developers experienced with WPF, UWP, Xamarin.Forms, Uno Platform and anything that involes the ICommand interface are familiar with async void. A quick trick to call Task based asynchronous methods that interact with some type of User Interface interaction. We all know this is bad, but still implement code this way because it doesn't cause immediate problems.

STOP IT! async void is bad

Xamarin.Forms provides a great set of controls for building cross-platform apps including Flyout Menus. Often the default controls don't meet your design needs and you need to build something custom. Xamarin.Forms provides rich APIs for styling and animating just about anything you can imagine. Let's build a fancy animating Flyout Menu!

Dependency Injection is a great technique to leveraging native code in the context of your shared code. In Xamarin.Forms you typically create a custom renderer which gives you native access. If you need to run some native code from the shared context you can easily do this with the built-in Dependency Injection tooling.

Mastering Xamarin.Forms the Third Edition is a great book for both seasoned Xamarin developers and beginners just starting a Xamarin.Forms project. It is a great resource for many techniques needed to solve the complex problems of Xamarin.Forms application development. 

The Zebra TC70x is a mobile touch computer or android device with a built-in hardware barcode scanning. This allows developers to create rich barcode scanning capable apps without using the camera. If you have ever built a barcode scanning app that uses a camera there is a lot of switching back and forth between the camera and the page. This really isn’t ideal when the app requires scanning multiple barcodes in sequence.

DNN has powerful User Management controls, but sometimes you need to use your companies Azure Active Directory configuration or Office 365 credentials (those are really the same). This provides a robust integration with your organization and whatever content you are trying to serve with DNN