Articles

Welcome to my little corner of the internet, where I share code, ideas, and the occasional tech experiment. Find what you're looking for quickly by using the search bar below. You know how the internet works.

Discovering StyleClass in .NET MAUI

December 2024

Discovering StyleClass in .NET MAUI

As developers, we've all faced the tedious task of styling user interfaces in .NET MAUI. For many, the and helpers are wellknown goto options for applying styles. But did you know there's a hidden g...

Goodbye Xamarin!

May 2024

Goodbye Xamarin!

Xamarin emerged as a gamechanger in the world of mobile app development, offering the promise of writing code once and deploying it everywhere. To me, that was a premise that instantly clicked. The qu...

DebugRainbows for .NET MAUI now available!

March 2024

DebugRainbows for .NET MAUI now available!

In essence it's a fairly simple NuGet package. Maybe one you didn't even know you needed. But if you've ever found yourself wrestling with XAML layouts, scratching your head over elusive UI elements, ...

Building a .NET MAUI Android pipeline in GitHub Actions

November 2023

Building a .NET MAUI Android pipeline in GitHub Actions

In this last installment we're going to take a look at the Android specific pipeline getting your app all the way to the Google Play Store. In of this series I set up a parent workflow that passes pa...

Building a .NET MAUI iOS pipeline in GitHub Actions

October 2023

Building a .NET MAUI iOS pipeline in GitHub Actions

This time around we're going to take a look at the iOS specific pipeline, which gets your app binary all the way to the Apple AppStore for testing. In I set up a parent workflow that passes a bunch o...

Building a .NET MAUI CD pipeline in GitHub Actions

September 2023

Building a .NET MAUI CD pipeline in GitHub Actions

To do so, we'll be using nested workflows for both of these different platforms, which are called from a root workflow. This post will cover the overarching workflow while next installments will cover...

More MAUI bits!

February 2022

More MAUI bits!

Moving resources to a single project One of the common pet peeves with Xamarin.Forms is the need to copy a lot of similar resources across multiple projects. If, for example, you have a specific imag...

Adopting the .NET Generic Host

January 2022

Adopting the .NET Generic Host

We commonly refer to the object encapsulating all of this as the host, and it’s typically configured through the method in a class. Alternatively, a class can also provide an entry point to configu...

The new handlers infrastructure in .NET MAUI

January 2022

The new handlers infrastructure in .NET MAUI

As a developer, you can create a custom renderer that allows you to target a specific type of control on a specific platform and override its builtin behavior. For example, if you want to remove the u...

A quick introduction to .NET MAUI

November 2021

A quick introduction to .NET MAUI

Have you ever done any mobile development in the Microsoft ecosystem? Then you might’ve heard about Xamarin. The technique, at this point synonymous with the company that originally built it, goes bac...

Adaptive Icons in Android

June 2021

Adaptive Icons in Android

Recently I've picked up a few little projects again after having been on a hiatus of sorts. I noticed I hadn't blogged for a while either, so it's time to kill a few birds with this one little stone i...

Handling the new UIDatePicker in Xamarin.Forms

January 2021

Handling the new UIDatePicker in Xamarin.Forms

In iOS14, Apple introduced us to a new UIDatePicker. However, you may want to revert back to the old wheellike style. How can we do it? Let's check it out! Today we'll be taking a look at the . If you...

Styling the Android bottom tabs animation behavior and font

January 2021

Styling the Android bottom tabs animation behavior and font

I recently used the bottom tabs navigation for Android, which comes with a fancy animation scaling the selected item. But what if you don't want that? Making your apps look similar on all platforms is...

Going dark; easily implementing dark mode in your Xamarin.Forms app

December 2020

Going dark; easily implementing dark mode in your Xamarin.Forms app

Dark mode; it's all the rage in apps these days. Its main goal seems to be saving our eyes from burning out when reading things in a dark environment, but is that true? The theory behind it When bro...

Improving the touch targets in your apps using Xamarin.Forms

November 2020

Improving the touch targets in your apps using Xamarin.Forms

We can interact with our phones in different ways, but the most commonly used one is through touch. But what makes for good touch targets and how can we improve upon what we get out of the box in Xama...

How to provide negative numeric input on Xamarin.Forms iOS

October 2020

How to provide negative numeric input on Xamarin.Forms iOS

When creating a text input in Xamarin.Forms you might want to show a numeric keyboard. However, when setting it up and running your app on iOS you can't put in negative numbers. What's up with that? ...

PancakeView goes v2.0! Here's what's new.

July 2020

PancakeView goes v2.0! Here's what's new.

It's been in the making for quite a while and the road to getting to the end result has been quite a struggle. However, it's finally time to release version 2.0 of PancakeView! What's new? So what d...

Revisiting the base page concept using ContentView - Part 1

June 2020

Revisiting the base page concept using ContentView - Part 1

A while ago about using the concept of a base page in Xamarin.Forms. Since people are still looking at options to swap out native controls for custom implementations due to complex visual requirement...

Live-streaming on a budget... sort of... maybe...

May 2020

Live-streaming on a budget... sort of... maybe...

Why would you want to be livestreaming? When I started this year I set myself a goal to try new things and get out of my comfort zone of blogging. After all, writing blogs can be a fairly solitary tas...

Playing with animation in Xamarin.Forms

April 2020

Playing with animation in Xamarin.Forms

Movement breathes life into your app. But getting started with animation in Xamarin.Forms might not be the simplest thing. This post explains how to get started with creating some cool animations you ...

dotNETConf - First speaking gig: A retrospective

April 2020

dotNETConf - First speaking gig: A retrospective

I had the privilege of being asked to speak at the latest dotNETConf, which completely focussed on Xamarin. My very first speaking gig, but how did I end up there and what was it like? In this post, I...

Generating your own custom icon font made easy

March 2020

Generating your own custom icon font made easy

Using an icon font in your app for a while now, but what if the existing ones aren't to your liking? It's pretty easy to make your own if you have vector art available for them. Let's take a peek! ...

Playing around with neumorphism in Xamarin.Forms

March 2020

Playing around with neumorphism in Xamarin.Forms

Neumorphism (or neuomorphism) might be a word you've never heard before. If that's the case, then this is the blog post for you! We will take a peek at what it means and how we might be able to achiev...

Exploring grid overlays in DebugRainbows

February 2020

Exploring grid overlays in DebugRainbows

I recently released a new version of my DebugRainbows plugin, which adds grid overlays to the set of debugging tools it offers. Let's take a closer look at what they are and how to use them! How did...

Implementing MSAL authentication in Xamarin.Forms

February 2020

Implementing MSAL authentication in Xamarin.Forms

Authenticating users in our app is a common challenge that mobile developers need to tackle. Leveraging existing authentication systems like those of social networks or big companies like Microsoft's ...

Fixing a partial button ripple effect on Samsung devices

January 2020

Fixing a partial button ripple effect on Samsung devices

While building our latest Xamarin app we recently ran into an issue where a button on Android would only have a partial ripple effect. This post explores the workaround we ended up implementing. W...

Using Firebase Analytics in your Xamarin.Forms app

January 2020

Using Firebase Analytics in your Xamarin.Forms app

We all know and love Microsoft's offering when it comes to analytics and crash reporting for our mobile apps. But what if you're one of those people that are interested in even more indepth usage sta...

Using compiled bindings in Xamarin.Forms

December 2019

Using compiled bindings in Xamarin.Forms

As a Xamarin developer, you have surely come across a scenario where you've mistyped a binding and didn't figure it out until hours later. Let's see if we can improve that with XAML compilation and co...

Snppts Challenge Wrap-up

December 2019

Snppts Challenge Wrap-up

A while ago we started , asking you to submit your goodlooking UIs to the platform and promising swag in the process. Now that the deadline has passed, let’s take a quick look back on this challenge! ...

Introducing the Snppts Community Challenge!

November 2019

Introducing the Snppts Community Challenge!

As you probably know I'm one of the cofounders of together with my bestie Gerald Versluis. This month of November is all about getting more content into the platform and what better way to do it than...

Getting started with creating your own NuGet package

September 2019

Getting started with creating your own NuGet package

Have you always wanted to create your own NuGet package but not quite sure where to start? Let's take a peek at how I built my and how I distribute them using Azure DevOps! Since my primary focus is...

Breaking the Pancake mould

August 2019

Breaking the Pancake mould

You may have used in your Xamarin.Forms adventures in the past. Ever dreamed of breaking out of that rectangular/circular mould? Well, now you can with the latest update! Introducing 1.1.8 A whil...

Xamarin.Forms 4.2.0 is out!

August 2019

Xamarin.Forms 4.2.0 is out!

A new version of Xamarin.Forms has hit NuGet feeds around the globe. Let's take a quick peek at what has changed under the hood! Improvements to Shell Shell has taken the Xamarin.Forms world by sto...

Quick tip: Enabling DebugRainbows for an entire app

July 2019

Quick tip: Enabling DebugRainbows for an entire app

If you're like me and mess around with UI in Xamarin.Forms a lot you might've come across the problem of a control or view not displaying as you'd expect it to. This little package may help you in fin...

Create a kickass banking app using a BasePage in Xamarin

July 2019

Create a kickass banking app using a BasePage in Xamarin

Have you ever had a scenario where using the builtin navigation bar and other UI elements simply didn't cut it? Perhaps it's been suggested to you by a designer that the default elements are just ugly...

Introducing Xamarin UI July

June 2019

Introducing Xamarin UI July

Fellow community member has recently held a Xamarin Month initiative. During the entire month of February, someone from the community / Xamarin team posted a blog about Xamarinrelated topics. I would...

A quick explainer: recent NuGet packages

May 2019

A quick explainer: recent NuGet packages

Recently I've been pushing out a few NuGet packages with components that I use in my every day Xamarin work. This blog post is meant to give you a little overview of these packages and how they can he...

Travel broadens the mind...

April 2019

Travel broadens the mind...

They say that seeing new places can work wonders for your creativity. I've recently gone on a trip to Seattle, visiting the Microsoft MVP Summit. With half an hour to kill in between sessions, I start...

Creating an encyclopedia page in Xamarin.Forms

February 2019

Creating an encyclopedia page in Xamarin.Forms

If you frequent this blog you probably know I like creating coollooking stuff in Xamarin.Forms. Since that's what I like doing, why would I stop? So here's another one! Finding inspiration for one of...

Xamarin.Forms in Space!

November 2018

Xamarin.Forms in Space!

As you may have seen from reading other content on this blog I dabble in the world of cryptocurrency. To help me on my position sizing I figured I'd create a little calculator app. Obviously, if you k...

Creating a parallax carousel in Xamarin.Forms

October 2018

Creating a parallax carousel in Xamarin.Forms

A while ago I wrote on creating a simple carousel for your Xamarin.Forms app. That post also showed off a cool parallax effect on a carousel. I've always wanted to come back to that effect, let's get...

Y u no blog?!

October 2018

Y u no blog?!

Wow. This has been a while. A long while. Five months to be precise. But don't worry, I will blog more regularly from now on! However, I may need to explain where I've been all this time... Busy sav...

Performing a binding redirect in Azure Functions

April 2018

Performing a binding redirect in Azure Functions

I've blogged about Azure Functions before and have speaken highly of it as well. While diving deeper into them there are definitely some drawbacks to be found though. How about doing a binding redirec...

Creating a simple but good-looking app tutorial

March 2018

Creating a simple but good-looking app tutorial

A lot of apps currently in stores have some sort of walkthrough or tutorial screen that walks you through the basic functionality of an app. Let's see what kind of things go into making one of those s...

Wireless Deployment of Xamarin apps to your iOS devices

February 2018

Wireless Deployment of Xamarin apps to your iOS devices

If you're anything like me you probably have an iPhone cable near you at all times when working on a Xamarin app. It will probably look like it has seen better days but it still works doesn't it? Bec...

A farewell to our beloved Xamarin Insights?

January 2018

A farewell to our beloved Xamarin Insights?

In October of 2014 Xamarin announced one of their new flagship products: Xamarin Insights, a realtime monitoring system that enables you to identify, report, and track issues that are impacting users....

5 cool things announced at Microsoft Connect 2017

November 2017

5 cool things announced at Microsoft Connect 2017

Microsoft Connect 2017 has come and gone and a lot of new awesome stuff was announced across the board. I'm partial to mobile development using Xamarin and the whole Devops process using VSTS, so here...

Building a cryptocurrency trading bot using Azure – Part 2

November 2017

Building a cryptocurrency trading bot using Azure – Part 2

In we built a trading bot using an Azure Function. In this 2nd part we will create a simple mobile app to keep track of what our bot is doing. Since it's still a robot we also want to control it a bi...

Building a cryptocurrency trading bot using Azure - Part 1

November 2017

Building a cryptocurrency trading bot using Azure - Part 1

Want to get rich quickly? Want to earn money while you sleep? Even though it sounds amazing these are the kind of things you can achieve simply by building a cryptocurrency trading bot which you can h...

Deploying Azure Functions using VSTS: a simple solution

October 2017

Deploying Azure Functions using VSTS: a simple solution

I recently started exploring the wonderful world of Azure Functions and while they are a great tool to move towards a cloudbased architecture I started to wonder... How should I be deploying Azure Fun...

Creating a good-looking Xamarin Forms UI: Spotify

September 2017

Creating a good-looking Xamarin Forms UI: Spotify

It seems like people really like this kind of content, so I decided to keep it up for now. This is the third instalment in this series already and this time we're going to be taking a look at the Spot...

Using Effects in Xamarin Forms

September 2017

Using Effects in Xamarin Forms

Developers can use Effects in Xamarin Forms to customize native controls and add some styling of their own. But why not simply use a custom renderer to achieve the same thing? While that is certainly ...

Creating a good-looking Xamarin Forms UI: Runkeeper

September 2017

Creating a good-looking Xamarin Forms UI: Runkeeper

My previous post about creating a fancy Xamarin Forms UI was a whole lot of fun to do and I got some awesome feedback so it's time for another. Since running is one of my hobbies I see a whole lot of ...

Xamarin.Forms ListView grouping and styling the jump list

August 2017

Xamarin.Forms ListView grouping and styling the jump list

When creating a Xamarin Forms application there's almost no getting around using a component at some point. When you have a lot of items to display you might even consider adding grouping. But how d...

Creating a good-looking Xamarin.Forms UI: Twitter

August 2017

Creating a good-looking Xamarin.Forms UI: Twitter

I love tinkering with UI. There, I said it. Even though I'm a developer first and foremost I cannot help the fact that any mobile app UI I create has to look fancy. However most of my development work...

Checking out Mobile Center

August 2017

Checking out Mobile Center

I've talked about your mobile apps using VSTS before. But there's a simpler alternative in the works at Microsoft; Mobile Center. So let's have a quick look at it! Getting started with Mobile Cente...

Xamarin and DevOps: Deploying to HockeyApp

July 2017

Xamarin and DevOps: Deploying to HockeyApp

In the previous articles in this series we set up our CI builds and versioned our app. Now we need to be talking about distribution. This is a vital part of any DevOps pipeline. In this blogpost we wi...

Crash Reporting and Analytics for Xamarin

July 2017

Crash Reporting and Analytics for Xamarin

Knowing what your app is doing after you've released it into the wild is very important. When it comes to Xamarin there are several products that offer functionality such as crash reporting and analyt...

Embedding a YouTube feed in Xamarin.Forms

June 2017

Embedding a YouTube feed in Xamarin.Forms

When building an app for a customer that has an active YouTube channel you might get the requirement to embed their YouTube channel into the app. This is actually simpler then you might think. Since Y...

Xamarin and DevOps: Versioning your app

June 2017

Xamarin and DevOps: Versioning your app

This is the 4th post in the Xamarin and DevOps series. The topic at hand is versioning of your mobile app. Having a standardised version number helps you track your releases and issues that might occu...

Xamarin and DevOps: Setting up your iOS CI

May 2017

Xamarin and DevOps: Setting up your iOS CI

Congratulations, you've made it to the third post in this series on getting started with DevOps in a Xamarin project. Last time we created a Continuous Integration pipeline for Android so this time it...

Migrate your TFVC repository to Git

May 2017

Migrate your TFVC repository to Git

When using Visual Studio Team Services (VSTS) you have the choice to create a repository using Team Foundation Version Control (TFVC) or Git. Up until recently there wasn't really a simple option to m...

Xamarin and DevOps: Setting up your Android CI

May 2017

Xamarin and DevOps: Setting up your Android CI

This is the second post in a series on getting started with DevOps in a Xamarin project. In this post we will be looking at automating the build process which gives you the advantages of improving you...

Xamarin and DevOps: The build agent

May 2017

Xamarin and DevOps: The build agent

This is the first post in a series on getting started with DevOps in a Xamarin project. One of the cornerstones of DevOps is automating a lot of tedious work such as builds, releases and testing. With...

Adding some Swagger to your Web APIs

March 2017

Adding some Swagger to your Web APIs

In a Web API project I recently started working on I found that testing it using a tool like Postman works pretty well, but having to type out all your test requests can become quite tedious. That's a...

Travelog: Swims with Mantas

November 2016

Travelog: Swims with Mantas

Een snorkeltripje naar het dichtbij gelegen eiland Nusa Lembongan, dat leek ons wel wat. Althans, na de vrouw ervan overtuigd te hebben dat kwallen en haaien hier waarschijnlijk niet zitten. Longen ...

Travelog: Rijst - How do they do it?

November 2016

Travelog: Rijst - How do they do it?

Rijst. We eten het allemaal wel eens, maar hoe gaat het van een zompig veld naar een mooie rijstkorrel? How do they do it? Gebrek aan toeristen? Maar eerst gaan we terug naar het begin van de dag t...

Travelog: Iemand een waterfiets over?

November 2016

Travelog: Iemand een waterfiets over?

Op Bali bevinden zich een aantal vulkanen en het landschap is er erg bergachtig. Het leek ons een goed plan om boven op een berg gedropt te worden en met de fiets door de binnenlanden af te dalen. P...

Travelog: Kattenanuskoffie!

November 2016

Travelog: Kattenanuskoffie!

Op het moment van schrijven is het alweer ruim vrijdag, maar onze donderdag had ook nog wel wat moois te bieden. Laten we eens kijken wat er dit keer gebeurd is, shall we? Iemand koffie? Een hele d...

Travelog: Een dag in Ubud

November 2016

Travelog: Een dag in Ubud

Ruim een jaar geleden tikte ik een serie blogs over ons reisje naar Thailand en nu is het zover; deel 1 uit een nieuwe serie met als onderwerp Bali! Dit tropische Indonesische eiland is ons thuis voo...

Packaging your legacy dlls with NuGet

August 2016

Packaging your legacy dlls with NuGet

When developing applications you inevitably encounter a piece of legacy code. In our case this code was put into DLL files that were being used by quite a lot projects. However, when you want to move ...

Xamarin.Forms and the Xamarin Test Recorder

June 2016

Xamarin.Forms and the Xamarin Test Recorder

One of the recent additions to the Xamarin family of products is the Xamarin Test Recorder. What this nifty little tool does is allow you to record your UI tests while you're navigating through your a...

Out now: Snppts for Xamarin Forms!

April 2016

Out now: Snppts for Xamarin Forms!

After a few months of development we are proud to announce a new service for everyone interested in Xamarin and Xamarin Forms specifically!  Not every company has a design department at their disposa...

So you want to be Xamarin Certified?

April 2016

So you want to be Xamarin Certified?

Last Wednesday I completed my Xamarin University exam which means I can call myself a Xamarin Mobile Certified Developer for the next year. I had planned on writing about the experience but some other...

Using custom fonts in Xamarin Forms

February 2016

Using custom fonts in Xamarin Forms

Xamarin Forms is a great platform for quickly making multiplatform mobile apps. Xamarin markets it as a platform that isn't quite suited for creating complex UIs but that doesn't necessarily have to b...

Getting route data in ASP.NET Razor

January 2016

Getting route data in ASP.NET Razor

When developing a web app using ASP.NET MVC you sometimes come across to make decisions based on the current page. A good example of this is when you're using Bootstrap and you want to add "active" cl...

Travelog: Rustig aan...

October 2015

Travelog: Rustig aan...

Je hebt van die dagen op vakantie dat je het rustig aan doet. Relatief gezien was het vandaag zo'n dag. Vrij vroeg worden we wakker omdat we op het dak regen horen plenzen. Aangezien we vandaag naar e...

Travelog: Lost at sea...

October 2015

Travelog: Lost at sea...

Om tot die situatie te komen moeten we terug naar vanmorgen rond een uur of kwart voor 6. Als je naar Koh Phi Phi wil moet je namelijk vroeg opstaan. En dat op vakantie! Wanneer we bij de ferry aankom...

Travelog: Oh my Buddha...

October 2015

Travelog: Oh my Buddha...

Daar zitten we dan na een binnenlandse vlucht van Chiang Mai (het noorden) naar Phuket (het zuiden) van een goeie twee uur. Klaar om aan het strandgedeelte van de vakantie te beginnen. Helaas zonder o...

Travelog: Een hutje in de jungle...

October 2015

Travelog: Een hutje in de jungle...

Daar lig je dan in een bamboehutje ergens hoog op een berg in Thailand waar krekels de hele avond lang hun getjirp niet stil kunnen houden en het aantal gevonden WiFi netwerken welgeteld 0 is. Om tot...

Travelog: Tempels en spul...

October 2015

Travelog: Tempels en spul...

Rustdag voordat we morgen aan onze jungle trekking beginnen. Zo kun je vandaag wel beschrijven. Wat marktjes aflopen (allemaal dezelfde crap), wat fietsen en wat tempels bezoeken in Chiang Mai. Noemen...

Travelog: Olifantuh!

October 2015

Travelog: Olifantuh!

Het weer in Chiang Mai is al wat meer opgeklaard wanneer we deze morgen wakker worden om ons klaar te maken voor een dagje olifanten verzorgen in een opvangpark. Er is zelfs een lekker warm zonnetje t...

Travelog: Kedeng kedeng...

October 2015

Travelog: Kedeng kedeng...

Het was een rustig dagje in Bangkok gisteren. Uitslapen, relaxed alles inpakken en uiteindelijk naar het station zien te komen voor een zo goedkoop mogelijke prijs want afdingen is hier gewoonte. Zelf...

Travelog: Hollanders moeten fietsen...

October 2015

Travelog: Hollanders moeten fietsen...

Wil je in Bangkok eens wat anders zien moet je een fietstoer pakken is ons gezegd. Die raad hebben we dan ook opgevolgd door om 7 uur in de morgen klaar te staan voor een 5 uur durende tour met een fi...

Travelog: En toen was daar Bangkok...

October 2015

Travelog: En toen was daar Bangkok...

"Travel broadens the mind" zeggen ze wel eens. Alhoewel, het feit dat je eerst een uur of 11 je eigen vierkante meter of minder aan vliegtuig tot je beschikking hebt anders doet vermoeden. Gelukkig z...

Travelog: Temple run!

October 2015

Travelog: Temple run!

Een dag vol met tempels stond op het programma. Een ware ontdekkingstocht door Bangkok waar het werkelijk barst van die dingen. Hoewel weersvoorspellingen tot nu toe altijd gezegd hebben dat het regen...

Travelog - Bijna...

October 2015

Travelog - Bijna...

Nog een paar dagen en het is zover. Dan beginnen we voor het eerst in 2,5 jaar weer aan het fenomeen vakantie. En nog verdiend ook nog. Waar het de vorige keer in ZuidAfrika al indrukwekkend was, gaan...

NuG(g)et: MiniProfiler

March 2015

NuG(g)et: MiniProfiler

When using Entity Framework (or any other ORM for that matter) you always have to be aware of the queries you send to the database. When using a feature like lazy loading it's fairly easy to create an...

Uninstalling a stubborn Windows 8.1 app

March 2015

Uninstalling a stubborn Windows 8.1 app

Today we came across the issue that one of our customers' IT specialists received a strange message while trying to install a new build of one of our apps. He was installing the app on a Windows 8.1 ...

Improving your Visual Studio comments

March 2015

Improving your Visual Studio comments

In my adventures in the Xamarin mobile world I particularly liked the fact how their Xamarin Studio IDE visually handles TODO comments. Basically, all it does is make the TODO part bold. I know that i...

Entity Framework performance tips

March 2015

Entity Framework performance tips

To honor the name of this blog I will also be writing posts about software development. The software developer that hasn't turned to Google for some advice once in a while hasn't been born yet. As a s...