Recent Posts

Augmented reality basics in .NET MAUI on iOS

8 minute read

Augmented reality (AR) is the process of an app adding a 2D or 3D element to the live view from a device’s camera in a way that makes those elements appear t...

Path flattening in SkiaSharp

7 minute read

It’s also sometimes useful to obtain all the drawing operations and points that make up a path, particularly for paths created by path effects and converting...

Wavelet transforms in SkiaSharp

4 minute read

Traditionally, wavelet transforms are used for signal/image/video compression, as they are fantastic for decomposing data into different frequency components...

Frequency filtering in SkiaSharp

8 minute read

As any computer science undergrad can tell you, a Fourier transform takes a signal from the time domain and transforms it into the frequency domain. What thi...

Performing convolution in SkiaSharp

4 minute read

In image processing, convolution is the process of adding each element of the image to its local neighbours, weighted by a convolution kernel. The kernel is ...

Getting pixel data with SkiaSharp

4 minute read

I’ve recently produced a prototype app for performing 2D image processing with SkiaSharp, hosted in a .NET MAUI app that targets Mac Catalyst. The reason I o...

SkiaSharp and MVVM

4 minute read

SkiaSharp is a 2D graphics system for .NET and C#, powered by Google’s Skia graphics engine. It’s available as a NuGet package, and can easily be added to an...

Playing local audio files with .NET MAUI

3 minute read

Previously I wrote about playing audio with .NET MAUI on Android, iOS, Mac Catalyst, and Windows. The main problem with my implementation was that the FilePi...

Playing audio with .NET MAUI

6 minute read

Many apps, whether mobile or desktop, require the ability to play audio. That audio may be remote, stored in the app bundle, or be chosen from the user’s dev...

Playing video with .NET MAUI on Windows

1 minute read

Previously I wrote about playing video with .NET MAUI on Android, iOS, and Mac Catalyst. The problem platform was Windows because WinUI 3 lacked any media pl...

Behaviors library for .NET MAUI

3 minute read

Many years ago I wrote a behaviours library for Xamarin.Forms. The conventional view was that behaviours extend the functionality of controls, with typical e...

Display a map with .NET MAUI

3 minute read

Many apps, whether mobile or desktop, require the ability to show a map. However, .NET MAUI doesn’t currently have a view (control) capable of displaying a m...

Playing video with .NET MAUI

6 minute read

Many apps, whether mobile or desktop, require the ability to play video. That video may be remote, stored in the app bundle, or be chosen from the user’s dev...

Implicit usings in .NET MAUI

1 minute read

.NET MAUI Preview 11 now uses implicit usings to reduce the number of using statements you need to specify at the top of each file. For more information abou...

Invoke platform code in .NET MAUI

3 minute read

Xamarin.Forms has the DependencyService class, which is a service locator that enables apps to invoke native platform functionality from cross-platform code....

Adventures in ARKit - image detection

3 minute read

In my previous blog post I discussed how to display a 3D model in a scene. In this blog I’ll discuss how to perform image detection in a scene. Specifically,...

Adventures in ARKit - display a 3D model

3 minute read

In my previous blog post I discussed how to overlay an image of the earth on a SphereNode, which derives from SCNNode, and manipulate it through touch gestur...

Adventures in ARKit - rotating earth

2 minute read

In my previous blog post I discussed how to animate a node in a scene. Specifically, I animated a cube by rotating it continuously through 360 degrees on the...

Adventures in ARKit - animation

4 minute read

In my previous blog post I discussed how to interact with nodes in a scene, using touch. This involved creating gesture recognisers and adding them to the AR...

Adventures in ARKit - respond to touch

2 minute read

In my previous blog post I discussed how to overlay an image on the camera output in an ARKit app. Objects that you overlay on the camera output are called n...

Adventures in ARKit - overlay an image

3 minute read

In my previous blog post I discussed how to create a basic ARKit app on Xamarin.iOS, that displays the camera output. In this blog post I’ll take the first s...

Adventures in ARKit - platform setup

2 minute read

Lee Englestone has recently written a book about developing augmented reality apps using ARKit on Xamarin.iOS. It piqued my interest so I bought it. His book...

Wavelet-based image upscaling

4 minute read

Last summer I wrote several blog posts about performing cross-platform imaging using Xamarin.Forms and SkiaSharp. My first post talked about accessing image ...

OAuth 2.0 for Native Apps using Xamarin.Forms

2 minute read

About two years ago I wrote some samples that demonstrate using Xamarin.Forms to implement OAuth 2.0 for Native Apps. This spec represents the best practices...

Creating a Hyperlink in Xamarin.Forms II

2 minute read

Previously, I wrote about creating a hyperlink in a Xamarin.Forms app by adding a TapGestureRecognizer to the GestureRecognizers collection of a Span, and se...

Xamarin.Forms Compiled Bindings FAQ

3 minute read

We recently announced compiled bindings for Xamarin.Forms. Bindings aren’t cost efficient because they are resolved at runtime using reflection. In some scen...

Creating a Hyperlink in Xamarin.Forms

2 minute read

Creating a hyperlink in a Xamarin.Forms app has traditionally involved writing an effect or custom renderer, and having to provide platforms implementations ...

Binding a Collection to a FlexLayout IV

1 minute read

Previously, I explained how to extend the ExtendedFlexLayout class so that it can bind to collections that change at runtime, with the changes being reflecte...

Binding a Collection to a FlexLayout III

4 minute read

Previously, I explained how to extend the ExtendedFlexLayout class so that it allows a DataTemplateSelector to choose a DataTemplate at runtime. This enables...

Binding a FlexLayout to a Collection II

3 minute read

Previously, I explained how to extend the FlexLayout class with ItemsSource and ItemTemplate properties, so that it can bind to data stored in a collection. ...

Binding a FlexLayout to a Collection

4 minute read

In May we published a doc on the new FlexLayout control that’s present in Xamarin.Forms 3.0. FlexLayout is a versatile layout control that can arrange its ch...

Xamarin.Forms Behaviors: GoToStateAction

3 minute read

Previously, I mentioned that I’d published v1.4 of my Behaviors library, and that it included some new functionality. The main item of new functionality is a...

Behaviours Library 1.4

less than 1 minute read

It was recently brought to my attention that my Behaviours library didn’t work with Xamarin.Forms 3.0. After some investigation and a small code change I bro...

Xamarin Manchester User Group Talk

less than 1 minute read

Last night I spoke at the Xamarin Manchester User Group. It was nice to see some familiar faces, and some new faces. Slides & Demos The slides from my ...

Xamarin.Forms 2.5 and Local Context on Android

3 minute read

Previously I wrote about Xamarin.Forms 2.5 and local context in Android custom renderers. I briefly mentioned that Xamarin.Forms.Forms.Context is now obsolet...

Transient Fault Handling in Xamarin.Forms

9 minute read

All applications that communicate with remote services and resources must be sensitive to transient faults. Transient faults include the momentary loss of ne...

Validating User Input in Xamarin.Forms IV

4 minute read

Previously I discussed how validation can be automatically triggered when properties changes, or manually triggered to validate all properties. In this blog ...

Validating User Input in Xamarin.Forms III

3 minute read

Previously I discussed how validation rules are specified by adding data annotation attributes, that derive from the ValidationAttribute class, to properties...

Validating User Input in Xamarin.Forms II

2 minute read

Previously I introduced a high-level overview of an approach to validating user input in Xamarin.Forms. This approach involves specifying validation rules on...

Validating User Input in Xamarin.Forms

1 minute read

Any mobile app that accepts user input should ensure that the input is valid. This could involve, for example, checking that input contains only characters i...

Xamarin.Forms Behaviors: RotateAction

3 minute read

Previously, I demonstrated using the EventHandlerBehavior and ScaleAction classes to run a scaling animation when an event occurs. The Behaviors Library for ...

Xamarin.Forms Behaviors: ScaleAction

3 minute read

Previously, I demonstrated using the EventHandlerBehavior and TranslateAction classes to run a translation animation when an event occurs. The Behaviors Libr...

Xamarin.Forms Behaviors: TranslateAction

3 minute read

Previously, I demonstrated using the EventHandlerBehavior and FadeAction classes to run a fade animation when an event occurs. The Behaviors Library for Xama...

Xamarin.Forms Behaviors: FadeAction

2 minute read

Previously, I mentioned that I’d added a number of new actions to the Behaviors Library for Xamarin.Forms, to support animations. The library has the notion ...

Xamarin.Forms Behaviors: New Actions

less than 1 minute read

My Behaviors Library for Xamarin.Forms is a PCL I’ve created that can be consumed by Xamarin.Forms applications, and can be downloaded from GitHub and NuGet....

Xamarin.Forms Behaviors Library: What’s next?

less than 1 minute read

The Behaviors Library for Xamarin.Forms seems to have been well received, so I intend enhancing it as time allows. This includes: Ensuring that behaviors ca...

Behaviours Library for Xamarin.Forms

2 minute read

Back in January I wrote a series of blog posts for the Xamarin blog. This included a post on Turning Events into Commands with Behaviors. As part of that blo...

Prism for Xamarin.Forms 6.2

2 minute read

In early December, Brian Lagunas announced a pre-release of Prism for Xamarin.Forms 6.2.0. Over Christmas I checked it out and here’s what I found out. The b...

Revisiting Prism for Xamarin.Forms

2 minute read

Previously I wrote about how to create a flexible and maintainable Xamarin.Forms app with Prism. In the last month Prism for Xamarin.Forms has undergone some...

Making a PUT request using PHP and cURL

2 minute read

I recently had to write some PHP to PUT some JSON data to a RESTful web API. My final solution involved reading numerous blog posts to piece together exactly...

QR code scanning in a Windows Phone app

2 minute read

A recent Windows Phone app that I developed had a requirement to include QR code scanning, and to take an action based on the data contained in the QR code. ...

Uploading content into Azure Media Services

2 minute read

Previously I’ve introduced the Content Management System (CMS) that’s used to store video details for the video on-demand service, along with details of vide...

Connecting to Azure Media Services

1 minute read

Before you can start programming against Azure Media Services you need to create a Media Services account in a new or existing Azure subscription. For more i...

Azure Media Services Overview

6 minute read

Previously I’ve mentioned that I’ve worked on the recently released Building an On-Demand Video Service with Microsoft Azure Media Services guide, created by...

Advanced Developers Conference 2014

less than 1 minute read

Yesterday I spoke at Advanced Developers Conference 2014 in Munich about Building a patterned Windows Store app that uses AMP. The slides from the talk can b...

NDC Oslo 2014

less than 1 minute read

NDC Is Norway’s largest conference dedicated to .NET and Agile development, and is backed by Microsoft. It attracts speakers and participants from all around...

DevWeek 2014

less than 1 minute read

DevWeek is the UK’s leading conference for Software Developers, DBAs, and IT architects, and is held in London each year. In 2014 it’s being held at Central ...

Improving code quality by using NDepend v5

1 minute read

Previously I’ve written about NDepend, a static analysis tool design to improve code quality by using code metrics and enforcing a series of rules. I was par...

Using Blend behaviours in a Windows Store App

3 minute read

Previously I’ve demonstrated a sample PhotoViewer app that displays photo thumbnails on the MainPage, and that displays a selected photo on the PhotoPage. Th...

DareDevs user group talk

less than 1 minute read

Last night I spoke at the DareDevs user group about Building Windows Store apps using Prism for the Windows Runtime. The slides from the talk can be found he...

Improving code quality by using NDepend

2 minute read

Over the past few years I’ve been using many of the tools included with Visual Studio to analyse my code. This has included running code metrics, examining t...

Creating a Flyout in C++/CX

4 minute read

Previously I’ve blogged about creating a Flyout using Prism for the Windows Runtime. I thought it would be useful to have a similar Flyout control available ...

Prism for the Windows Runtime Templates Updated

less than 1 minute read

I’ve updated the Prism for the Windows Runtime templates on the Visual Studio gallery. v1.2 of the templates introduce support for Visual Studio 2013 Preview...

Prism Presentations at TechEd Europe

less than 1 minute read

Brian Noyes has delivered a presentation at TechEd Europe on using Prism for the Windows Runtime to build Windows Store business apps. He’s also delivered an...

Prism for the Windows Runtime Templates Updated

less than 1 minute read

I’ve updated the Prism for the Windows Runtime templates on the Visual Studio gallery. v1.1 of the templates introduce: Support for any edition of Visual St...

Master Navigation in Windows Store Apps

less than 1 minute read

Brian Noyes recently delivered a session at TechEd North America on mastering navigation in Windows Store apps. The video of the session is now online, and i...

Using Unity in a Windows Store app

less than 1 minute read

The AdventureWorks Shopper reference implementation, produced as part of the Prism for the Windows Runtime project, uses the Unity dependency injection conta...

Prism for the Windows Runtime Course

1 minute read

Do you want to learn how to build Windows Store apps using Prism for the Windows Runtime, but don’t want to read all the reference documentation? If so then ...

Prism for the Windows Runtime Templates

less than 1 minute read

In order to make consuming Prism for the Windows Runtime easier I’ve created a set of Visual Studio project and item templates. These templates can be downlo...

Announcing Prism for the Windows Runtime

1 minute read

Many of you will be familiar with Prism, a patterns & practices release that helps you to design and build composite applications. Since last year I've b...

Prism for the Windows Runtime Video

less than 1 minute read

A video has appeared on the Visual Studio Toolbox site where two members of the Prism team discuss and demo Prism for the Windows Runtime. Prism for the Win...

Prism for the Windows Runtime

1 minute read

As I’ve previously mentioned, I’ve been busy recently working on another project with the patterns & practices team at Microsoft. The project provides gu...

Silence

less than 1 minute read

It’s been a few months since I last blogged. That’s because I’ve been busy working on another project with the patterns & practices team at Microsoft. No...

Hilo C++ now available in 11 additional languages

less than 1 minute read

Hilo C++ has been localized into 11 different languages. Including the American English original, that means it’s available in 12 languages. Here’s the list:...

Performing interop between XAML and DirectX

1 minute read

If you’re developing a Windows Store app using C++ and XAML and you want to use DirectX to improve performance or to reuse the assets in your app more effect...

Hilo JavaScript available as an e-book

less than 1 minute read

The Hilo JavaScript end-to-end photo sample provides guidance to JavaScript developers who want to create a Windows 8 app using HTML, CSS, JavaScript, the Wi...

12 days of geekmas

less than 1 minute read

MSDN UK have launched their 12 days of Geekmas competition. It’ll unsurprisingly be running for 12 days, will have 278 prizes and a challenge each day. Check...

11 reasons to read the Hilo Javascript guidance

less than 1 minute read

11 reasons to read Developing an end-to-end Windows Store app using JavaScript: Hilo: It provides a practical example you can use to kickstart your Windows ...

Hilo available as an e-book

less than 1 minute read

The Hilo end-to-end photo sample provides guidance to C++ developers that want to create a Windows 8 app using modern C++, XAML, the Windows Runtime, and rec...

Announcing Hilo JavaScript

less than 1 minute read

Hilo is a Windows Store app I helped patterns & practices to develop earlier in the year. The app, originally developed using C++ and XAML, is an end-to-...

Creating an attached behaviour in a C++/CX app

5 minute read

Previously I’ve developed a sample photo viewing app to show how to implement a Windows Store app in C++/CX. The app uses MVVM as an architectural pattern in...

Unit testing a C++/CX app

3 minute read

There are many ways that a Windows Store app should be tested, including: Unit testing Integration testing UX testing Security testing Localization test...

Thread context in C++/CX apps

3 minute read

When developing Hilo we discovered that there are special context rules for task continuations that wrap async objects, or that use the create_async function...

Announcing Hilo

less than 1 minute read

Hilo is a Windows Store app I helped patterns & practices to develop earlier in the year. The app, developed using C++ and XAML, is an end-to-end app tha...

Suspend/resume/activation in a C++/CX app

4 minute read

Previously I extended the sample photo viewing app so that the user can covert a colour photo to greyscale, on the PhotoView page. This used MVVM and command...

MVVM and commands in a C++/CX app

4 minute read

Previously I demonstrated how to implement the MVVM pattern in C++/CX, through a small sample app that allows the user to view the photos in their Pictures l...

Navigating between pages in a C++/CX app

4 minute read

Previously I’ve developed a small photo viewing sample app to show how to implement a Windows Store app that supports design-time data, and uses the MVVM and...

Range-based for loops in a C++/CX app

less than 1 minute read

One of the new developments introduced in C++11 are range-based for loops. Range-based for loops are an extension of the for keyword, and provide an efficien...

Displaying design-time data in a C++/CX app

3 minute read

Previously I’ve written about detecting design mode in Blend, specifically in a WinJS app. This is sometimes necessary if you want to enable the designer-dev...

Detecting Design Mode in Blend

1 minute read

The project I’m currently working on is an app in WinJS. One of the issues we faced is displaying design time data in Blend, in order to enable the designer-...

How to: Build Testable Windows Phone Applications

less than 1 minute read

An earlier post outlined the Building Testable Windows Phone Applications guidance I’d developed with Patterns and Practices. At the time of release of this ...

Building Testable Windows Phone Applications

less than 1 minute read

Last year I worked with Patterns and Practices to develop a number of pieces of guidance concerning Windows Phone development. One of the items was Building ...

Developing Metro Apps using C++/CX

1 minute read

For most of the year I’ve been developing a Windows 8 Metro app, in C++/CX, with the Patterns and Practices team. As we near the release of the app I thought...

The Repository Pattern in C++/CX

4 minute read

In a previous blog post I demonstrated how to implement the MVVM pattern in C++/CX, by way of a small sample app that allows the user to view the photos in t...

MVVM in C++/CX

4 minute read

(cross-posted from the MSDN UK Team Blog) Previously I’ve written about the power of C++/CX for developing Windows Store applications. C++ is the language fo...