Calling all social coders: Xamarin is hiring Developer Evangelists

As we continue to rapidly grow at Xamarin, we’ve reached a point where we are looking to spread the word about MonoTouch and Mono for Android to even more developers around the world. To do this we’re creating a new team of social coders to represent us to the community as Developer Evangelists.

What is a Developer Evangelist? The job of an evangelist (sometimes called a Developer Advocate) is to raise awareness for our products in developer communities online and off. This means doing things like speaking at events, creating blog posts and screencasts, answering questions on Stack Overflow or anything else that helps our customers be successful.

Maybe you’ve never considered being an Evangelist because it’s “too sales-y” or “not technical enough”. At Xamarin, that’s not the case. The Evangelist’s job is to build relationships with developers and be a technical ally to our customers. That means you can get your hands as dirty as you want and you can leave the selling up to our excellent sales team.

Here are a few other reasons why you should consider it:

Work with Some of the Best Engineers in the World

We’ve taken great care to hire the best talent we can find. They’ve created a set of tools that are enabling developers all over the world to build great apps. The biggest injustice to a product is for the customer that needs it to never know it exists. Your job is to bring our engineer’s hard work out into the world and get it into the right hands. And when those customers need someone to advocate for them on the inside, you represent them back to the company.

Mobile is the Future Present

The mobile industry is relatively young, but it’s clearly the direction the computing world is heading. Xamarin is situated right in the heart of the mobile movement and committed to making the best cross-platform mobile development tools in the industry.

Satisfaction From Enabling Others

Much of the work you’ll be doing is helping customers be more successful at whatever it is they’re trying to accomplish. You’ll help startups build the prototypes that help them get funded. You’ll help giant companies save millions of dollars. You’ll help developers learn new skills that help them get a better job. I can’t overstate how satisfying is to watch someone you helped become successful, but I’ll try anyway. It’s infinitely satisfying. And you’ll be doing it every day.

Autonomy and Variety of Work

We’re growing fast, so we have a lot of work to do, and evangelists will always have way more work than they could reasonably finish. It’s up to them to decide what exactly they should be working on at any time.

In order to be autonomous you need to be good at doing a lot of different things. If the most important thing you could be doing right now is writing a blog post, you need to be a good writer. If it’s writing a utility or helping a customer with a prototype, you better be a good coder. Evangelists tend to be a combination of engineer, support, marketing, sales, business development, and product. Having the ability to shift roles quickly goes a long way to satisfying all of those needs. If you thrive on constantly taking on different kinds of problems, you’ll find a lot of satisfaction in finishing all of the different kinds of tasks presented to you.

If you’re good at just a few of those things, the time constraints of the job will likely force you to get stronger in your weak areas very quickly. Having a wide variety of work can also help you get over hurdles (like writer’s block) by letting you shift modes for a little while. After some time in the role you’re almost guaranteed to be a much more well-rounded overall employee.

Travel the World (or Not)

You’re probably thinking one of two things: “I love seeing new places, that sounds cool” or “traveling is the WORST”. Good news, traveling gets better the more you do it (the airlines treat you a lot better if you fly a lot) but if that’s still not your thing, we’re also hiring evangelists to focus their efforts on online communities and activities. If you do like to travel, you’ll rack up a ton of frequent flyer miles that are yours to keep and you’ll get to spend time at all the conferences you’ve always wanted to attend.

Are you ready?

If this sounds exciting to you, we want to hear from you! We’re looking for multiple evangelists based in San Francisco, CA or Cambridge, MA with relocation assistance available if you’re willing to move. We’ll also consider remote employees if you’re located in a major metropolitan area and don’t mind traveling to the office occasionally. We have competitive salary and benefits. We’re growing fast and are cash-flow positive.

Join us.

Xamarin Designer for Android available for Visual Studio and MonoDevelop

Today, we’re thrilled to announce the arrival of the Xamarin Designer for Android, which makes it incredibly easy for Android developers to visually create beautiful layouts for their applications from directly within Visual Studio and MonoDevelop.

The biggest single complaint we’ve heard about Android development from Mono for Android developers has been the absence of a great Android layout designer. With Xamarin Designer for Android, we’ve delivered the kind of design experience C# developers expect from their favorite IDE. To learn more about the Xamarin Designer, check out our Designer Overview and Designer Walkthrough

Along with Xamarin Designer for Android, we’re also releasing Mono for Android 4.2 and MonoDevelop 3.0 – both monumental releases in their own right.

Mono for Android 4.2

Beyond Xamarin Designer support, Mono for Android sports many delicious improvements.

Android Java Binding Library project and tool

This release introduces a new project type that enables consumption of Android Java libraries (.jar) from C# assemblies (.dll). For a more in-depth explanation, see the Java Binding Library tutorial.

Graceful Degradation of UI

Mono for Android 4.2 includes bindings to Android’s Support Package, enabling developers to use a selection of Honeycomb APIs on devices running Android Level 4 and greater. Learn more about how to integrate this into your application with our Android Fragments Walkthrough.

x86 Support

Android x86 installs are fully supported by Mono for Android, including support for debugging official Android x86 emulator images from a Mono for Android trial installation. Debugging an app deployed against an x86 image offers much better performance compared to ARM emulator deployments. We also have an article to walk you through Configuring the x86 Emulator.

Much more

Additional Mono for Android 4.2 features include a 50% smaller shared runtime, a new device toolbar, non-modal deployment, and integrated logcat for Visual Studio. Even more details can be found in the Mono for Android 4.2 Release Notes

MonoDevelop 3.0

The major focus of MonoDevelop 3.0 is a new C# code completion engine, which provides more accurate and reliable code completion and navigation, semantic highlighting for C# files, and a reliable on-the-fly code formatter.

Other improvements include a revamped Assembly Browser, preliminary support for Portable Library Projects, better handling of large projects, and virtual indenting in the source editor. You can read more about all the new improvements in our complete write-up of What’s new in MonoDevelop 3.0.

AnDevCon III

If you’re in California this week for AnDevCon III, you can come check out demos of all of this and more by coming by the Xamarin booth (401).

Catch Bryan Costanich at AnDevCon and DevTeach

Bryan Costanich, Xamarin’s Director of Education, will be speaking about mobile development and the state of the mobile industry at AnDevCon and DevTeach this May.

Bryan’s first talk will be at AnDevCon in the San Francisco Bay Area, where Bryan will cover cross-platform development in C# using the Mobile World Congress 2012 app as a case study. He will focus on architectural best practices, and touch on some of the design considerations that come up when building cross-platform apps. Bryan will also deliver a version of this talk at DevTeach in Vancouver on May 30th.

The DevTeach session will be preceded by an in-depth discussion of the mobile industry, where Bryan will introduce the mobile ecosystem and the four major platforms that fuel it. This separate talk is meant to give developers and entrepreneurs alike a solid grounding in the workings of the mobile economy. You don’t want to miss it!


Cross-Platform Mobile Development with Xamarin

Using C# to Build Native Apps That Share Code Across Android, iOS and Windows Devices

AnDevCon, Wednesday, May 16th at 3:30pm
DevTeach, Wednesday May 30 at 9:30am in room Tiffany A

Native apps have many performance, functionality and usability benefits over HTML5-based apps, but maintaining OS-specific codebases is time consuming and expensive. Using a real–world conference scheduling app built for Mobile World Congress 2012, this case study will outline how to use C# and .NET to design and develop native apps that share code across Android, iOS and Windows. This session will cover how to:

  • Use a fully layered architecture adhering to Object Oriented principles
  • Leverage a unified cross-platform data layer
  • Share the business layer across all platforms
  • Use the native control toolkit on each platform to ensure device-specific user-experiences
  • Run as a native application to avoid performance sacrifices
  • Minimize the amount of code written by using existing frameworks

We will also discuss how leveraging things like the ORM for data access, .NET framework for Web calls, and MonoTouch.Dialog for iOS UI, and other bits, can significantly reduce the amount of code you need to write.

Register for AnDevCon    Register for DevTeach

The Business of Mobile Development

DevTeach only, Wednesday May 30, 2012 at 8am in room Tiffany A

Everyone has heard stories about developers making money with Apple’s App Store, but that’s just a small piece of the pie in the enormous mobile ecosystem. In this eye-opening session, we’re going to first look at the overall market and importance of the mobile space, and then we’re going to jump into market shares of the four big mobile platforms; iOS, Android, Windows Phone 7, and Blackberry. In doing so, we’re going to examine the value chain and ecosystem that has built up around each of these platforms and see where money is being spent, and where money is to be made. This session offers some surprising insights and is a must for both existing mobile developers and people considering breaking into mobile development.

Register for DevTeach

May 3rd Xamarin Seminar on Xamarin.Mobile postponed

Sadly, the May 3rd seminar on Xamarin.Mobile will need to be postponed due to Mike Bluestein not being able to talk due to a dental issue. The other two May seminars will go ahead as planned and we will have the Xamarin.Mobile seminar as the first seminar of our June Xamarin Seminars.

Sorry for the short notice, we wish Mike a swift recovery and hope to see you on May 17th for the Getting Started on Mono for Android Seminar, register now: http://bit.ly/xam-may-seminars

Thanks,

ChrisNTR

Android Ported to C#

Oracle and Google are currently in a $1 billion wrestling match over Google’s use of Java in Android.

But Java is not the only way to build native apps on Android. In fact, it’s not even the best way: we have been offering C# to Android developers as a high-performance, low-battery consuming alternative to Java. Our platform, Mono, is an open source implementation of the .NET framework that allows developers to write their code using C# while running on top of the Java-powered operating system, and then share that same code with iOS and Windows Phone.

Unlike Sun with Java, Microsoft submitted C# and the .NET VM for standardization to ECMA and saw those standards graduated all the way to ISO strong patent commitments. The .NET framework is also covered by Microsoft’s legally binding community promise.

Last July when Xamarin was getting started, we got our team together in Boston to plan the evolution of Mono on iOS and Android. After a day of kayaking in the Charles River, we sat down to dinner and turned our attention to how we could improve the performance and battery life of applications on Android, and make our own Mono for Android even better.

The Xamarin team after a day of Kayaking, back when we were a small company

Over and over we came back to the basics: Dalvik is a young virtual machine, it is not as performant or tuned as Mono and suffers from many of Java’s performance limitations without the benefit of the high-end optimizations from Oracle’s HotSpot. One crazy idea that the team had at that dinner was to translate Android’s source code to C#. Android would benefit from C# performance features like structures, P/Invoke, real generics and our more mature runtime.

Although nothing happened back in July, this idea stuck in the back of our minds.

Fast forward a few months: Mono for Android is doing great, and we are starting to think again about improving our own product’s performance on Android. What if we could swap out Java with faster C# and get rid of various Dalvik limitations in the process? Could we create an Android phone completely free of Java, and free of the limitations of the Dalvik VM?

We decided it was crazy enough to try. So we started a small skunkworks project with the goal of doing a machine translation of Android from Java to C#. We called this project XobotOS.

The XobotOS Research Project

The result of our efforts is that today we have most of Android’s layouts and controls entirely in C#. Here are some screenshots of XobotOS running on a Linux workstation, no Java involved:

Getting to this point required that the majority of the Android Java code be translated from Java to C#, so what you see above represents very significant progress. So how did we do it?

Java Translation via Sharpen

Android’s core codebase contains over a million lines of Java code, and we knew we wanted to be able to stay up to date with new releases of Android — in fact, we started with the Android 2.x source code back in 2011, and then upgraded XobotOS to Android 4.0 when Google open sourced Ice Cream Sandwich earlier this year. So for us, the only reasonable option was to do a machine translation of Java to C#, building and maintaining any necessary tools along the way.

The tool we used as a starting point is called Sharpen. Sharpen is famous for helping people such as Frank Krueger port a Java applet to an award-winning iPad app in two months.

We matured Sharpen a lot, and the result is a much-improved Java-to-C# translation tool for everyone. We are releasing this new version of Sharpen today along with the code for XobotOS and we hope that many more people will benefit from it and contribute to it.

Performance

So once you have Android running on Mono, the obvious question is — how does Mono perform compared to Dalvik?
So once you have Android running on Mono, the obvious question is — how does Mono perform compared to Dalvik?

When C# came around, Microsoft modified the language in a couple of significant ways that made it easier to optimize. Value types were introduced to allow small objects to have low overheads and virtual methods were made opt-in, instead of opt-out which made for simpler VMs. Later on, Java and C# diverged in the way that they implemented generics. Java went with a full-backwards compatibility approach, while C# baked the support into the runtime. The C# approach led to a simple-to-use, simple-to-understand generics setup as well as being much more performant and complete.

Since then, both the language and the execution environment have continued to evolve and improve. C# went from being a slightly better Java to be light-years ahead. From embracing dynamic programming, bring asynchronicity into the language, introduce iterators, functional programming constructs, embrace parallelism and got a great implementation of generics. Many of the these features came from the research done by Don Syme and his F# team that have kept a steady flow of new ideas getting injected into the language.

Furthermore, Mono as a virtual machine has matured substantially in the last 10 years and is now considered to be on its 8th generation.

All of this adds up. You can see the massive difference in the performance of structs and generics in this benchmark we ran of a simple binary tree implementation in Java and C#:

 

What’s Next

Today we’re proud to announce that we’ve made XobotOS available on github so that you can try it out yourself.

Our goal as a company is to provide the best platform for building mobile apps, and so XobotOS will not be a focus for us going forward. But it was a fun experiment to run, and as it turns out, a few technologies have come out of the effort that we’ll be able to include in future versions of our products:

Direct Graphics Access to Skia: Currently Mono for Android accesses the underlying graphics libraries through Java, with the code that we built for XobotOS, we will skip the middleman and use Mono’s P/Invoke to get straight to the native rendering code in Skia.

Java to C# tooling: Our new version of Sharpen is available as part of our XobotOS release.

Replacing Java code with C# code we now have the tools necessary to replace some chunks of Java code with C# code where performance is critical and when C# can offer better solutions than Java has. Our plan is to take elements of the research project and integrate those into our products.

A project that we started because we thought it would be fun to do has turned out to yield some serious benefits for our products. It’s important for a startup to stay focused, but sometimes you have to try something crazy to make progress. And who knows, maybe Google will thank us some day :-) .

Xamarin is hiring for many positions to advance the state of the art in mobile development.

Register for the May Xamarin Seminars

Xaminar Logo

May is going to deliver a bumper crop of Xamarin Seminars, as we have three seminars lined up covering topics on getting started with the Xamarin tools and the Xamarin Mobile APIs:

  • Thursday 3rd May 2012 at 11am EDT – Xamarin.Mobile, Accessing Unified Cross-platform Features with Mike Bluestein
  • Thursday 17th May 2012 at 11am EDT – Getting Started using Mono for Android with Mike Bluestein
  • Thursday 31st May 2012 at 11am EDT – Getting Started using MonoTouch with Mike Bluestein

Registration is open for the May Xamarin Seminars via GoToWebinar. You’ll get an automated reminder the day before and an hour before the event to make sure you don’t miss a moment.

See you all there,

ChrisNTR

Cross-platform Mobile Development Seminar

Last week we were lucky enough to have our second community speaker, Greg Shackles, present his Xamarin Seminar on Cross-platform Mobile Development with C# and .NET. Greg walks us through the different approaches to developing native applications using C# and .NET for iOS, Android and Windows Phone 7, and highlights the key things to look out for when targeting these three platforms. You can view the full seminar below:

As always, you can view the slides in the Xamarin Channel in SlideShare:



In the next few days, we’ll be announcing our May line-up on the Xamarin Seminars site and on our blog, so be sure to look out for that.

Enjoy,

ChrisNTR

Overview of MonoGame Seminar

MonoGame Logo

On April 5th, we had Dean Ellis, a core developer on the MonoGame project, as the first Xamarin Seminar speaker from our community. Dean gives us an overview of MonoGame, including how you can create your own games for MonoTouch and Mono for Android (as well as Windows, Mac OS X and Linux) while taking advantage of existing XNA knowledge. You can view the full seminar below:

As always, you can view the slides in the Xamarin Channel in SlideShare:



The next seminar is on April 19th at 11am EDT with Greg Shackles, fresh from writing his soon-to-be-published O’Reilly book, “Mobile Development with C#”. Greg will show us cross-platform approaches to developing native applications using C# and .NET for iOS, Android and Windows Phone 7. Register now!

Don’t forget: We are now putting up the meeting registration link and all our previous seminars up on the Xamarin Seminars site, http://xamarin.com/seminars

ChrisNTR

Mono for Android 4.1

We have been working on various major upgrades to Mono for Android, and today we are releasing it to users in the updater’s Alpha Release Channel.

These are some of the highlights of this release:

  • Java Bindings: we now have a project type that you can use to bind third-party Java libraries
  • Android Compatibility Library bindings: now you can use the compatibility libraries that allow developers to use new Android APIs on older devices.
  • Strongly-typed APIs: we improved upon the Java bindings by providing strongly typed enumeration values, reducing the amount of guesswork required when using Android APIs and letting the IDE do the work for you.
  • C# dynamic is now supported on Android
  • Extended our Java interop story: it is now easier to expose C# APIs to the Java world

Other features include:

  • Smaller development runtime (50% smaller)
  • Device picker in Visual Studio (for those of you testing/deploying to multiple Android devices)
  • New templates for Honeycomb, Ice Cream Sandwich and Android Fragments
  • Usability fixes to our Visual Studio plugin.

Check the release notes for all the other features and the details on the above features.

 

MonoDevelop Updates

With the New Release of MonoDevelop we continue to focus our attention to stability and reliability in MonoDevelop. There are updates for iOS and Android development and continued improvements to the debugger.

On Mac, we also released a new Mono package that contains an upgraded version of Gtk+ with hundreds of improvements specifically to improve the stability and performance on MacOS X. For months we have been working closely with the Gtk+ experts at Lanedo, an open-source consultancy company, to implement these improvements and contribute them back to Gtk+. The changes are extensive and touch fundamental parts of the UI engine, so we made them available for testing in the Mono betas for several months to ensure the best experience for the stable release.

Many notable Mac-specific issues in MonoDevelop have been fixed by these changes, in particular:

  • The UI no longer enters a state where it stops responding to mouse clicks
  • All but one known crasher bugs have been fixed (the other one will be fixed soon)
  • Scrolling with the trackpad or magic mouse is now smooth and gorgeous
  • Keyboard shortcuts with the Opt/Alt modifier work reliably
  • Built-in keyboard shortcuts in Gtk+ widgets now work
  • Many international keyboard layouts are supported better
  • Font rendering now supports fallbacks, so all characters can be rendered regardless of the font

Both MonoDevelop and Mono are now available as updates on Xamarin’s updater stable channel.