Speaking is Temporary

Here we go, another attempt at blogging!

So much has happened since I last wrote, 3.5 years ago. I have been running a user group, Toronto Mobile .NET Developers Group for the past 18 months and it has been a fantastic experience. Organizing a user group/meetup can be a lot of work and it is very rewarding. I have met so many brilliant and awesome people, learned how to organize and promote the events and picked up some great skills.

As part of the group, I have been presenting regularly at my group and others. Presenting tends to play to my strengths, I can be informal and casual and I get immediate feedback from the community. That being said, text is powerful; it can be skimmed, indexed, quoted and referenced much easier. With that in mind, I am going to give blogging a more serious, earnest effort moving forward.

Now, all that being said, I will be speaking/presenting at the upcoming events:





New Phone

Late last week, I had an untimely incident with my phone. Right before my sprint review, a mug fell a mere 3 inches on my OnePlus One cracking the screen causing the digitizer to stop functioning.

This was the first phone which I have ever broken. I don’t use a case and I take good care of my hardware, generally I will use a phone for 2-3 years. Very frustrating, considering I didn’t even drop the thing. Additionally, this was a replacement phone, my first OnePlus One had a defect, this one was only 3 weeks old!

Anyhow, in a panic, I ordered a 3rd gen Moto G, it cost me $260 off contract, delivered to my door. I have been using it since Wednesday and I must say that I am very pleased with the device. Sure, the OnePlus One is a bit snappier and allows you to keep more apps in memory, but for a budget smartphone, I would highly recommend the Moto G.

ArsTechnica has a more in depth review.

Here Be Dragons: Xamarin.Forms And Material Design

In my last post, I noted the following:

We are planning on using the master-detail view for the Android version of the app while following the material design guidelines. For iOS the app will use a tabbed bar along the bottom of the screen and a settings icon in the navigation bar.

I had made this decision after I had put together a proof-of-concept app using the master-detail view, slapped a nice coat of material design paint on it and paraded it around to a few people for some feedback. It looked really nice, shiny…at least in Android, but not to worry, I could make some OS specific adjustments for iOS. It seemed like a good direction.

Yesterday, I took my proof-of-concept app, picked out the pieces I needed and rolled them into my actual app. The Android app was to have a navigation drawer (master) which slid over the tab page (detail). I spent the morning pulling everything together, applying the theme, adjusting colours, testing, then finally, I implemented the tabs in the detail page. This is what the result looked like:


Where I expected the master navigation drawer to slide over the toolbar and tabs, it instead only slid over the detail page. This is particularly problematic since not all of the detail pages use tabs.

I found numerous posts of this behaviour and a Xamarin bug report. Apparently it’s expected behaviour and will not be fixed.

I guess it’s back to the drawing board for the navigation…sigh.

Sprint 1: The Great Learning Curve

We had the sprint retro for our first 2 week iteration and did not have much to show for it. The learning curve of Xamarin, plus time for planning and time stolen by other projects caused the velocity to make a major hit. Only 4 of 8 story points were completed in sprint 1, the remaining 4 story points were pushed into sprint 2. Nevertheless, we did have something to show for it, a working app, themed to meet the client’s needs with login and data retrieval functionality which was integrate with the real life backend.

There is quite a bit of learning left to do. We are working to find a good navigational flow for the app while ensuring it is visibly pleasing and meets the UI guidelines of both iOS and Android. We are planning on using the master-detail view for the Android version of the app while following the material design guidelines. For iOS the app will use a tabbed bar along the bottom of the screen and a settings icon in the navigation bar.

A couple of notes here. I am constantly working between a “test project” and a real project. The test project gives me the opportunity to experiment with various UI changes such as styles, controls, flows without impacting/polluting the real project, a way to make mistakes with little cost. Second, I have ran into this build issue with the default Xamarin.iOS project multiple times and thought it would be a good idea to share it.

Getting Started With Xamarin

Over the past 4 days, I have been working with Xamarin here and there. I’m starting to get the lay of the land, and I may actually have some things of value to share. Here’s a quick braindump:

  • When creating your Visual Studio solution/projects, start with “Blank App (Xamarin.Forms.Shared)”, this will create your “core” project containing all your common code, it will also create a project for iOS, Android and Windows Phone 8.1
  • If you have chosen to use a Hackintosh, like me, you will not be able to run the Windows Phone 8.1 emulator as it requires Hyper-V and Hyper-V does not play nicely with VirtualBox
  • When you create your Xamarin.Forms projects, you will need to manually edit the iOS project file as described here: https://kb.xamarin.com/customer/portal/articles/2006832-why-does-my-ios-build-fail-with-%22no-valid-iphone-code-signing-keys-found-in-keychain%22-
  • ALWAYS ensure your Mac build machine is running and ready BEFORE opening Visual Studio
  • Visual Studio Online supports Xamarin build, but it will not work with a trial license

That’s about it for now, just some quick tips from the trenches.


Since iOS development requires a Mac, I  have decided to look at the Hackintosh-on-a-VM route.

Here are the resources I used to get up and running:

Main guide – http://www.macbreaker.com/2015/01/virtualbox-yosemite-zone.html

Troubleshooting – http://givemesome.tips/guide-to-fix-most-common-problems-with-hackintosh-347/

Personally, I encountered a few different issues which the Troubleshooting guide helped me fix. I now have my VM up and running and ready for Xamarin configuration!

Beginning With Xamarin

I’m a little late to the mobile game…like 9 years late, but I really haven’t been motivated to create anything for the mobile space. I have daydreamed about creating a fantastic mobile app for the iPhone and Android and it has remained just that, a daydream. When I put in after hours time, for hobby projects or training, it generally needs to be directly tied to my short to medium term career goals.

Now, I finally have an opportunity to create a mobile app at work.

This is exciting and I’m really looking forward to the journey!

The Microsoft kool-aid tastes good to me, I love Visual Studio, C#, the .NET Framework. At this point, I don’t really know much else (besides the obligatory javascript, which fosters much more of a love-hate relationship). Based on this, I have selected Xamarin as my development tool without doing much research.

I decided to start this blog as a structured brain-dump. Generally, I make notes in Onenote and it stays hidden from the universe, this time I want to try something different.

Here we are at ground 0, sprint 0, whatever you want to call it. I’m ramping up on Xamarin, starting with 3 Pluralsight courses:

  1. Building Cross-Platform iOS/Android Apps with Xamarin, Visual Studio, and C# – Part 1
  2. Building Cross-Platform iOS/Android Apps with Xamarin, Visual Studio and C# – Part 2
  3. Introduction to Xamarin.Forms

I don’t have a Mac, and I don’t wish to have one or deal with one, so I’m going to be using Visual Studio Online (TFS 2015) and the built in Xamarin build capabilities to build my iOS app (see Brian Harry’s post).

I will be back tomorrow with more.