Mads on C# 8 Design

Microsoft’s Mads Torgersen– Lead Designer of C# — talks about creating programming languages and what’s new in C# 8. Do not miss this one!

Overview of C# 8.0: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8

The wonderful bridge toll tutorial on pattern matching: https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/pattern-matching

Brand new blog post by Mads on adopting nullable reference types: https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/

The “9.0 candidate” milestone on csharplang – the long list of potential features for C# 9.0. Clearly we won’t do all of them!: https://github.com/dotnet/csharplang/issues?q=is%3Aopen+is%3Aissue+milestone%3A%229.0+candidate%22

Posted in C# 8 | Tagged , | Comments Off on Mads on C# 8 Design

C# 8 Nullable Types

I recently released a two-part course on C# 8. The first part is for beginning programmers. The second part is for intermediate to advanced programmers.

This post is the first in a series that focuses on the new features in C# 8.

I recently had Mads Torgenson on my Podcast. Mads is the lead designer of C#. I asked him what the most important new feature of C# is, and he replied (somewhat to my surprise) Nullable Types.

Every one of us has crashed and burned on the dreaded “object reference” exception. Null Reference types are designed to avoid these by expressing which objects might be null and having the editor issue a warning if you create an instance that might be null and try to dereference it.

Let’s look at an example…

Continue reading
Posted in Essentials | Tagged , , | 1 Comment

Jon Galloway!

Microsoft’s Jon Galloway talks about the .NET Foundation and about .NET Core. As always with him, an amazing conversation.

.Net Foundation

Posted in .NET Core | Tagged | Comments Off on Jon Galloway!

C#8 De Principiante a Experto Parte 1

https://www.udemy.com/course/c8-de-principiante-a-experto-parte-1/?referralCode=B42A8109B7D1EDEA89F6

Posted in Essentials | Comments Off on C#8 De Principiante a Experto Parte 1

C# 8 From Novice To Expert Part 2: Intermediate & Advanced

https://www.udemy.com/course/c-sharp-8-from-novice-to-expert-part-2/?referralCode=809A63CDCB8F76856AEA

I look forward to your feedback. Please, tell a friend!

Only $39.99 with this coupon: DISCOUNTCSHARP. Expires 11/15/2019

Posted in C#, C# 8 | Tagged , , | Comments Off on C# 8 From Novice To Expert Part 2: Intermediate & Advanced

C# 8 From Novice to Expert – Part 1 Released to Udemy

Part 1 assumes no prior programming experience.

Click here

Posted in Essentials | Tagged , , , , | Comments Off on C# 8 From Novice to Expert – Part 1 Released to Udemy

Xamarin.Forms – UI Testing & Customer Engagement

Microsoft’s Sweeky Satpathy. Sweeky is a Senior Software Engineer in MOBCat the Customer Engagement Team, which is part of DevDiv product engineering team responsible for all of Microsoft’s developer focused products and services and represents the voice of the developer to the rest of Microsoft. She works closely with the Xamarin team.

Posted in Essentials, Xamarin | Tagged , | Comments Off on Xamarin.Forms – UI Testing & Customer Engagement

Advanced Xamarin.Forms Part 1 – The API

Spanish Version

In this series, we will explore a number of topics on Advanced Xamarin.Forms that have arisen in our work for clients, or at my job as Principal Mobile Developer for IFS Core.

Before we can start, however, we need to build an API that we can program against. Ideally, this API will support all CRUD operations and will reside on Azure.

Continue reading
Posted in API, Xamarin | Tagged , | Comments Off on Advanced Xamarin.Forms Part 1 – The API

Yet Another Podcast: Xamarin.Forms Tools

Microsoft’s Maddy Leger. Program manager for all things Xamarin.Forms Tools, talks about Hot ReLoading and much more

Maddy Leger

Show links:

Posted in Essentials | Tagged | Comments Off on Yet Another Podcast: Xamarin.Forms Tools

Display A Dialog From The ViewModel

In a previous blog post I discussed the problem of being in your ViewModel yet having to display a dialog to the user. You can’t interact with the page from the ViewModel, but you don’t want the logic of your program in the code-behind.

In that previous article, I demonstrated solving that problem using an event. In this blog post, Rodrigo Juarez and I will demonstrate three alternatives:

  • Using the Messaging System
  • Using Events (though here we’ll show a somewhat different approach)
  • Using dependency/service injection

There are significant problems with the first two; the most important of which is that they are difficult or impossible to write unit tests for. The third approach, however, is clean, efficient and very testable using a Mock service.

Continue reading
Posted in Essentials, Xamarin | Tagged , , | Comments Off on Display A Dialog From The ViewModel

CodeMash Xamarin.Forms Workshop

The code for the 1/2 day workshop at CodeMash is available here.  Thanks.

Posted in Essentials | Comments Off on CodeMash Xamarin.Forms Workshop

Happy Holidays to C Programmers

Not sure where I got this, but still like it:

/*
 * find the important things in Life, the Universe, and Everything
 */

typedef short	some;		/* some things are short */
typedef some	very;		/* some things are very short */

#define A			/* The first letter of the English Alphabet */
#define LINE	2		/* 2 points define a line */

#define TRUTH	BEAUTY		/* truth is beauty */
#define BEAUTY	10		/* and beauty is a 10 */

#define bad	char		/* burnt on both sides */
#define old	char		/* the great Chicago Fire */

#define	get	strlen		/* during your life, try to get some sterling */
#define youmake	float		/* you make it, I'll drink it */


#define		yourgoals	in terms you can understand
/*
#include	"yourdreams"	/* for the future */


	/* everyone needs goals */

short	term;
double	yourpleasure();
double	yourfun;

long	Term, play(), agame;

	/* everyone needs diversions */

old *joke = "Why did the chicken cross the road?\n\tTo get to the other side!\n\t\tWocka Wocka Wocka!\n";
	

tell(joke)
bad	*joke;		/* wait- you haven't heard it yet! */
{
	short laugh;	/* please */

	laugh = get(joke);
	write(1, joke, laugh);	/* write it down- don't say it */

}

	/* most folks like music */

long play(record)
long record;
{
	very pleasant = TRUTH;		/* if you like music */

	while (record == pleasant)
		play(record--);

	return( pleasant );		/* music soothes the savage */
}


double	yourpleasure(one, way)		/* this is necessary if */
some	one;				/* is watching ,or if you have a */
long	way;				/* to go  */
{
		/* this can change one while maintaining one's identity */
	one = one * one;
	return( one );		/* after all, it should have at least doubled */
}

hold(temper)			/* good advice */
A short temper;			/* is a dangerous thing */
{
	A long	time;		/* is what you need */
	very calm;		/* is how you should be */

	calm = temper, temper;

	while (calm--)
		wait(&time);

	return(calm);		/* if possible */
}


	/* now, on to the main thing */

main(thing, mustbe)		/* to balance work, play, and goals */
some thing, mustbe;		/* important, or we wouldn't be here */
{

	long	time();		/* know C */
	very	bored;		/* the result of too few goals */

	short	hours;		/* make */
	long	yourwork;	/* which makes for */
	short	tempers;	/* which can be improved by */
	long	laughing;


	/* first, set priorities */
	yourwork = 0;
	yourfun = 1.0e+38;

	if (yourpleasure( mustbe, yourwork ))
		yourfun = yourwork;
	else
		yourfun = play( agame );

	bored = yourfun - yourwork;  	/* nothing to do? */
					/* reach out and touch someone! */

	switch ( bored ) {	/* connects all of this together */
	default:
		hours = hold(LINE); /* no way to avoid it, take a */
		break;
	}

		/* take a music break */
	while ( thing-- ) {	/* you make my heart sing */
		youmake everything;
		very groovy;
	}

		/* focus on what is important to you */
	while ( yourfun < 0 ) {
		yourpleasure( mustbe, agame);
		yourfun = play( agame );
	}

	tell(joke);

	exit( laughing );
}

Posted in Essentials | Comments Off on Happy Holidays to C Programmers