PhaultLines

My experience at Xamarin Evolve 2013

Earlier this month, Xamarin hosted its first-ever developer conference. The event, called Xamarin Evolve 2013, exceeded all expectations. It offered a great mix of high-quality technical content, fun social activities, good networking opportunities, and plenty of time for the usual hallway banter that tends to create the most valuable discussions at technical conferences.

Xamarin Evolve 2013 Screen

Xamarin Evolve 2013 ran for four days, including two days of training and two days of conference sessions. There was a ton of energy and enthusiasm during all four days. The tickets completely sold out in the weeks leading up to the event, so we had a massive audience of 600 attendees.

Training

Bryan Costanich and his team put together an amazing training program with an enormous amount of material. I sat in as an assistant on the beginner training during the first day and the advanced training on the second day. Both tracks were outstanding, with great content and excellent presentations.

I particularly liked Nina Vyedin’s advanced training session about app backgrounding. It was an entertaining and well-delivered presentation that genuinely improved my understanding of the subject matter. The application lifecycle is very different on mobile platforms and there are many constraints that aren’t intuitively obvious. It’s an area where some expert training goes a long way, offering useful insights that can help developers materially improve their applications.

The advanced training was exactly the right level for me. I can build applications with Xamarin, but I don’t always fully understand what’s happening under the hood. The segments of advanced training that I attended filled in some of the gaps for me, leaving me with a higher level of confidence in my familiarity with the Xamarin platform.

I’m really looking forward to seeing the rest of the advanced training sessions when the video recordings are finally published. I’m also thrilled with all of the in-depth text resources that the documentation team produced to accompany the training sessions—there’s so much material that it practically constitutes a book.

Keynote

Nat and Miguel Xamarin Evolve 2013 Keynote

The conference segment of the event was a lot of fun. The highlight was definitely the opening keynote, which featured some really exciting announcements about new Xamarin products.

The audience was totally ecstatic, hanging on every word and applauding enthusiastically for all of the news. The keynote produced such tremendous social media buzz that it propelled Xamarin into Twitter’s trending topics. The following is a summary of the major announcements:

  • Building Xamarin apps with F#: Due to work driven by the F# community, it’s now possible to build native iOS and Android apps with F# and Xamarin. F# melds the best qualities of functional and object-oriented programming paradigms, offering a high level of productivity and expressive syntax.
  • Xamarin adopting Mono 3.0: Xamarin’s products are being updated to run on top of Mono 3.0, which supports the latest features of the C# programming language and .NET runtime. With full support for .NET 4.5 and C# 5, Xamarin developers will be able to take advantage of modern capabilities like the new async and await keywords.
  • iOS Designer for Xamarin Studio: Xamarin has built a new visual design tool for creating iOS user interfaces. It integrates seamlessly with Xamarin Studio, enabling drag-and-drop iOS design and development in a unified environment. Developers who build iOS apps with Xamarin no longer have to rely on Xcode to create their user interface layouts.
  • Xamarin Test Cloud: Xamarin is introducing a completely new product that will greatly simplify automated user interface testing for mobile developers. The Xamarin Test Cloud is a hosted environment that will run an application on hundreds of real mobile devices—making it easy for developers to identify cases where their app isn’t working as expected.

I’m especially excited about the new iOS designer, which will make iOS development with Xamarin much more seamless. The tool has some extraordinary capabilities that make it even better than Xcode, including the ability to render custom controls in the design view.

It’s almost magical—a custom user interface control that uses platform drawing APIs to paint itself will look exactly as expected when you drag it out onto the design surface. When Miguel demonstrated that particular feature during the keynote, I couldn’t wait to try it for myself with some of the custom widgets that I’ve created recently with PaintCode.

Xamarin Studio iOS Designer

Another really great characteristic of the new iOS designer in Xamarin Studio is that it papers over annoying iOS idiosyncrasies like outlets, supporting a more intuitive and familiar approach to mobile development. When you want to implement the behavior of a button press event, for example, you just double-click the button in the designer and it will generate a corresponding method in your code.

The new iOS designer isn’t quite ready for production use yet, but it was released into the Xamarin alpha update channel for the benefit of users who want to put it to the test. I’ve spent some time experimenting with its features and I’m looking forward to writing about it more extensively for the Xamarin blog. The alpha update channel will also give you the new Mono 3.0 hotness, including async/await.

My talk

Xamarin Evolve 2013 had an amazing lineup of speakers who presented on a wide range of interesting topics. I had the great privilege of being among the presenters. I gave a talk about hybrid development with Xamarin, discussing the value of using HTML to display content in native applications.
<div class="aligncenter">Hybrid App Talk Slide</div>
During my talk, I demoed an application called Razordex that I built for iOS. Razordex displays the names of the all the Pokemon in a native list view. When the user taps a Pokemon in the list, the application will display detailed information about that Pokemon in an embedded UIWebView.

The Pokemon data is all pulled from an embedded SQLite database inside of the application using SQLite-NET. The HTML content for the detail view is generated on the device at runtime using a Razor template that is compiled into the application. Razor is a template engine that Microsoft originally developed for ASP.NET applications, but it’s possible to use Razor for stand-alone templating inside of a mobile Xamarin application.
<div class="aligncenter">Razordex</div>
During my talk, I also discussed several approaches to facilitating communication between the native and HTML portions of a hybrid application. I showed how to expose a native C# class into JavaScript on Android and demonstrated techniques for intercepting link handlers. I also showed how to call into JavaScript from C# code, explaining how to manipulate the page DOM from outside of the HTML content.

The video of the talk will eventually be available for people to watch online. I’ve also published the full source code of the Razordex demo on GitHub for people to see. You can also download my slide deck, which includes the code for facilitating communication between C# and HTML content.

Scott Hanselman’s talk

Hanselman at Evolve

Although preparing for my talk and fulfilling various Xamarin responsibilities kept me very busy during Xamarin Evolve 2013, I still had time to enjoy the event. Scott Hanselman’s talk was particularly entertaining and fun.

Scott showed an app that he built to control a Logitech webcam at his office from his smartphone. The app uses the amazing SignalR framework and relays commands through a server-side application hosted on Microsoft’s Azure cloud platform.

To get the demo app running on Xamarin, Scott worked with Greg Shackles, a talented member of the Xamarin community who has a lot of experience with SignalR on Xamarin. After Greg and Scott collaborated on the demo, David Fowler of the SignalR project accepted Greg’s patches upstream—meaning that SignalR client libraries will soon work out of the box on Xamarin.

The impressive demo inspired me to learn more about SignalR. I’ve started working with the framework myself and plan to use it for an open source software project. I’m very excited about its capabilities and the innovation that real-time communication can unlock in mobile applications.

Mini Hacks and the Darwin Lounge

Evolve 2013 Darwin Lounge

At Xamarin Evolve 2013, we had a special area called the Darwin Lounge that conference attendees could use to hang out, hack on code, and enjoy some conversation between and after sessions. It was a really awesome space with lots of room to sit and lots of fun nerd toys—including 3D printers, a quadrocopter, and a bunch of cool robots.

One of the activities that we put together for the Darwin Lounge was the Mini Hack contest—a series of simple Xamarin programming challenges that developers could complete at their own pace. Each challenge involved specific platform APIs or popular third-party libraries. Participants earned a sticker for each hack they completed. Developers who completed four hacks got a special prize.

I worked on the Mini Hacks with Andrew Way, one of my colleagues at Xamarin. We created the challenges, drafted the instructions, and wrote the sample project code. It was a lot of fun to create, but it was even more fun to watch people complete the challenges. Although the contest is over, you can still check out the Mini Hacks repository on GitHub if you’d like to try the challenges yourself.

Conclusion

Evolve 2013 Monkey With Badges

Xamarin Evolve 2013 was amazing—every aspect was fantastic, from start to finish. Jo Ann Buckner, Bryan Costanich, and everyone else at Xamarin who poured their souls into the conference deserve tremendous appreciation for making it a magical experience.

There were so many amazing things packed into the four days of the conference that I couldn’t possibly hope to capture it all in this blog post. Fortunately, smartphones and social media ensure that practically all of the most memorable moments are captured for posterity.

I used Storify to capture a lot of the photos and status updates that people posted during the event. You can get a sense of what the event was like by visiting the Xamarin page on the Storify website. I also wrote a liveblog of the opening keynote, which you can see at the Xamarin website.

Several attendees wrote their own blog posts about the conference, which you can read for other perspectives. Roy Cornelissen, who blogged every day of the event, has some great photos and highlights. Chris Miller’s blog post is another great roundup that conveys the ethos of the conference. I also really liked Matt Hidinger’s blog post, which beautifully articulates the reasons why Xamarin is exciting for Windows developers.

During the closing session of the conference, Xamarin CEO Nat Friedman announced that we’re planning to do another Evolve conference in 2014. That’s going to give me something to look forward to all year.