JimBob Bennett

+ Follow
since Jun 20, 2018
Merit badge: grant badges
For More
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by JimBob Bennett

There are disadvantages, as with any technology.

* Tooling - there are more tools involved, more moving pieces has led to some instability. There is also a catch up time for tools - for example if Apple adds a cool feature to their storyboard designer, then it takes time for Microsoft to replicate that inside Visual Studio. Same with the Android studio designer. The SDKs don't have a catch up time, Microsoft are really good at ensuring that all the SDKs are available before general release on iOS and around general release on Android. Microsoft are also working hard to fix issues with the vendor tools as well - for example the Android emulator now runs on AMD and Windows with Hyper-V thanks to open source contributions to the Android emulators from Microsoft developers!
* Overhead - Xamarin apps have a cut down .NET framework installed with them, so if keeping your app very small is important (for example in countries with expensive or limited data) then you need to work harder with the linker to make your apps small.
* Jobs/recruitment - there are currently more companies looking to hire Swift/Java developers, and more Swift/java developers available so getting a career as a Xamarin developer is harder.

As the the certification, I assume you mean Xamarin University. The book will help, but it's probably not the best resource for a Xamarin University certification as the focus is different. Things like XamU focuses a lot on Xamarin Forms, my book is Xamarin Native. It will help, but not as much as attending the XamU courses multiple times.
5 years ago

Pete Letkeman wrote:Thanks for you valuable input. I can see iOS/Mac hardware being an issue.

That is one issue I guess - if you want to develop for iOS you HAVE to have a Mac. Apples rules. Though you can rent build servers in the cloud from people like MacInCloud. It's slower but a great way to get started without paying for a Mac.
5 years ago

Pete Letkeman wrote:From what I gather many people have issues with multi-threaded development and I'm glad that you spent some extra time focusing on that topic.

The .NET team have done some great work to help in that area. Async/await are amazing, but with UI code there can always be gotchas. So it's a topic I though well worth diving into in detail.
5 years ago
UITest works in emulators and simulators, and is a great way to write tests if you like C#. Xamarin apps are native mobile apps, so any testing framework will work with it - so use what you are happy with. For example if you use Appium for web testing then you can still use it for Xamarin apps. Personally UITest has done everything I've ever needed, and I'm big on UI testing!

I would say this book is for you - it's designed for someone who has some C# skills with no need for mobile experience, it covers everything that you need!
5 years ago
I would say learn Xamarin first as it's one language to learn! Then after that there is no need to move to the native languages, as everything you can do in Swift/Java, you can do in Xamarin in C# as Xamarin has wrappers around every single API.
5 years ago
The biggest barriers are:


Lots of moving pieces are involved with mobile apps - Xcode and the various SDKs and tooling on iOS including the provisions profiles, the Android SDKs and tools for Android. It gets a pain, and adding Xamarin as well can cause a few issues. Microsoft are working to smooth these out, but the top tip is to follow the docs when installing and configuring and always uses the latest bits!

Running on emulators and devices
This isn't a Xamarin specific thing, but mobile in general is a pain. Provisioning profiles on iOS to run on devices, Android emulators which didn't run on AMD chips or Hyper-V until recently. Again, follow the docs carefully and if you want to run Android emulators and have an AMD chip or Hyper-V for things like Docker, give the preview version a go (https://aka.ms/AA1v77v).

Jumping from native to Xamarin has a mental leap around architecture. If you've built iOS and Android in the past, you would have built an app twice. With Xamarin you try to maximise the amount of shared code, which means a different way of thinking, pushing as much as possible into shared code. THat's where Xamarin in Action comes in, it covers how to use MVVM to maximise code re-use. So how to overcome? Buy my book!
5 years ago
It is for beginners, but assumes a basic working knowledge of C#. It assumes that you have used a mobile device so have a basic familiarity with the terminology and user experience, but no actual mobile development experience is required.

Why learn Xamarin? Simple - it's awesome 😜.

It allows you to build for iOS and Android using C#, which is a great language, and it allows you to build an app for iOS and Android sharing around 80% of your code. By using the same language for both platforms you can write a lot of code once and re-use.
5 years ago
I can think of a couple of different audiences:

* C# developers who want to move to mobile. Even if you only support one platform, this book will teach you how to build a mobile app in C#.
* Mobile developers who don't want to write identical code twice in different languages.
5 years ago
The book covers MVVM in detail, so if you are using this pattern for desktop development there is a lot you can learn from there. You can also apply the techniques when building cross-platform desktop apps, for example an app that runs on macOS and Windows. The chapter on threading with async and await has got some great feedback and that applies to any multi-threaded C# development!

Admittedly though, the bulk of it is mobile focused, covering Android and iOS.
5 years ago
Xamarin development happens inside Visual Studio on Windows or Mac, so you get a full debugging experience wether you are debugging iOS or Android apps.

Visual Studio on windows also allows you to debug iOS apps over WiFi, so you can debug on an iPhone connected to the same network as your PC over wifi. Your PC uses a Mac on the network to build your iOS apps (required buy the Apple SDK rules), then provides a full debugging experience via it's connection to the Mac. It can even screen share an iOS simulator from your Mac back to the PC you are debugging on.
5 years ago

Xamarin at its most basic is a simple .NET wrapper around the SDKs and tooling for iOS and Android, coupled with an implementation of the .NET standard library, so everything you can do in the Swift and Java worlds, you can do in Xamarin, as well as coding using the .NET APIs that otters C#/F# developers use. A cross-platform Xamarin app isn't 100% cross-platform, instead you share the code that makes sense and write anything specific to the platform once.

Xamarin actually comes in 2 flavours:

Xamarin Native (also called Xamarin Classic)

Xamarin native apps are written in C# or F# and use the native APIs and tool chains to build apps. They are cross-platform in that any code that doesn't need the native APIs can be shared between your iOS and Android apps - business logic for example. Your UI uses storyboards or Android layout files, you use the platform-specific APIs to access hardware. Your business logic uses .NET standard libraries for things like network access, JSON parsing or whatever. Typically you can re-use 80% of your code whilst still using all the native UI bits and pieces and native SDKs.

Xamarin Forms
Forms provides a UI abstraction, allowing you to define your UIs and UI logic once in shared code, and when run your app will run using a native UI. You still have full access to the APIs on each platform to do what you need.

Xamarin also has cross-platform abstractions around native APIs, called Essentials. This allows you to use platform specific features such as checking the state of the network connection, or using the accelerometer from your cross-platform code, so you write code that uses these once.
5 years ago

John Joe wrote:Welcome  Jim Bennett  

Hello! Cool to be here!
5 years ago