Category Archives: Uncategorized

Cross Platform Mobile Development (iOS, Android, WP8)

What is your strategy for cross platform mobile development?
It is a hard question to answer, because there are so many choices out there.
In thie video, I talk about what I think about cross platform mobile development, define your options and give you my recommendation.
So, if you are thinking about developing for iOS, Android, Windows Phone or Windows 8, check it out and let me know what you think.

Full transcript:

John:               Hey, everyone.  John Sonmez from and today, I do not have an inspirational video for you.  That’s right.  I’m going to be talking about a technical topic, one that, I think, is really important that’s pretty relevant on a lot of people’s minds today.  That’s right.  I’m going to be talking cross platform mobile development, and I’m going to share with you some of my thoughts around this area and some of the techniques you can use to be successful if you’re trying to create a mobile application and you want it to be cross platform.

Cross platform mobile development.  What does this mean?  Basically, hey, let’s say that you’re trying to build an app, right?  What do you do?  Your first step is you got to say, “Well, what am I going to build this for?  Am I going to build this for iOS?  What about Android or am I going to touch Windows phone even if it has a small market share?  What am I going to build this for?  Am I still going to try and do Blackberry?”  I hope not.

Basically for the most part, most developers, most companies considering this choice are basically choosing between, “Should I do Android or iOS, or I should do this Native and should I create a web version of this application, or even try to go to the Windows 8 platform for this?”  How do you decide?  Well, let’s talk about the different options and I’ll give you an idea of what I think is the best way to go today.

First of all, you have Native.  Now, if you go Native here’s the thing.  For iOS, you’re going to be developing an Objective C.  You’re going to be using the Cocoa frameworks and you’re going to be developing on a Mac.  For Android, you’re going to be doing Java and you can develop Mac or Windows, but you’re probably going to be using an emulator.  Your code bases are not going to be shared.  This is something really important to consider.

Now when you go Native, you’ll of course have all of the Native UI elements.  You’re able to make an application that feels like an application for that platform.  That’s why a lot of times people choose to go Native.  You can hit the 2 biggest markets if you just did iOS and Android.  If you’re doing a paid type of application, if you just hit iOS, that’s an option that a lot of people start with.  It’s just hitting iOS.  That sometimes makes sense.

That’s option 1.  Option 2 is to do something in between Native and let’s say full HTML or full cross platform.  One option in there and this is the one that I’d probably recommend the highest is the Xamarin tools.  Xamarin tools let you write an Android and an iOS application in C#.  You can use the portable class libraries in C# to make a lot of your code portable so you could reuse some of that code.  Now, the difference here between Native and Xamarin is small because Xamarin just sits on top of these Native APIs and it basically just gives you a C# way of writing this code.

There’s a little bit more going on under the cover, but you’re still using the Native controls.  It’s still very much Native at the end even though you’re using this other layer and this other tooling to do this.  Then you can go up from there and there’re a couple of other things that are in between here.  You have things like Titanium.  You’ve got things like PhoneGap where you could actually build a hybrid application.  That’s going more towards this HTML5.  We can traverse all the way down the path to HTML5.

You can build an HTML5 application and you could basically host it on your website, and you can make it work on the mobile platforms.  Maybe you could use something like Kendo UI from Telerik or Sencha Touch.  Then what you would have is basically an HTML5 application that’s responsive and works on the different mobile platforms.  If you wanted to make an installer and application, you could wrap this with something like PhoneGap and then it would basically just wrap that Native or that HTML5 application.

Those are your choices, and here’s the pros and cons when you’re thinking about this choice.  If you go full Native, you’re probably going to get the closest to that platform’s experience, but you’re going to need experience and tools, and developers that can write in those platforms.  Writing Objective C, if you’ve never done it before, is not that easy.  There’s a big learning curve there.  Even on the Java side and working in Android, there’s a learning curve there as well.  If you do want to touch Windows phone, then that’s a whole another platform or if you want to go Windows 8, that’s a whole another platform.

If you go the full HTML route, right now I don’t think we’re there yet.  I think we’re going to be there.  I think things like Firefox OS are going to drive us forward, and as phones and tablets become more powerful that we’ll eventually want to go full HTML5 on the mobile platforms.  But we’re not quite there.  Right now, the experience is still a little bit crippled.  It’s still a little bit hard to get things to work on each of the devices that look right, and there’s a little bit of lag.  Things are not as fast.  They’re not quite as performing as when you go Native.

Now if we take a hybrid approach and this is the one that I recommend right now.  For most developers, especially the ones that are watching this video because I know a lot of you are probably C# and .NET guys, you probably are going to be doing best by doing Xamarin.  Because the thing about Xamarin and the reason why I like it so much is that you can write one language, C# and then you can basically use portable class libraries to share a lot of your code.  If you use something like MvvmCross, MvvmCross is basically another library that works with Xamarin, it can allow you to use up to 90 or more percent of your code, where the only thing that’s different between the different platforms is just the views.

I definitely would lean towards the Xamarin route.  You still have to learn the Native APIs so you’re still going to have to learn iOS development and Android development, and Windows phone or Windows 8 development, but you’re going to be able to share a lot of the code.  You’re going to be able to basically write in one programming language instead of trying to spread it out and trying to learn all these different programming languages and not be able to share any code.  Then you’re not going to have the problems that you do with HTML5.

That’s my advice for now.  I think in the future it’s going to change.  Like I said, I think we’re going to go more into HTML5.  I think that’s going to become more of a viable option.  Right now, I would stick with either going Native or using something like Xamarin, and possibly using something like Titanium where you are writing JavaScript code that ends up getting compiled down to Native.  Of the two, of Titanium and Xamarin, right now my bet is on the Xamarin side.  There are a lot of great things coming from Xamarin.

I’m not plugging.  I’m not affiliated with Xamarin in any way.  I am an insider on their program, but I don’t get paid to promote them.  I just happen to like the tools.  If you like this video, if you thought this was useful don’t forget to subscribe to my channel.  Check out my blog at  I also have some videos on Pluralsight, not just on Xamarin but I have some videos on iOS, on Android development natively.  I have Xamarin videos on how to develop with Xamarin and then I have videos on Titanium, and even Firefox OS.  A whole bunch of different mobile things in cross platform development there, so don’t forget to check that out as well.

I hope this was useful to you.  Take care, have a nice day and I will talk to you again next week.


Why You Need To Start Writing

I used to hate writing. It always felt like such a strain to put my ideas on paper or in a document. Why not just say what I thought?
In this video, I’ll tell you why I changed my mind about writing and why I think writing is one of the best things you can do for your career.

Full transcript:

John:               Hey everyone!  John Sonmez from and today I’m going to talk about something I think is really important that could really benefit your career that could benefit your life.  It’s something that you might not have considered.  It might be even something that you hate right now.

What I’m talking about today is writing.  If you’re a developer, if you’re followed my blog you probably know that I’m going to preach to you right now and say “Start a blog.”  I give a talk on how to market yourself as a software developer.  Whenever I give this talk I have developers in the room, I say, “Raise your hand if you have a blog.”  Surprisingly maybe only 10% of the room raises their hand.  Then I say, “Raise your hand if you update that blog regularly, if you wrote a blog post last week.”  One guy raises his hand most of the time.  Just from a pure career perspective, just from a pure setting yourself apart from other developers, if you write a blog and you write one post a week, not a huge time commitment, you’re going to be ahead of 99% of other developers who aren’t doing that.  that alone is good enough reason to write a blog.

Now, there’re all kinds of reasons why you would say, “Ah, well, I don’t want to do this.  I’m not a good writer.”  Let’s throw that excuse in the can because here’s the deal, if you write every week, if you write a blog post every week and you do this for just one year, it’s 52 blog posts you’re going to get pretty good at it by the end of that year.  If you do that for several years you’re going to become a really good writer at least in developer terms pretty quickly.  If you have an even better writing habit of writing every day, 1000 words a day like a lot of writers do you’re just going to become good.  It doesn’t matter where you start because time is the great equalizer.  As long as you put in the time you’re going to eventually become good.  You have to believe this.  It’s impossible to not become good.  We all became good at walking, we all learned how to walk, we learned how to speak, how to master human language and emotion.  These are difficult things but we practiced them and over time we learned them.

Now, okay, so I’ve kind of told you the benefits of career wise why you should write, but let me tell you a personal benefit.  I’ve always hated writing.  Back in school I did not consider myself a writer.  I was in a lot of the AP classes for other things, biology, mathematics, not in writing and English.  But since I started writing my blog I found that writing is pretty awesome.  It’s painful.  It is painful.  It gets less painful.  But here’s the thing that’s so awesome about it, it helps you to organize your thoughts.  Your brain has all these thoughts coming through it all the time that can mess you up.  You think understand the topic.  You think you could talk clearly about it, but you go into conversation with someone and then all this stuff comes out and it’s unorganized and it doesn’t make sense and you can’t communicate your point.  You know that you’ve got this point.  You know that you’ve got something that you want to communicate but you can’t do it.

Here’s how you do it.  You start writing.  Writing forces you to organize your thoughts.  When you put something on paper, when you type it into Notepad, you type it into your blog post with the keyboard what happens is it forces your mind to start to organize things, to really think about things.  You start to think about things in depth and how to present them.  That organization carries over in all areas of your life.

When you’re having a conversation with someone where you’re trying to explain something all of a sudden you can speak more eloquently because you have the ability to organize your thoughts.  If you do a podcast, if you try to do other mediums, other types of things in life when you try to explain something to someone it ends up being a lot simpler.  You end up giving a better explanation because you could organize your thoughts.

Even your code, even when you start thinking about problems your brain is being exercised in this direction.  Writing is really important, really powerful.  If you’re not good at it, hey, don’t worry.  Go back to the archive of my blog post look at my first year of blog posts they suck.  Even today I write stuff that might not be good by literary standards but it’s a lot better than it was when I first started.  Hey, no one ever looks up a writing and laughs at it.  They’re reading the content in it.  Really important to get started writing.  It’s a really good thing that’s going to help your career.  It’s going to help you to communicate your thoughts a lot better.

Hey, if you like this video subscribe to my YouTube channel here.  Trying to hit a thousand, getting pretty close here.  Don’t forget to check out my blog at  I’ve got lots of career advice and things like that especially for developers and a little bit of technical content you’ll find every once in a while.  Thanks for watching this video.  Take care and have a great week.

Get Up And Code 048: Brian Lagunas: XAML and Oats

In this episode, I got to talk to my hometown buddy, Brian Lagunas. Brian is a Program Manager for Infragistics and a former bodybuilder.

In this episode, I talk to Brian about his new fitness goals and how he is gaining muscle by eating clean.

Full transcript below:


Fit Body, Fit Mind

There is a real connection between your physical body and your mind.  I’ve found that I perform much better mentally if I am preforming physically as well.  In this video, I talk about how being fit and exercising can have a positive effect on your ability to think clearly and solve problems.  If you want peak mental performance, you can’t neglect fitness.

By the way, check out this free Agile webinar my friends at Zephyr are doing on March 19th. I might even be making a guest appearance.

Full transcript below:


Get Up And Code 42: Farewell Iris

I’ve had a great time with Iris producing Get Up and CODE, but Iris is going to be leaving the show.

In this episode, Iris and I talk about her decision to move on and about now it is important to be able to make decisions in your life that might let some people down when you know it is the right decision for you.

But, don’t worry, the show will go on.  I plan to keep this show alive and going strong.  We’ve been growing pretty quickly since almost a year ago when we started the podcast.

I’ll definitely miss Iris, as I’m sure you will as well.  But, don’t be surprised if she pops on for some future shows as a guest host.

Listen below or visit us at

Full transcript below


Get Up And Code 33: Our Thoughts On Caffeine And Sweeteners

I’ve always thought the connection between developers and caffeine was a bit strange.

It must have come from all those late nights trying to fix bugs or get a feature out on time.

Anyway, I decided to drop caffeine a couple of months ago, because I didn’t like the idea of being hooked on something.

Since then, I’ve found there are quite a few developers that are also going away from caffeine.

In this episode of Get Up and Code, Iris and I discuss caffeine and the effects it has on the body and talk about whether or not is is good for you.

Along with caffeine, we thought it would make sense to talk about artificial sweeteners, because there is quite a bit of bad information about both of those topics circulating around.

So, check out this episode of Get Up and CODE and let me know what you think.

The Importance of Having a Routine

In this video I talk about how important it is to build a routine for yourself.

I’ve found that having a routine, while boring at times, is really important for long term success.  I used this technique to get 30 Pluralsight courses created this year alone and 54 overall.

Watch the video to find out why I think having a routine is so important.

The Power Of Batching

There are many things we do that require a large amount of setup before we can actually produce something. For example, these YouTube videos require quite a bit of setup to record. Often, we can increase our productivity in these cases, by learning to produce things in batches.
In this video, I’ll tell you why you might want to consider using batching to help you be more productive and I’ll tell you how I use batching to even make these videos.

Beginning Lua

My last Pluralsight course for this year is out!

Beginning Lua

I started out this year with the goal of creating 30 Pluralsight courses, this Beginning Lua course represents the completion of that goal.

It definitely feels great to accomplish what I had planned, even though the process may have been a bit painful at times.  This is definitely the biggest single undertaking I’ve ever accomplished in my career.

I hope you enjoy the course.  It turns out learning Lua isn’t very difficult at all, especially if you have already been using JavaScript– you’ll find plenty of similarities in how you structure your code.

2013 12 02 10 10 59 Beginning Lua

Here is the official course description:

Lua is an extremely versatile and popular programming language that you’ll find embedded in many other applications like Adobe’s Lightroom or even World of Warcraft. Many developers are surprised to find that even very popular games like Angry Birds are written in Lua.

In this course, you’ll learn how to quickly get started writing programs and scripts with Lua. I’ll take you through the basics of Lua, show you some tricks that demonstrate the Lua’s flexibility and even show you how to use Lua in an object oriented way.

We’ll start off in this course by learning a bit about Lua itself and Lua’s history, as well as learn how to download Lua and use the popular SciTE IDE for creating and running Lua code.

After we are setup and ready to develop some Lua code, we’ll learn the basics of Lua as we jump right in and build our first application. We’ll go over Lua’s type system and learn how to assign variables, utilize operators, use conditional logic and create loops.

Once we’ve got the basics covered, we’ll explore two powerful concepts in Lua: functions and tables. We’ll learn how functions work in Lua and what makes them so powerful, and we’ll see how tables can be used for more than just storing simple data.

Even though Lua itself doesn’t have a class construct, we’ll learn how to do object oriented programming in Lua using tables and metatables.

Finally, we’ll wrap up the course by learning a little bit about the standard libraries that come with Lua. I’ll show you some examples of using some of the most useful functions in the standard libraries and show you where you can get more information about them.

What Programming Language Should I Learn?

I often get asked by beginner programmers what programming language they should learn.

This, of course, is a tough question to answer. There are so many different programming languages today that a new developer, or even a seasoned developer, wishing to retool his or her career, could learn.

I’ve actually tried to answer this question before in a YouTube video, but I want to revise and refine my answer a bit here, because some of my views have changed and I’d like to give a bit more detail as well.

112213 0123 WhatProgram1 What Programming Language Should I Learn?

The wrong question to begin with

It turns out that what programming language you choose to learn is not actually all that important

Things have changed quite a bit from back when I first started my career in software development. Back when I first started out, there were much fewer choices of programming languages and there were much fewer resources available for reference. As a result, the choice was much more important.

For example, I started out learning C and then C++. At that time, it took quite a bit of work to master the language itself and to understand all of the standard libraries that were available. A good C or C++ programmer back then had a very in-depth understanding of every nook and cranny of the language and they needed this knowledge, because of two main reasons.

  1. References were not as widely available, so figuring out a syntax or library available involved flipping through a huge book, rather than just typing some keywords into Google.
  2. Programming, in general, was done at a much lower level. There were far fewer libraries available to be able to work at higher levels, so we spent more time working with the language itself and less time working with APIs.

Contrast that with the programming environment of today, where not only is information widely available and can be accessed with ease, but also there are a large number of programming languages that we effectively use to program at a much higher level due to the vast amount of libraries and reusable components available to us today.

In today’s programming environment, you tend to not need to dive as deeply into a language to be effective with it. Sure, you can still become an expert in a particular programming language, and it is good to have some amount of depth in at least one language, but you can literally learn a new language in less than a week and be effective with it almost immediately.

Now, before your alarm bells go off and you write me off as crazy, let me explain that last sentence in a bit more detail.

What do you mean you can learn a programming language in a week?

What I mean by this is that once you understand the basic programming constructs available in just about all programming languages, things like conditionals, loops and how to use variables and methods, you can take that same knowledge to a different programming language and just learn how to do those same things in that language’s syntax. In fact, most IDEs today will even help you with the syntax part, making your job even easier.

If you are already fluent in multiple programming languages, you probably agree with what I am saying, but if you have only ever learned one programming language or none at all and are looking to learn your first programming language, you might be a little skeptical. But, take it from someone who has learned and taught programming languages which I have learned in a week, the basics are pretty much the same.

Check out this book which basically deals with this exact subject, Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages.

Now, if you are just starting out, it is pretty unlikely you’ll be able to learn a whole programming language in a week. This brings us to the question, you may be asking yourself…

So, what programming language should I learn then?

Hold up. I’m still not quite going to answer that question. Because, it still isn’t quite the right question.

Instead of getting hung up on what programming language you want to learn, you should instead ponder what you want to do.

Learning by doing is the most effective way to learn, especially if you are doing something you have an interest in or is fun to you.

So, I always start new want-to-be developer out by asking them what they want to build.

Do you want to build an Android application? How about an iOS application? A web page? A game?

First, figure out the answer to this question and then let that answer guide you to choose the technology and programming language you will use to achieve that goal.

Don’t worry so much about which programming language or technology is most valuable. You can’t make a wrong decision and regret it later, because it won’t take you much time to retool later if you need to. Once you have the basics down and have actually used a programming language to build something, you’ll find that doing it again will be much easier.

112213 0123 WhatProgram2 What Programming Language Should I Learn?

I like to encourage new developers to write a mobile application—especially an Android application.

Here are some reasons why:

  • A complete Android application can be built by a single person. Creating a complete application will really help you to feel confident about software development and is one of the best ways to really learn to code. I spent a good deal of my early career only being able to create bits and pieces of things, and it was frustrating, because I never knew if I could really “code.”
  • By learning Android, you learn Java and how to use libraries and APIs. This will give you a good programming language to start with and you’ll get some valuable experience with APIs.
  • Google gives you some free help and makes things pretty easy to learn. Since Google really wants you to create Android applications, they have put quite a bit of work into creating easy to use tools and tutorials to help you be successful quickly. (I’ve also created some tutorials, which you can watch at Pluralsight here as well.)
  • You can actually make money while learning and teach yourself a very valuable and upcoming skillset. Not only can you sell your Android application or monetize it in some other way, but you will be learning a complete set of software development skills for a platform that is in very high demand.

Aha! So Java it is then?

No, not exactly.

If you had to press me hard for a programming language suggestion for someone just starting out, I would actually suggest JavaScript.

It is no secret that I have a sort of love / hate relationship with JavaScript, but I would be a fool, and doing you a disservice, to tell you that it is not one of the most valuable programming languages to learn today.

JavaScript may not be the most pretty or elegant language, but it is everywhere and it appears that despite my best efforts to stop it, it will continue to grow and spread for at least quite some time.

If you learn JavaScript, you’ll be able to create applications in many different spaces. Mobile, web, and even robotics can be programmed using JavaScript. And, although I was quite skeptical at first, HTML5 game programming with JavaScript is actually quite good. I created a Pluralsight course on creating an HTML5 game using JavaScript, and I have to admit that I actually really enjoyed the experience.

Summing it up

So, just to be clear. My recommendation is that you focus on what you want to build and let that guide your technology choice, with a slight biased toward Android development, because of the reasons I outlined above. But, if you absolutely want to choose the most valuable programming language to learn, at least at the time of writing this post, it is definitely JavaScript. Like or hate it, it is used everywhere.

I’m actually working on some products to help developers manage their careers and lives better which will cover topics like this one a bit more in-depth. If you are interested in receiving some updates when I publish an interesting article or video, or when I launch some of those products, feel free to sign up here. Don’t worry, I won’t spam you. J