Monday, October 27, 2014

Xamarin Tools: Components, Components, Components!

The Xamarin tool ecosystem is gaining popularity, as more developers continue to build tools with mobility in mind. Here's how to use them in your projects. 
I couldn't help but think about Steve Ballmer's "Developers, developers, developers! …" chant. While often lampooned, the chant shows how important developers are to growing the Microsoft platform.
End-user developers and companies will often judge a company's acceptance in the marketplace by the number of third-party components and add-ins that are developed around that product. It's a complaint I've heard leveled against Xamarin, that it lacks a robust ecosystem of tools, but that is changing.

Wednesday, October 1, 2014

Xamarin.Forms: What Developers Make of It

Developers tell us why they use it and what benefit they derive from the tooling, and Xamarin developer Craig Dunn goes over the decisionmaking process when choosing between Xamarin.Forms, Xamarin.iOS or Xamarin.Android.
I reached out to several developers who were involved with the Xamarin.Forms (XF) beta to get their thoughts on it and also talked with an evangelist for Xamarin, Craig Dunn to get some deeper insight into the development of the product.
Rui Marinho is a developer based in Portugal. Rui is heavily involved in an open source project called Xamarin.Forms Lab project, which is intended to provide additional functionality that can be plugged into Xamarin.Forms. You can check out his Web site at ruimarinho.net to check it out and find additional third-party/open source projects for Xamarin.Forms. Ryan Groom has been developing software for more than 20 years and has authored several books and been extremely active working with Xamarin tools. Jason Awbrey is a Xamarin MVP with nearly 20 years of experience with software development.

Tuesday, September 30, 2014

Simplifying Cross-Platform Mobile App Development with Xamarin.Forms

Lots of decisions go into creating cross-platform apps. Without Xamarin.Forms, the decision process is almost too unwieldy. Here's how it can simplify your mobile development.
Over the past several years, developers have been excited by the ability of Xamarin to target various mobile platforms and share code across these platforms. Over that time, Xamarin has increased the ability to share code by sharing code in Linked Files, supporting Portable Class Libraries, introducing the Xamarin Component Store, adding support for NuGet directly into Xamarin Studio, and a number of other enhancements to their product lines. One feature that developers have been asking for over the years is the ability to share UI code between various platforms. I know I've asked for this feature for several years. With the late spring 2014 release of Xamarin 3 and Xamarin.Forms, Xamarin has produced a cross-platform UI application-programming interface for developers.

Thursday, July 31, 2014

Cross Platform Mobile With C# WhitePaper presented by Visual Studio Magazine

My white paper on Visual Studio Magazine is now available.  This whitepaper will discuss the details for developing cross platform applications with C#.
 "As a Microsoft-centric developer, you have great tools in the Microsoft .NET Framework and C# Language, but you're faced with a challenge when it comes to building apps for the exploding world of mobile devices: Learning new languages and platforms can be incredibly time-consuming.  Wouldn't it be better to use the skills you already posses?  In this paper, you'll learn how to use the interoperable technologies of Xamarin to do just that.

Wednesday, July 30, 2014

Be More Social: oAuth, Facebook and Xamarin

It isn't breaking news that social networks are a big deal to your users. But what's the best way to add that functionality in the cross-platform development world? One of the best ways is through Xamarin, which provides a set of components that allows developers to concentrate on high-level programming and solving user problems. This article will look at some technologies available in Android -- as well as the iPhone -- to add social features to applications. It serves as a companion to my April article that covered oAuth, Twitter and the Linq to Twitter library.

Monday, June 30, 2014

Standardized Navigation Principles for Android App Development - Visual Studio Magazine Article

Navigation in mobile devices is an important consideration. If a user isn't able to navigate an app, he might quickly abandon it. Learn the navigation principles of Android to keep this from happening to you.
Mobile applications have a number of screens (Activities and Fragments) associated with them. Navigating through these is an important mechanism. There are a number of ways to provide standardized navigation in Android. This article will look at three mechanisms to provide navigation:
  1. Menus: Menus provide a common UI component for an application. The Menu APIs are used to present actions, as well as other options within an application.
  2. Navigation Drawer: The navigation drawer is a panel shown from the side of the display; it provides the user with the application's main navigation.
  3. Action Bar: The action bar provides a familiar navigation mechanism to the user across the top of the screen via an app icon, action items and action overflow.
Many thanks to Tomasz Cielecki

Wednesday, May 14, 2014

Cross Platform Data Access with Xamarin & C# For iPhone, iPad, and Android - Local, Web Services, & Sql Server

The following is a link to cross platform data access training with Xamarin & C#.   It is intended for use on iPhone, iPad, and Android devices.  The course covers local data in Sqlite, calling Web Services via REST and JSON, and calling Sql Server.

Course Data 

Applications live on data. These applications can vary from an online social network service, to a company’s internal database, to simple data, and all points in between. This Course will focus on how to easily access data on the device, communicate back and forth with a web service, and then finally to a SQL server database. 

Outline

  • Local Data (27:36)
    • Introduction (00:36)
    • Problem (01:57)
    • Solution (02:01)
    • LINQ (02:03)
    • LINQ Status (00:48)
    • SQLite (02:18)
    • SQLite - .Net Developers (00:50)
    • SQLite-net (01:07)
    • SQLite-net Attributes (02:10)
    • Getting Started (01:09)
    • CRUD (01:05)
    • SQLite Platforms (01:17)
    • Demo: SQLite – Android (04:53)
    • Demo: SQLite – iOS (04:56)
    • Summary (00:20)
  • Web Services Data (32:43)
    • Introduction (00:19)
    • Async Commands (03:15)
    • HttpClient (01:26)
    • HTTP Verbs (01:29)
    • Notes (00:58)
    • GET Operation (01:37)
    • JSON.NET (01:50)
    • Images (01:16)
    • Other Http Verbs (01:27)
    • Post (03:18)
    • Demo: Http – iOS prt1 (05:26)
    • Demo: Http – iOS prt2 (05:28)
    • Demo: Http – Android (04:20)
    • Summary (00:27)
  • Direct Data (12:33)
    • Introduction (00:23)
    • Remote Data - Direct (02:47)
    • Sql Server (01:15)
    • Demo: Sql Server – iOS (04:15)
    • Demo: Sql Server – Android (01:49)
    • "codepage 1252 not supported" (01:03)
    • Other Resources (00:43)
    • Summary (00:15)
Note: Thanks to Frank Kreuger for his data access library Sqlite-Net.  It is very helpful and I have used it in some other projects beyond just this training session.

Monday, May 12, 2014

Cross Platform Development with Xamarin - Portable Class Libraries and ASP.NET Razor Templating

My training on Cross Platform Development with Xamarin w/ Portable Class Libraries and ASP.NET Razor Templating is now available online from Learn Now Online.  The url is: http://www.learnnowonline.com/course/cpx1/xamarin-cross-platform-pcl-and-razor

Course description

In this course we’ll cover cross platform mobile development using Xamarin. First we’ll cover Portable class libraries (PCLs). PCLs are tools provide .NET developers a way to share code between platforms with one library. PCLs help developers reduce the time and costs of development and testing code. With a PCL project, one library can be used by multiple platforms. Then we’ll move onto Mobile web apps. Mobile web apps are a very popular mechanism to target mobile devices. Unfortunately, there are times that a mobile web app cannot access device specific features. Xamarin provides a mechanism to host an ASP.NET MVC Razor Web Template/Page within a native application. This provides the cross platform capabilities of the web while still allowing applications to access native features of device.
I hope that you enjoy the course as well as my others at LNO. 

Course outline

Compilation (42:37)
  • Introduction (00:18)
  • .Net Compilation (01:33)
  • iOS Compilation (02:32)
  • Android Compilation (03:10)
  • API Support - Two Platforms (02:09)
  • API Support - Three Platforms (01:04)
  • Solution (02:04)
  • Benefits (01:40)
  • Disadvantages (01:09)
  • Platforms Supported (01:59)
  • Feature Support (00:38)
  • Nuget (02:08)
  • Supported Platforms (00:47)
  • IDE Support (01:39)
  • Demo: Create PCLs - Create (03:58)
  • Demo: Create PCLs - Nuget (04:04)
  • Demo: Creating PCLs - Detail (04:27)
  • Demo: Create PCLs - Android (06:42)
  • Summary (00:27)
VB and Info (13:50)
  • Introduction (00:25)
  • Visual Basic Support (01:20)
  • Demo: VB PCL Project (04:40)
  • Compared to File Linking (02:12)
  • Issues (02:32)
  • Licensing (01:06)
  • Urls of Interest (00:33)
  • Previous Courses (00:30)
  • Summary (00:26)
Web in the UI (14:44)
  • Introduction (00:26)
  • Agenda (01:06)
  • Mobile Web (02:30)
  • Problem (01:45)
  • Solution (01:02)
  • Initial Setup (02:20)
  • Demo: Mobile Web - iOS (02:21)
  • Demo: Mobile Web - Android (02:48)
  • Summary (00:23)
Razor Templating (27:08)
  • Introduction (00:24)
  • ASP.NET Razor Template (01:03)
  • Initial Concept (01:17)
  • General Concept (00:50)
  • Pass Data In (00:38)
  • Add Files - iPhone (01:11)
  • Add Files - Android (00:51)
  • Pull Data Out (01:40)
  • Android - Call C# from JS (01:20)
  • Demo: Razor Template – iOS (04:48)
  • Demo: Data Pullback (04:24)
  • Demo: Loading Local Content (01:18)
  • Demo: Razor Template – Android (03:21)
  • Demo: Load Data (03:26)
  • Summary (00:28)

Thursday, May 8, 2014

Mobile - Cloud - Web - Success

On the weekend of May 2-4, 2014, I attended the Atlanta Startup Weekend. I can't speak highly enough of the event.  Jen Bonnett runs a great event, provides a lot of great speakers and mentors.  I can't speak highly enough of her work and her event.  She has a number of people that help out as staff: Maria Joyner (she has to approve my Twitter bio), Dawn Law, Kiran Bindra, Michael Ames, Wanda, and Chris Schwartz. I've been to other start up events, but this will always be the gold standard.
Friday night is for:
  1. Pitches. This is the time when people with ideas are given 1 minute to "pitch" their idea. 
  2. Voting.  Attendees will vote on the pitches that have been presented.  Ideas that have enough votes will carry on.
  3. Team forming.  Attendees and presenters will form teams. These teams will have people that have a background in: marketing, ideas, business development, product development, design.   
Saturday and Sunday are for:
  1. Product development.  You really need to build something.  You should have a demo that works at some level.  This is what I do.  More on this in a moment.
  2. Design.  Product developers should not pretend that they can do design.  Designers and developers need to work together.  On the same level, designers should not try to pretend that they are developers.
  3. Customer discovery and validation.  If you don't have customers that are wanting to use your product, you don't have a product or business.
  4. Financial model.  You must have a financial model where more money comes in than goes out.
  5. Mentors will work with the various groups to assist as necessary.
Finally on Sunday evening, there are presentation pitches with a set of judges. 
What team did I join?  I met Angela Martin, James "Wes" Laney, Sam Griffiths.  Angela pitched the idea to more automate the valet process.  Wes and Sam were already there.  I joined the team.  This is the "Two Minute Valet" team.  Angela and Wes worked on customer validation and financial models.  Sam did the design work.  Without Sam, it would have been black text on a white background everywhere!  I think that we worked really well together.  Each of us brought a separate skill set to the team.  These skills were complementary.  There were no egos involved that got in the way.  I was really happy to work with them.  Angela made a great pitch in the competition on Sunday night.
What did I do?  I built an iPhone application, read QR Codes, stored data in a cloud based database( Sql Azure), and output data from the QR Code in a web page.  This ALL worked.  It was written in C#.  I'm a huge fan of Xamarin, so this should come as no surprise.  What did I learn from this?  C# in all places really helped me out.  I didn't have to do context switching between language.  I was more productive than having to use a lot of different platforms and languages.  Thanks to Xamarin for having a great product.  Thanks to Microsoft/Sql Azure for having a sql based database as well as having a simple place to deploy a web app for web services as well as a web site.  I'm a fan of mobile and cloud.
Result:  We finished third in the overall event.  I was really happy on the result.  We're still working together on things and we'll see where this leads up to.  We have a meeting with a mentor next week.  We'll see how things fall out on this.  Without Xamarin and Azure, there is no way that I could have built a product for us.
Thanks Angela, Wes, Sam, Xamarin, Microsoft, Jen, and everyone else.

Monday, April 28, 2014

Using OAuth, Twitter and Async To Display Data - Connect to Twitter from a mobile application using OAuth with the Xamarin.Auth library, along with Joe Mayo's LINQ To Twitter library

Authentication has been a part of .NET for a long time. Unfortunately, there are a couple of problems:
  • Users must remember their user ids and passwords. For technologists, this is not a problem. For my parents, this is a huge challenge. Many people are able to remember their Twitter or other social network passwords. Unfortunately, remembering their user IDs and password for your service is most likely a problem.
  • When an application is responsible for the user IDs and passwords, it must store that information securely in some way. If there's one thing we should all understand, no application is 100 percent secure. There is always the chance for some type of data loss.
Depending on the application's needs, it may make sense to let another service store user IDs and passwords. The next question is, "Is there a standard way to interact with other services that can handle authentication?" Thankfully, there is a standard for cross-application authentication: OAuth. OAuth has been implemented by a number of social networks and other services, including Twitter, Facebook, Google and others.
OAuth is an open standard for authorization. It provides the following:
  • A standard method for client authentication.
  • A standard process for end users to authorize third-party access to server resources.
  • The ability to authorize these third parties without the sharing of credentials (username and password pair).
This article will not get into OAuth specifics; that information is available on the OAuth Web site.
For these set of examples, we'll use OAuth as a mechanism to authenticate users. We'll authenticate users, get a response and display information to the user (specifically, a profile image). From there, the example will integrate with Twitter via OAuth and then make calls to Twitter via a third-party library. This will demonstrate the strength of the growing Xamarin ecosystem.
Url: http://visualstudiomagazine.com/articles/2014/04/01/using-oauth-twitter-and-async-to-display-data.aspx

Wednesday, April 2, 2014

Build a Cross-Platform, Mobile Golf App Using C# and Xamarin - MSDN Magazine Article

One of the fun things about the return of golf season is participating in tournaments that feature events such as a longest drive contest. In these, a person’s first shot off a designated hole is measured against others in the tournament. The longest drive during the day is declared the winner. However, these contests typically don’t have centralized scoring. If you’re in the first group, you don’t know until after the event is over where your shots stand in relation to everyone else’s. Why not use a mobile phone to record the starting point and ending point of drives and store the information in a cloud-hosted database?
The options for building such an app are many, which can be confusing. In this article, I’ll walk through how I built such an app using the back-end options in Windows Azure and how I handled various issues. I’ll show the code for writing an app for Windows Phone as well as iOS using Xamarin.
Several features were required. The app needed to run across mobile devices and multiple device OSes. It had to be a native app that looked just like all of the others on a device. The back-end server had to be always available, with minimal hassle to the developer (me). The cloud services had to provide as much help as possible in the area of cross-platform development. The back-end database needed to provide some amount of geolocation functionality.

Many thanks to Brian Prince, Kevin Darty, Tara Walker, Craig Dunn, and a host of others for reviewing the article
PS. You don't have to go to Build to get this Cross Platform Awesomeness 

Thursday, February 27, 2014

CodeCast Episode #2 - Talkin' 'bout Xamarin

I was honored to have been on CodeCast Episode #2.  While there, I talked about my past, how I got into programming, and the decision tree that led me to use Xamarin's technologies.  After those discussions, I did a demo on oAuth authentication to Twitter via Xamarin.Auth and Xamarin.iOS (iPhone) and then showed the code for doing the exact same thing in Xamarin.Android (Android).  Hopefully, this is helpful to you as you look at, discussion, try, and do whatever on Xamarin's technologies.

Monday, February 3, 2014

Article - How to Advance Your Software Development Career: Sharpen Your "Soft" Business Skills



Many developers get into technology careers because they like to write code. However, as you progress in your career, you'll probably find that at some point, you "hit the wall" and have reached the highest position you can solely as a coder. To advance in your career, you must expand your expertise to include more than just straight technology know-how and experience. You must understand the nature of business so that you can take actions in your career that directly profit the business and profit you as well.

Thursday, January 30, 2014

Article - Xamarin How-To: Controls for Navigating Between Screens in iOS

Article Url: http://visualstudiomagazine.com/articles/2014/01/01/xamarin-how-to.aspx 

Developers like to create simple examples. Typically, these examples are a screen of data and controls that users can work with. But rarely are real-world applications a single screen of data. iOS provides developers with several standard mechanisms to allow users to navigate between multiple screens of data. This article will examine two controls that developers can use to provide easy navigation for users: the UINavigationController and the UITabBarController.

I hope that you enjoy the article. Thank you for your time and consideration.

Wednesday, January 29, 2014

Training on Xamarin.iOS with iOS 7: Introduction and Features

I have a new training class out on using Xamarin.iOS with iOS 7 (iPhone and iPad).  This training class will introduce you to iOS 7.  Personally, my favorite features are iBeacons.  I hope that you all the new iOS 7 features as much as I do.
Course Description: In this course we will look at a number of new features for iOS 7. These include the visual transition between views and a number of other new features. We’ll look at iBeacons and more options for background processes. iBeacons have the power to improve location management services by giving really fine control over location and the information at that location. The Background processing feature has been designed for the mobile environment and takes into account power management issues.
Topics

Introduction

Introduction
Introduction to iOS 7
Device Support
Statistics
UI - User Features
UI Redesign
Views
Text Kit
64 Bit Support
Multitasking
Sprite Kit
Game Controller Framework
Game Center Improvements
Maps
AirDrop
Inter-App Audio
Peer-to-Peer
Safari Services
Media Accessibility Framework
JavaScript Core Framework
Summary
iOS7 User Interface

Introduction
UIKit Framework
UIKit Framework (cont'd)
Xcode Features
Existing Controls
Controls
iOS7 Design Surface
Summary
View Controller

Introduction
View Controller Transitions
During the Transition
UIView Animation Enhancements
Spring Animations
Keyframe Animations
UIKit Dynamics
Primitive Behaviors
Sequence for Adding
Sequence for Adding (code)
Summary
Text

Introduction
Dynamic Type
Text Kit
Text Kit Architecture
Text Storage & Attributes
Summary
Background Download

Introduction
Multitasking
iOS Background Tasks
Backgrounding Session in iOS7
NSUrlSessionDelegate
Summary 


I hope that you enjoy the training. Thank you for your time and consideration.

Monday, January 27, 2014

Training on Xamarin Visual Studio 2013 Plugin, .NET 4.5 async/await Support, HttpClient, and other New Features

I have a new training class out on Xamarin.  This session will cover the new features that Xamarin has provided in their mid-2013 update.  These new features include support for iOS 7 (iPhone and iPad), but don't require iOS7.  I hope you enjoy this class.  My favorite features here are the Visual Studio 2013 support for iOS, which I use every day, the .NET 4.5 async/await support, and the HttpClient.
Course Description: With the new features from Xamarin, .NET developers have many things that they can work with. Xamarin has provided support for Visual Studio developers to write iPhone and iPad applications. Support for the asynchronous APIs in .NET 4.5, the .NET 4.5 HTTP client, improved gestures for an improved API to work with and other features as well.
 
Topics
Xamarin .Net 4.5 Features
Introduction
Recent Xamarin Updates
iOS Specific Enhancements
Tools updates
Optimization
Async Support
Why Async?
How to be Async?
Problems
async/await to the Rescue
Exception Handling
Good Candidates
Summary

HTTP Client
Introduction
HttpClient
HTTP Verbs
Notes
GET Operation
Other Http Verbs
Post
Summary

Xamarin Async Extensions
Introduction
iOS async/await extensions
F# Support
Resources
Summary

Xamarin OS Visual Studio
Introduction
Overview
Introduction
Visual Studio Features for iOS
Host Settings
Xamarin.iOS Build Server
Visual Studio Toolbar
Additional Toolbar Options
Output Windows
Project Properties
New iOS Project
File -> New
Updates
User Interface
How?
Screen Rotation
Results
Remember
Resources
Summary

Improvements and Gestures
Introduction
Recent Xamarin Improvements
Gesture Recognizers
Previous Setup
Pattern
Gesture
Types
States
Multiple Gestures
Summary

iOS Notifications
Introduction
Notifications
Local Notifications
How To?
Options
Push Notifications
Requirements
Demo: Local Notifications
Summary

Xamarin Razor
Introduction
Razor Integration
Demo: Xamarin App
Demo: Razor Integration
Summary

Xamarin Other
Introduction
Audio Support
Updated Garbage Collector
NSObject.Description
Threading
CheckForIllegalCrossThreadCalls
Strong Type Constructors
Screen Capture
NSAttributedString
CFNetwork HTTPClient
Summary
 


I hope that you enjoy the training. Thank you for your time and consideration.

Friday, January 24, 2014

Marketing for Software Developers

Here is an article that I wrote for Dev Pro Connections regarding marketing for software developers: http://devproconnections.com/development/how-market-your-software-business-guide-developers
We technologists are always looking for a better way to do things. We love the "best" solution. Technologists also tend to be skeptical of marketing pitches, which are geared more toward attracting customers rather than promoting a solution solely on its technical quality. In general, we technologists are wary of marketing. But in the real world, to get customers to notice your service, you need to offer more than the best solution. You also need the right marketing approach to promote your expertise.

Thursday, January 9, 2014

The Business of Software Development

Welcome to Dev Pro's article series about the business of software development and technology! The topic of this series, business development for software developers, covers some different ground than most of the other articles available at Dev Pro. Too many developers think in terms of bits, CPU cycles, and reads/writes to a disk drive. Rarely do developers and technologists think in terms of how an application feature impacts a company's bottom line, the importance of time to market, why marketing is important, the ramifications of contracts, and many other items. This series will help in explaining the importance of these elements of business development.

Wednesday, January 8, 2014

You MUST be Cross Platform

Visual Studio Magazine just posted on their site that Android will ship in One Billion devices in 2014.  The article is based on the following report from Gartner.  The key takeaway is that we no longer live in a "Windows World."  There are devices of all type that users are using.  As a result, developers must be knowledgeable on these devices and be able to develop for these platforms.  I would suggest subscribing to our VSM monthly column on "Cross Platform C#."  Not only does Android have a large, ok huge, set of numbers, but iOS has a large number of units shipped.  At the same time, one can not forget Windows.  What about the Web?  How can you support all of these platforms?  Tune into our Cross Platform column and you will see. 
Unit Shipments
PS.  I have a cross platform article coming up in Visual Studio Magazine that is really big.  I think you will like it.
PSS. Many thanks to Kurt Mackle for inspiring me on the graphic.

You MUST be Cross Platform

Visual Studio Magazine just posted on their site that Android will ship in One Billion devices in 2014.  The article is based on the following report from Gartner.  The key takeaway is that we no longer live in a "Windows World."  There are devices of all type that users are using.  As a result, developers must be knowledgeable on these devices and be able to develop for these platforms.  I would suggest subscribing to our VSM monthly column on "Cross Platform C#."  Not only does Android have a large, ok huge, set of numbers, but iOS has a large number of units shipped.  At the same time, one can not forget Windows.  What about the Web?  How can you support all of these platforms?  Tune into our Cross Platform column and you will see. 
Unit Shipments
PS.  I have a cross platform article coming up in Visual Studio Magazine that is really big.  I think you will like it.
PSS. Many thanks to Kurt Mackle for inspiring me on the graphic.