I have embarked on a course of learning Xamarin for Android. By request, here is an evolving Table of Contents of the articles.  Each article will point back to this TOC, and this TOC will point to all the articles, in order.

  1. Getting Started With Xamarin Android
  2. Using the Genymotion Emulator
  3. Logging
  4. Weirdness Explained
  5. Application LifeCycle
  6. Preserving State
  7. Adding the Spinner Control
  8. Taking the Plunge – Creating An App
  9. Preserving State With JSON
  10. Menus!

Falafel Software launches two new Kendo UI training courses to teach developers how to build modern web and mobile applications with Telerik’s HTML5 and JavaScript framework.

Capitola, CA  September 23rd, 2013 - Falafel Software is pleased to announce the launch of two new training courses that will teach developers how to deliver modern web and mobile applications with Telerik’s Kendo UI framework. Each 4-hour course is conducted online with a live instructor; with one course focusing on building web applications for modern desktop browsers and the other focusing on building cross platform mobile applications.

Kendo UI framework bundles everything ...

Now that the Icenium team has announced a new Visual Studio plug-in, some developers may want to port their projects from Icenium Graphite or Icenium Mist to Visual Studio. Unfortunately, in spite of a lot of really great features offered in v1 of the plug-in, porting an existing project is not a supported scenario (see the documentation).

I'm sure the Icenium team will get around to implementing this feature eventually. They're working very quickly through a long list of feature requests, so it's just a matter of how important this feature is to the community. If this feature ...

[Please see the Table of Contents for this series.]

As is true with iOS and Windows Phone development, you can’t get very far in Android development (with or without Xamarin) without understanding the Application Lifecycle in somewhat painful detail.

And, as explained in the previous blog post, some aspects of Android’s life cycle are, shall we say, unusual.  The heart of an Android app, as you know by now, is an Activity. The rub is that activities can be suspended and resumed by the operating system, but not necessarily in the order they were created by the user.  That ...

There might be times when your app is structured such that you bind a Model to a View in one scope, but you still want to be able to obtain that Model for modification in a different scope without relying on global variables. By diving into the source code, I found that elements bound to Models do so through a BindingTarget object, which has a source property that contains the Model. This BindingTarget is saved in a property named "kendoBindingTarget" on the element itself. Thus, you can obtain the original model like so: 

var viewModel = kendo.observable({
  selectedValue: ...

[Please see the Table of Contents for this series.]


SecondActivityMost tutorials and books on frameworks and systems insist on giving you “all the background you need to really understand the system” because, they claim, without that, you won’t understand how it all fits together.  I find, on the other hand, that what I want, is to get busy creating applications, and then understand the architectural underpinnings later, as I go.

That said, Android is so weird that there are a few concepts you really do need to grok before you can go much further than “Hello World.”  These include...

This is just a quick tip that will make it quick and easy to host a site in any folder using IIS Express. Simply create a new text file and paste the following line into it:

"C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:"%cd%" /port:12345

You can set the port to any value you choose. Save the file with a .bat extension and put a copy in the website folder. Whenever you want to host the site in that folder with IIS Express, just double_click the file. A console window will appear showing the status of IIS Express. Just press "q" in the ...

[Please see the Table of Contents for this series.]

In today's brief posting, I’ll demonstrate how to add logging to your application using the built-in logging facilities provided by the Android.Util namespace.

LoggingTo begin, create a new Android application in Visual Studio  2012 named Hello Log.  When VS settles down, you’ll find a sample file named Activity1.cs that contains almost all the code we need.  This code wires up a button event handler to count the number of times the button is clicked. 

Our goal is to add logging to keep track of our place in the program.  To do ...

[Please see the Table of Contents for this series.]


In a previous post, I explained that I’m learning Xamarin and documenting the process.   As soon as I noted this effort on Twitter, I received a tweet from the estimable Paul Betts, now employed by GitHub, that  I wanted to be sure to use Genymotion or HAXM.  I went with the first. The process is simple, and the results are gratifying.

GenyMotionIn my totally non-scientific tests (I started it up and hit the stopwatch on my iPhone), Genymotion’s Nexus One 4.2.2 API 17 480x800 emulator starts up ...

In my last post we explored how easy it is to dive into Icenium to create cross-platform HTML5 hybrid mobile applications. This time we'll take a closer look at the project files and how they work together by creating a blank project and using it to display a “Hello, World” message.

Creating a Blank Project

As mentioned before, Icenium has several project types to get you started. In later posts, we'll be making use of the Kendo Mobile project, since this is my platform of choice for mobile and web development. However, to keep things as simple as possible for ...

[Please see the Table of Contents for this series.]

I have embarked on a great adventure, full of trepidation and woe.  I have set out to learn to write Android applications using Xamarin though I confess to being no friend of Java, Android or cross-platform development (I worked on a cross-platform project (Mac and Windows) in the 1990's, would you like to see my scars?)

To make this adventure more enjoyable, and to ensure that I don't quake in fear and turn back at the sight of the first dragon, I have decided to take you along with me.  Buckle ...

Wouldn't it be great if you can specify different styles per page all from the stylesheet? For example, your home page may have a larger header section than the rest of your pages. The solution would be to add a different class on each page so you can do something like this:

.header {
  height: 30px;
.home .header {
  height: 100px;

Only problem with this is most of the time your pages are generated by a content management system or web application. That means, you would have to hook into the ...

This is the first in a series of blog posts that will chronicle my journey through Telerik's Icenium mobile development platform. In this intro, I'll talk about my experience setting up the Icenium environment, and running my first project on both the simulator and my test device.

Two Sides of the Same Coin

Icenium is available in two flavors: an installable Windows application (called Graphite) as well as a full-fledged online IDE called Mist that runs in your browser. Both offer a complete environment for developing and testing your apps, and even have the availability to sync your projects, ...

There is a lot about the behavior of the Kendo DropDownList that I like. I like that you can count on it to have a selected value. I like the type-ahead searching behavior. The pop-up is pretty customizable too, within limits. But what if you really want to display the options in some way that is different from a single-column stack of templates, such as a mega menu? It is not easy to try to manipulate the Kendo DropDownList into doing this just with templates, but it isn't too hard if you sidestep the built-in pop-up entirely and supply your ...

Falafel Software and Apress Media team up to deliver a new book on Windows Phone 8 development.

Capitola, CA  September 3, 2013 - Falafel Software is pleased to announce that its latest book, “Pro Windows Phone App Development,” has been released and is available through Apress Media. The 560 page development guide walks readers through the entire application development process, starting with an explanation of the basic requirements of a modern Windows Phone app and progressing through app creation and submission to the Windows Phone store.

“Working on this book was a lot of fun” said Noel Rice, VP ...

I recently needed to lay out content in columns that had variable height, yet still have every row line up evenly.  While it is possible to achieve this using display: table-cell; but I am building my content dynamically and I don't necessarily know how many items will be displayed.

The best solution for this is typically to use float: left; on each element that needs to be placed in columns and while I could set a specific width to have uniform columns, if the height of one of the cells was different, the items would start to stack on top ...

Tech influencer and former Microsoft and Telerik evangelist Jesse Liberty joins Falafel Software.

Capitola, CA  August 29, 2013 - Today,
Falafel Software is proud to announce and welcome Jesse Liberty to the team as a Master Consultant. Liberty is an esteemed author of numerous popular software development books and Pluralsight courses, a regular blogger and conference speaker, and the host of the popular “Yet Another Podcast” where he hosts “Intelligent Technical Conversations” weekly. In his new role, Liberty will supply hands on software development assistance to Falafel Software customers and take over several of Falafel’s online training courses.

“I ...

One of my favorite features of Kendo UI is its support for MVVM through the kendo.observable object. Creating an observable ViewModel allows you to declaratively and intuitively bind data using the "data-bind" attribute, with virtually no code.

Using this method, you can even generate a form on the fly, specifying not only different field types, but even different attributes such as "required" and setting a CSS class to highlight specific fields. This is what we'll look at today.

Sample JSON

For this example, I've created a simple JSON array of items that will represent the input fields on the page. ...

Last time we took a look at how we can use the Xamarin iOS Designer to build a simple scene (view controller) in a storyboard and configure outlets and actions in order to write code that manipulates the UI and handles UI events. This time around we will take a quick look at getting started building an app with multiple screens, always the first thing I want to do after getting the basics down.

In iOS, a screenfull of content is managed by a view controller. Even if you are using view controller containment or any of the builtin iOS ...
In our last installment we introduced the Xamarin iOS Designer and briefly discussed using it to build "scenes" in iOS Storyboards. This time around we are going to take a quick look at how we use the Xamarin iOS Designer to make UI widgets accessible from our code. Let's start by fleshing out our main scene a bit for a simple hello world with adjustable text size:

Our storyboard scene contains a UILabel for the Hello World message, a UISlider to adjust the text size, a UITextField and a UIButton. We are going to need to manipulate the UILabel at ...

Get weekly updates in your inbox!