Dev-XP-Session on Platforms (Visual Studio for Mac, Xamarin).

Mikayla Hutchinson


Hello Everyone,

Hi guys, welcome to today's session. We will be having the wonderful @mhutch here with us.

Our discussion today is centered around platforms (VS Code for Mac and Xamarin) and its going to be a technical discussion.

We would start off with an introduction, tell us about you and your work. ๐Ÿ˜ƒ

Hi Everyone, I'm an engineer at Microsoft working on Visual Studio for Mac and the Xamarin Platform.

I have a slightly unusual role... I'm not on any of the individual teams, but I help to design, plan and coordinate work across all of them. Kind an program manager / engineer / architect hybrid

I was an engineer for my first 7 years in the industry. I started working on MonoDevelop for web development on Linux back in Google Summer of Code 2005, went full time in 2007, worked on Xamarin/iOS since 2009 (when it was called MonoTouch) now, I've been a PM for the past 3 years and I am back to engineering.

Awesome!! This is interesting. Thank you for intro.

Lets get down to the business of today. We have questions from some of our members.

First Question from @vnwonah

Hi, I'm a certified xamarin professional. What's the long term plan for Xamarin please? with the introduction of CSS for styling are we beginning to lean away from XAML for Forms?

There are no plans to move away from XAML! We feel that CSS support complements XAML, lots of folks are familiar with the language already and it's a really straightforward and expressive way to style your app the basic concept of XAML is very similar to HTML.
A markup language that maps to an object model but in the case of forms, that object model is native UI controls FWIW my expertise is mostly with the toolchain and developer experience, I'm less familiar with the app APIs there's pretty good article here

Question from @oludayo

I understand toolbox for Xamarin Forms Controls is coming in VS 15.8, any plan for Visual Designer or Blend for Visual Studio support ?

Nothing concrete. designers are very complicated ๐Ÿ™‚

Question from @quadriPhobs

What was your greatest challenge as a lady in tech ?

My experience in that year isn't exactly normal... I'm trans, and transitioned 2.5 years ago, and my that time I had already built up a reputation.

I've definitely noticed folks who don't know me treat me differently since I transitioned... assuming I'm not an engineer, assuming I don't know stuff, etc

I'm pretty certain it would have been a lot harder to get to where I am if I had transitioned earlier or been born female

Question from @olaoluwa

Its logical to have a lot of teams on Azure Data itself, and there is going to be a very vast operations load. What stack do Microsoft use to manage Azure Data and what type of database model do you use ?

On VSMac/Xamarin we use azure for content delivery, telemetry, and running various services, but I'm not familiar with much of the details.

Question from @olaoluwa

What type of work environment is Microsoft?* To simplify the question: Do you get to make decisions, come up with designs, etc or it's a top down work environment where you get to execute someone's else plan as a developer ?

Everyone gets input, and we're pretty agile.

Generally decisions about what to work on are driven by data from customers, which is PM's focus as a well as scoping. The details of features are usually a collaboration between dev, design and PM, as they all have different perspectives. then devs execute the design.

Sometime during execution, new challenges or ideas will come up, and we'll iterate on the spec.

Question from @herocod3r

As amazing as xamarin is, why is it so difficult for microsoft to build a true cross platform desktop framework ?

UI toolkits are hard ๐Ÿ™‚ there's a GTK#, Cocoa and WPF backends for Xamarin Forms contributed by the community, and I know one guy who's using that to build UI for his VS/VSMac extension.

There's a lot more demand for xplat mobile than xplat desktop though.

GTK is a C# wrapper to the Linux GTK+ toolkit, GTK+ itself runs on Mac and windows as well, though the experience isn't native.

Question from @JideLambo

Can you run us through your design process and how do you ensure everyone with the team follows this process ?

We try to avoid unnecessarily prescriptive processes. The important things are

1. The design needs to be supported by data from customers when possible
2. All stakeholders need to review the design before it's finalized... the earlier the better

We often read alot about using data from customers to support the design. That is, Qualitative and Quantitative data. Can you kindly elaborate on this ? Perhaps, give us a brief scenario.

Question from @herocod3r

Why not support Avalonia UI who has done most of the work ?

Avalonia is pretty awesome, but building a full UI toolkit is an enormous amount of work... it's diminishing returns.

Getting things like accessibility, RTL layout, font rendering, input methods right. stuff like that is hard

I think xamarin forms will be an interesting option when the desktop backends mature.

Also, fwiw, monodevelop runs on windows, mac and linux. we use a mixture of approaches. we have a lot of legacy GTK#... it runs everwhere but isn't quite native. even thought we did a lot of work to make it behave and look closer to native.

For frequently used UI we use MVVM with per-platform native renderers (Xamarin.Mac etc). for less used UI we use a toolkit called XWT, which is an ancestor of Xamarin Forms.

We plan to replace XWT with Forms when the desktop forms backends are more mature

Question from @QuadriPhobs

What can you say is the strength of GTK# and how open source is it ?

It's 100% open source, a native toolkit on linux that runs on mac and windows.

Downside is that it does't feel fully native on mac and windows but it's technically write once run anywhere.

Question from @somto

Difference between Portable Class Library (PCL) & Shared Projects?

PCLs target a common subset of the platform specific frameworks. that means a PCL can run on any supported framework

e.g. a PCL project will build a single dll that can run ios, android, mac windows, etc

they're great for distributing in nugets etc. there's also .net standard, which works like PCL except it's newer and had a lot more APIs

the downside to PCL is you can't do platform specific stuff. shared projects are kinda fake projects. if you reference a shared project from your ios app and your android app, the _files_ from the shared project get compiled into the android and ios apps

so, a shared project doesn't compile a dll at all

It's possible to do platform specific #if stuff with PCL/netstandard using bait-and-switch nugets or multitargeting, which produce multiple versions of the dll and select the right one for the platforms

That's how e.g. xamarin forms works

Question from @somto

How does DependencyService work in Xamarin.Forms?

It's a simple dependency injection container, uses reflection to scan for implementations

What way you can have e.g. IFoo in your shared netstandard lib, AndriodFoo : IFoo in your android code, IOSFoo : IFoo in your ios code

When you shared code requests an IFoo, the DependencyService will scan for classes that implement IFoo using reflection... on android it'll find the android one, on ios it'll find the ios one.

Question from @vnwonah

What path should I take, what should I learn, whatโ€™s most important to know to land a job at MSFT if I had two years to prepare?

Good coding skills are important of course... but i'd also look for good communication and collaboration skills

It's important to be able to communicate ideas to others, write code others can understand and work on a piece of a larger project.

Question from @somto

Finally, how is your day to day at Microsoft ?

It's pretty mixed tbh! i have a lot of meetings and emails, since I work with a lot of different teams

Sometimes I write specs, or whiteboard UX with designers or PMs and sometimes I fix bugs or write features... even though I'm not a "normal" dev, I think it's important for me to dogfood to better empathize with the experience our customers have.

With that we have come to the end of todayโ€™s session! Thank you for being here with us @Wole

We will defs be reaching out!

Thanks, everyone for a wonderful session!! Until next time! Do have a wonderful day! ๐Ÿ˜ƒ

Want to be part
of the conversation ?

Join the community