Disclaimer: this is an automatic aggregator which pulls feeds and comments from many blogs of contributors that have contributed to the Mono project. The contents of these blog entries do not necessarily reflect Xamarin's position.

October 2

In the Labs: Custom Build Configurations

“In the Labs” is a series of blog posts that put focus on features that have been prototyped internally but are experimental in nature and are not guaranteed to be included in Unity.

In this issue of “In the Labs” we’ll have a look at an experimental feature that introduces user-defined custom build configurations. The idea is that custom defined build configurations replace the fixed set of target platforms, and the things you used to be able to specify per target platform can be specified per build configuration instead.

This way it’s possible to specify more than one build configuration for the same platform; for example one for iPhone and one for iPad, or one for regular desktop builds and one for Steam builds. These are not built-in options to choose from; rather each build configuration is defined and named by the user and there is no limit to the number of them.


Current build window to the left and prototyped build window to the right.

Support for inheritance

The custom build configurations support inheritance. One build configuration can inherit from another and only override select player settings.

This means it’s possible to define custom abstract parent build configurations, for example one shared by all builds for touch devices. All player settings common to these builds can be defined there once and for all instead of having to be duplicated for each build configuration.

Build configurations can either be for a specific platform (e.g. iOS) or be abstract. To keep inheritance rules simple, only abstract build configurations can have child build configurations.

Player settings integrated into build window

For each custom build configurations it’s possible to specify specific player settings. As part of making the player settings be per build configuration rather than per platform, the feature also includes the player settings inside the build window.

The build window and player settings always had a special connection apparent from the button in the build window to open the player settings, and the new build window takes it a logical step further and includes them directly in the same window. The new build window shows the build configuration tree as a replacement for the Platform list, and has tabs for Build Settings, Player Settings, and Scenes in the build, for each build configuration. Like player settings, each build configuration can also override (or not) the list of scenes that are included in the build.

Texture overrides

In Unity it’s currently possibly to specify per-platform overrides in a texture, where the texture max-size or format can be overridden for certain platforms if desired. While not yet implemented in our experimental prototype, custom build configurations would provide the ability to specify these overrides per build configuration instead.  This would allow for example for a custom iPad build configuration to specify a higher max-texture sizes than in the abstract parent Touch Devices build configurations. Naturally each override is still optional.

Build config defines

Unity includes the ability to write code that’s only compiled for certain platforms using platform defines. Another feature that’s not prototyped yet, but has powerful potentials, is the use of build config defines, so each custom build configuration can have associated code that only applies for that configuration.

Simple defaults

By default when creating a new project, a set of build configurations are created out of the box. One configuration is created for each platform, and they all inherit from a common base build configuration. This means that the workflow can be just as simple as it is currently in Unity, and the extra flexibility (and complexity) that build configurations offer is entirely optional.

If you had access to custom build configurations, what would you use them for that you can’t do today? Or what workflows would become simpler for you?

October 1

Xamarin Evolve 2014 Speaker Spotlight: Frank Krueger

This is the ninth post in our Xamarin Evolve 2014 “Speaker Spotlight” series, helping you get to know a little bit more about some of the amazing speakers who will be contributing at this year’s conference.

Frank A. KruegerToday’s post highlights Frank A. Krueger. Frank has been programming professionally for 16 years and has enjoyed the last 6 years doing independent development for iOS and other mobile platforms. As an early adopter of Xamarin.iOS, he has also enjoyed being a member of the Mono community and does his best to share what knowledge he has gained. He lives and works in Seattle and can be found up a mountain off of Exit 34.

Why did you get into software development?

I have control issues? Commanding a subservient to form a world of my choosing feeds into my ego?

But let’s go with the simpler one: graphics. When I was a kid I loved using the computer for drawing, then 3D graphics, then gaming. Eventually I learned to program so that I could write new drawing programs. It just stuck to me at an early age. I even went to college as an EE, not CS, because I was worried about taking an obsession too far.

What are your favorite mobile apps right now?

I love single screen, touch-centric apps:

  • Clear – I run my life from this app. It has a refined UI around a task. It’s a touch centric UI. And it’s playful and reliable at the same time.
  • Glympse – solves a real problem with an OK UI. It’s great that it’s cross platform (web too). Very, very close to a good UI.

What is your favorite line of code that you have ever written?

While I have indeed reached the peak of awesomeness that this question alludes to, I was not able to do it in just one line of code. I refer you then, dear inquisitor, to the concept of architecture and the interplay of objects. I have designs there that Apollo would find sufficient.

That said, I wrote this F# match pattern, and deemed it good:

| Some(Vertex), Some(Edge(ubc)), None ->

What are you doing when you’re not doing mobile development with Xamarin?

What? There are other things to do? Hiking – I’m doing Kilimanjaro a couple weeks before Evolve. Robotics – I am an EE after all. Music – I pretend to play a bunch of instruments and enjoy doing so when no one is listening

What are you looking forward to most at this years Evolve?

Seeing my old friends from the Mono community. I have been going to Mono/Xamarin conferences for about 5 years and really enjoy seeing my online friends.

What will attendees get out of your talk?

A reminder of all the mobile-only or mobile-distinguished features that we can put into our apps. A lot of people are just writing “websites in app form.” AR apps use the sensors, the camera, the 3D hardware – all things that are unique to mobile apps and that make them particularly pleasurable to code for.

If you missed the earlier posts in this series, click through to read about Jesse LibertyJon SkeetJonathan PeppersLaurent BugnionPaul BettsRachel ReeseBrent Schooley, and Joe Mayo.

Markdown Style Guide

Markdown is as a file format for easily producing text that can be pleasantly read both on the web and while using command line tools, or plain text editors.

Recently, a crop of tools have emerged that deliver some form of WYSIWYG or side-by-side authoring tools to assist writers to visualize the final output as they work.

Authors are turning to these tools to produce documentation that looks good when authoring the document, yet the tools are not true to the spirit and goals of markdown. And in some cases, authors are not familiar with the essence of what makes markdown great, nor the philosophy behind it:

Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.

Using these editors is the modern equivalent of using Microsoft Word to produce HTML documentation.

The generated markdown files very easy to produce, but are not suitable for human consumption. They likely violate a number of international treaties and probably will be banned by the EU.

This short post is a set of simple rules to improve your markdown.

They will help you deliver delight to all of your users, not just those using a web browser, but also those casually reading your documentation with a file manager, their console, and most importantly, potential contributors and copy editors that have to interact with your text.

Wrap Your Text

The ideal reading length for reading prose with a monospaced font is somewhere between 72 and 78 characters.

This is text snippet is from Mark Twain's Adventures of Tom Sawyer, with text wrapped around column 72, when reading in an 80x25 console:

It wont matter if you are using a larger console, the text will still be pleasant to read.

But if you use some of these markdown editors that do not bother wrapping your text, this is what the user would get:

And this is what is more likely to happen, with big consoles on big displays:

There is a reason why most web sites set a maximum width for the places where text will be displayed. It is just too obnoxious to read otherwise.

Many text editors have the ability of reformatting text your text when you make changes.

This is how you can fill your text in some common editors:

  • Emacs: Alt-Q will reformat your paragraph.
  • Vim: "V" (to start selection) then "gq" will reformat your selection.
  • TextMate: Control-Q.

Considering Using Two Spaces After a Period

When reading text on the console, using two spaces after a period makes it easier to see where phrases end and start.

While there is some debate as to the righteouness of one vs two spaces in the word of advanced typography these do not apply to markdown text. When markdown is rendered into HTML, the browser will ignore the two spaces and turn it into one, but you will give your users the extra visual cues that they need when reading text.

If you are interested in the topic, check these posts by Heraclitean River and DitchWalk.

Sample Code

For small code snippets, it is best if you just indent your code with spaces, as this will make your console experience more pleasant to use.

Recently many tools started delimiting code with the "```". While this has its place in large chunks of text, for small snippets, it is the visual equivalent of being punched in the face.

Try to punch your readers in the face only when absolutely necessary.


Unless you have plans to use multiple-nested level of headers, use the underline syntax for your headers, as this is visually very easy to scan when reading on a console.

That is, use:

Chapter Four: Which iPhone 6 is Right For You.

In the previous chapter we established the requirement to buy iPhones
in packs of six.  Now you must choose just whether you are going to go
for an apologetically aluminum case, or an unapologetically plastic

Instead of the Atx-style headers:

# Chapter Four: Which iPhone 6 is Right For You.

The second style can easily drown in a body of text, and can not help as a visual aid to see where new sections start.


While markdown allows you to only set the first character for a blockquote, like this:

> his is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.

Editors like Emacs, can reformat that text just fine, all you have to do is set the "Fill Prefix", by positioning your cursor after the "> " and use Control-x ., then you can use the regular fill command: Alt-Q, and this will produce:

> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
> consectetuer adipiscing elit. Aliquam hendrerit mi posuere
> lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet
> vitae, risus.


Again, while Markdown will happily allow you to write things like:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.

You should love your reader, and once again, if you are using something like Emacs, use the fill prefix to render the list like this instead:

*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
    viverra nec, fringilla in, laoreet vitae, risus.
*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
    Suspendisse id sem consectetuer libero luctus adipiscing.	

September 30

iPhone 6 and 6 Plus LaunchScreen.storyboard for Xamarin

Following on from the previous post about adding launch images for iPhone 6 and 6 Plus, here are the instructions for adding a LaunchScreen.storyboard file instead of multiple fixed-size images. Apple's documentation recommends this method over using the static images. I used these instructions for replacing launch images with storyboards as a reference.

Configuring a LaunchScreen like this will automatically scale up your app for iPhone 6 and iPhone 6 Plus devices. You might also want to consider adding @3x retina images for iPhone 6 Plus support.

1. Add a new Storyboard to your project and call it LaunchScreen.storyboard.

2. Drag a UIViewController in and design your launch screen. I chose a black background with some white centered text - it looks like this (use the VIEW AS option to preview in different sizes):
3. Open the iPhone application Project Options and scroll down to the iPhone Launch Images section. There is a new Launch Screen dropdown (currently in Beta) that will automatically be populated with the available storyboards and xibs in your project. Choose the storyboard you just added.
3a. This creates the following key in your Info.plist (just FYI):

4. When you build the app, appropriate launch images will be generated for your app. Here's a shot of the emulator starting up showing the launch image for iPhone 6:

I've updated my Xamarin.Forms Todo sample, the code and storyboard are available on github.

UPDATE: Gerry reminded me about Marco's experience where adding a LaunchImage.storyboard file causes iOS to ignore the UIDeviceFamily setting in Info.plist (which specifies iPhone/iPod, iPad, or Universal app) and upscale iPhone-only apps to full iPad screen size (potentially making your app look really weird!). This behavior still appears to occur on the simulator, so test before you launch :)

Video: A Quick Overview Of Xamarin Test Cloud

Xamarin Test Cloud LogoWe launched Xamarin Test Cloud last week and we’ve gotten a terrific response from customers and partners who are using it, including Dropbox, Flipboard, Trello, Expensify, Foursquare and eBay Classified. The benefits of easily testing apps on hundreds of real devices include better app ratings and adoption as well as a much faster release process. This is especially true when you consider how quickly the device landscape changes and the resource and time investment it takes for a business to keep up with the latest devices. Fortunately we take care of that for you—Xamarin Test Cloud has over 1,000 devices, including iOS 8 and Android L smartphones and tablets.

I had the opportunity to record this interview with Karl Krukow, the technical lead for Xamarin Test Cloud. Karl shows us how to performs tests on Xamarin-hosted devices and reports results, as well use the interactive shell (or REPL) to query UI elements on mobile devices. In this video Karl authors mobile tests utilizing Calabash and C# using the popular NUnit testing framework, but you can also author tests in Ruby. Watch it in HD and full-screen to see the code and test results.

Learn More & Get Started

To learn more about Xamarin Test Cloud, visit the product page, or check out our developer documentation.

There are new features we’ll be unveiling at Xamarin Evolve 2014 next week, so watch the live streamed keynote on Wednesday October 8th at 9:00 AM ET!

The hobbyist and the Asset Store – success with Stealth

Set yourself a goal. You have a year to make a game by working on your own in your spare time. How far can you get?

After 15 months, Nicolas Liatti, who works for Allegorithmic (the makers of Substance) as a COO, published his hobbyist game Stealth to the App Store with some success. He spent just 2-3 hours every day working on it.

“I learnt Unity by following the tutorials and, of course, I used Unity Answers. I know how to make a game, I know the basics, but I’d no knowledge of C# when I got my hands on Unity, and I’m not a programmer.”

You may have already guessed that Stealth is a stealth game. Nicolas grew up with Metal Gear Solid. He couldn’t find anything like it on mobile today, and wanted to try and prototype something to see what it would look like.

“Initially, I spent about 2-3 months refining the mechanics of the game, just using cubes as placeholders until I was satisfied. When I’d got it that far, I went to the Asset Store to find the art, music and animations I needed so I could make my game.”

In fact, almost all the assets in Nicolas’ game are taken straight from the Asset Store. Amongst other things, he used a Mixamo character for his protagonist and a few Manufactura K4 bundles for the environments.

“Creating a unified look and feel for the game was the challenge. I’m not an artist, so actually I didn’t touch the meshes at all. I just tweaked my shaders and, of course, I used Substance software on some of the textures. I’m very happy with the result. It cost me almost nothing to make the game. Around $500 on assets, and I had all I needed!”

In his professional life, Nicolas also uses the Asset Store for prototyping and to impress clients:

“I love Unity, and I think the Asset Store is one of the things that makes it great. For a few bucks you can make a prototype that looks really good. At Allegorithmic we’re making a small game for a client. We found the clothes and animations we needed for the prototype in the Asset Store, along with some other fantastic props. When they saw what we could pull off in just two days they said, fine go ahead and make it.”

Stealth has attracted some very positive reviews from AppSpy and Touch Arcade, drawing favourable comparisons with games that have much higher production values and mammoth budgets. The gamers who’ve left feedback on the App Store have also given it top marks.

Nicolas’ next step is to publish to Android and add Unity Everyplay game replays. “I just clicked the Android build option and the game worked. I’ve had to spend a couple of days adapting a few things, but it’s really not been a big deal.”

Best of luck Nicolas!

September 29

Top 5 Criteria For Evaluating Mobile Quality Solutions

PDF CoverWe know from working with Xamarin Test Cloud customers that coming up with a comprehensive mobile quality plan can be overwhelming.

To help you better understand what you should be looking for in a mobile quality solution, and how Xamarin Test Cloud stacks up against other solutions in the marketplace, we’ve created a handy PDF with 5 criteria to consider when evaluating mobile testing solutions. Enjoy!

Download PDF


Plan Your Days at Xamarin Evolve 2014 and Request Your One-on-One

The Xamarin Evolve 2014 schedule is now available online, including session times, so you can start planning your days at the conference.

Training sessions at Xamarin EvolveTraining attendees in the Fundamentals track will go through a progressive training program over 2 days that will result in your first Xamarin app. More experienced Xamarin developers will choose from the Electives topics, including Testing, Enterprise, Android, iOS and Xamarin.Forms. Training attendees will receive an email shortly to confirm their paths.Craig Dunn presenting at Xamarin Evolve 2013

During the 3 days of the conference, you’ll select from more than 60 sessions across 10 tracks, including Xamarin Platform, Cross-Platform, iOS, Android, Mobile Best Practices, Enterprise, Emerging Devices, Gaming, Testing, and Mobile Ecosystem.

In addition to publishing the schedule, we have also opened requests for one-on-one sessionsOne-on-one session at Xamarin Evolve 2013 with Xamarin engineers to review code, consult on architecture, and troubleshoot issues. Back by popular demand, this expert help was one of the most top-rated features of Xamarin Evolve 2013. We are looking forward to meeting and helping even more of you.

Check out the newly updated website now to start planning your schedule for Xamarin Evolve 2014, and don’t forget to register for a one-on-one session with a Xamarin expert!

September 26

Xamarin Evolve 2014 Speaker Spotlight: Joe Mayo

This is the eighth post in our Xamarin Evolve 2014 “Speaker Spotlight” series, helping you get to know a little bit more about some of the amazing speakers who will be contributing at this year’s conference.

Photo of Joe MayoToday, we’re getting to know Joe Mayo, an author, consultant, and instructor who specializes in Microsoft and Xamarin technologies. He has been using C# since it was first announced in July 2000 and his 6 books are all on .NET topics. For his community contributions, Microsoft has honored Joe with 10 MVP awards over the years.

How long have you been doing mobile development?

A couple of years. Or maybe several years, counting back to all the times I wanted to throw my computer across the room.

What is your favorite platform to develop for and why?

Anywhere I can use C#, whether that be .NET or Mono. I’m very excited with the direction that Xamarin is taking mobile development, and have a great time using their products.

What are your favorite open source libraries?

LINQ to Twitter. Yes, I’m biased because it’s my project. There’s a great deal of satisfaction in knowing that I’ve helped so many developers write Twitter apps and maybe made a few folks smile, because it’s funny.

What are you doing when you’re not doing mobile development with Xamarin?

Working on my open-source project, LINQ to Twitter, writing, speaking, or learning something new.

What devices are you carrying around with you right now?

Nokia Lumia 822 with Windows Phone 8.1 dev update. There’s also a Kindle Fire within reach that’s loaded with a Xamarin.Android app I’m writing for a customer, and a Google Glass which is always a good time for coding and exploring.

What will attendees get out of your talk?

How easy async is to use, and the natural benefits of using it with mobile apps. You will <3 async.

If you missed the earlier posts in this series, click through to read about Jesse LibertyJon SkeetJonathan PeppersLaurent BugnionPaul BettsRachel Reese, and Brent Schooley.

September 25

Is the iOS Unified API for me?

We recently shipped the Unified API for Xamarin.iOS. The Unified API is a huge step forward for Xamarin.iOS, allowing a single source code to produce both 32 and 64-bit iOS Applications, a more streamlined and consistent API, and a much better story for sharing code with Xamarin.Mac applications.

64-bit iOS apps, which until recently could only be run on the most recent devices (iPhone 5s, iPad Air, and iPad Mini Retina), can now also run on the iPhone 6 and iPhone 6 Plus. This is fantastic news, but before you convert your apps to the Unified API, there are a couple of important things to consider, as the Xamarin toolchain matures to match the API.

As of today, the most compelling reason to switch to the Unified API is if you want to create app extensions, which requires developers to produce both 32 and 64-bit binaries to Apple. You can create a new application project using the Unified API or you can follow these instructions to update an existing Xamarin.iOS app.

There are currently some limitations on apps using the Unified API which I’ve outlined below:


Unfortunately, existing Xamarin.iOS components need to be re-built against the Unified API, so while we (and the community) are working to update the component code, you will not be able to include these in your app. A workaround for open-source projects is to download and compile the code yourself as part of your Unified API project.

NuGet Support

NuGet will support Unified packages starting with version 2.8.3, a new build is now available at CodePlex.

Custom Control Designer Support

Our designer currently does not have the ability to render your custom controls in the editing surface when you use the Unified API. We are working on this.

Moving Forward

Xamarin is prioritizing updating our components so that you can start using them in your Unified API iOS apps, as well as updating the iOS Designer custom control renderer.

Our recommendation therefore is this: if you don’t need to utilize the App Extensions framework today, hold off on moving to our preview Unified API until the toolchain and components have caught up.


Xamarin Evolve 2014 is Officially Sold Out!

Xamarin Evolve 2014 banner with dates (October 6-10) and location (Atlanta, Georgia)Xamarin Evolve has sold out for the second year in a row, this year at twice the attendees—over 1,200—and with an additional day of conference sessions.

Those of you who can’t make it to Atlanta will be able to experience part of the conference with us. Live stream of the main stage at Xamarin Evolve 2014 will begin with the Keynote on Wednesday, October 8th at 9 am ET on the conference website. We will continue to stream the main stage sessions for the remainder of the conference.

Many thanks to our speakers and sponsors who are helping make this an unforgettable event. And thanks to our incredible developer community – we can’t wait to delight you at Xamarin Evolve 2014.

See you in 11 days!

The new QA mini site

Today we have launched a new section on the Unity3d.com site dedicated to the work and happenings in QA. We have long been writing blog posts and releasing different parts of our work where we could, but the time has come to make a space for all of it.

The QA mini site is a one stop place for our blogs, our public test suites, the Unity Test Tools and the patch releases. You will be able to keep yourself up to date on all things related to test and QA on these pages.

The Unity Test Tools page will give you links to the package, documentation and example projects for the tools. With those you will be able to both get the latest updates for the package itself, as well as getting resources to help and inspire you with utilizing them.

Our public test suites is currently a package containing our runtime test automation for Android, but we will release them for other platforms as they become available. It is a suite of tests we share with everyone who is interested in running the Unity test suites on their own devices. The main purpose is to share them with our partners who are actively developing OS or devices, such as Google running it on Android development, but anyone can pick them up here. Documentation and new releases will be available on the QA mini site. You can even get an RSS feed from the site to keep up with the patches we send out.

We have also decided to enroll the patch releases coming from the sustained engineering team on the QA mini site. Those patches are all about fixing bugs, so they do have a tight relation to what we do. All the releases coming from them will be available here and you will be able to subscribe to an RSS feed from this site.

Finally we have a page dedicated to the bug reporter. We have so many reports coming that we have to prioritize them according to how good our chances are of reproducing them, so we have an FAQ for our users. We hope it will help you to help us to help you.

With all that said, go check out the site and give us feedback: http://unity3d.com/unity/qa.

September 24

Animated cats delivered to your phone using Twilio MMS

Twilio launched MMS last week on all of its US and Canada phone numbers. A variety of hacks were unleashed by myself and other members of the evangelism team (if you haven't checked out the Mustached Messaging Service, you really need to 'stash yourself).

One of the hacks I put together (animated cats via MMS) is actually so easy to build that I wanted to show you how I put it together so that you can get started with your own MMS hacks! If you want to see the cat gif hack on your phone, send "cats" to (484)483-2287.

I'm super stoked to see what you build so make sure to email me at brent@twilio.com or hit me up on Twitter @brentschooley with your MMS creations. For now, let me show you how to stitch this hack together and send animated cat gifs to your phone via MMS.

(This project is available on Github)

The setup

What you'll need to make this work is a Twilio account (create one here) with an MMS-enabled number and a Sinatra server with the twilio-ruby gem installed. You can install Sinatra and twilio-ruby by punching the following lines into the terminal:

With those pieces in place, all we need to do is create a file to hold our server code. Run this in terminal:

The code

I promised this would be quick and easy so I'm just going to drop this code here:

This code uses the wonderfully simple API known as The Cat API to generate a random animated cat gif. This URL is passed as the Media URL for the Response that will be sent back to Twilio when an incoming text message is received at your Twilio number. (Note: If you are not using a helper library and are just returning TwiML directly, you will need to properly escape the ampersands in the URL.)

Speaking of incoming messages, you'll need to set up your Twilio number to point at the server code you just wrote to handle those incoming texts. You can do that here. Click on your number and set the Messaging Request URL as shown below to point at the URL where you deployed your Sinatra server (I recommend Heroku - details here):

That's it! Send your Twilio number a text message and you should receive a random animated cat gif. Share this with all of your friends!

What's next?

I think sending a text message and getting back a cute little cat running around doing something hilarious is pretty rad. That being said, I'm really excited to see what you'll do with Twilio MMS! Please leave a comment on this post or email me at brent@twilio.com or find me on Twitter @brentschooley and share what you build.

Happy hacking!

Launch of Xamarin Test Cloud

Xamarin Test Cloud LogoToday we are proud to announce the public launch of Xamarin Test Cloud, with over 1,000 real devices available to help you build better apps, and ensure they work on each one.

The state of mobile testing today is primitive. Last month we ran a survey that found that nearly 80% of mobile developers are relying primarily on manual testing in their attempts to deliver great app experiences. And yet, more than 75% told us that the quality of their mobile apps is either “very important” or “mission critical.”

Continuous testing with Xamarin Test CloudWe created Xamarin Test Cloud to solve this problem. We believe that testing is not something you should do at the end of the development cycle, just before submitting to the app store. Instead, your app should be continuously tested during development in an automated, scalable way. Your developers should be writing user interface tests as they develop the app, and commits shouldn’t be merged until the tests pass.

Once you have an automated test suite, even a simple one, you can easily verify that your app works on the hundreds of device variants in use by your customers, before you ship the app to them.

Doing this on your own is expensive and difficult. It’s simply impractical for developers to purchase hundreds of devices themselves, manage a giant device library, ensure coverage with every test run, and merge test results from large-scale tests performed multiple times per day.

With Xamarin Test Cloud, you can create your own test scripts using our powerful testing framework, run them locally against emulators or devices, and then press a button to run the same tests on as many devices as you would like in the cloud. We even integrate with CI systems like Jenkins and TFS, so that your tests run automatically.

We know that Xamarin Test Cloud is the best mobile QA tool available on the market, with one of the most trusted support teams in the industry, and we are excited to make it available to all mobile teams today. But you don’t have to take our word for it – check out what other developers are saying below.

If you’re interested in learning more about Xamarin Test Cloud, I invite you to join me for a webinar on Tuesday, September 30th, at 10am PDT.

Register Now

“Xamarin Test Cloud helped us identify and fix critical device-specific issues in the latest release of Foursquare before we released.”

– Mike Singleton, Software Engineer at Foursquare

“Xamarin Test Cloud is our path to a low maintenance, high quality and regression-free future. Not only is the product strikingly effective, but the team has been amazing — with their help we’ve seen immediate value from our investment. We’re excited about where this can take our team and product.”

– Sean Beausoleil, Mailbox Engineering Lead at Dropbox

Flipboard Logo“As a QA Engineer, I am really enjoying Xamarin Test Cloud because it offers me a broad range of Android and iOS devices. It gives me the ability to have more test coverage and to discover issues sooner. And what’s particularly helpful is that Xamarin offers exceptional service and support that I can depend on every day.”

– Derrick Lam, QA Engineer at Flipboard

Expensify logo“Xamarin Test Cloud helps us ensure that critical features of Expensify look and perform great on every Android device imaginable.”

– Tom Jacobs, Software Engineer at Expensify

Trello Logo“Xamarin Test Cloud has helped us catch important bugs in challenging scenarios, and to ensure they never occur again.”

– Hamid Palo, Android Team Lead at Trello

ebay classified group logo“Xamarin’s Calabash framework, and their Xamarin Test Cloud, plays a fundamental role in our continued effort to maintain the highest possible quality of our products and also in securing a short time-to-market. Our test setup takes care of most of the tedious work doing regression tests and gives our team quick feedback, while helping us delivering new features at a fast predictive speed. Whenever we have encountered problems, the Xamarin service and support has been excellent.”

– Niels Frydenholm, Software Architect at eBay Classifieds

Unity Universal Cyberport Project — A Stepping Stone to Success in the Chinese Market

Right after Unite, we signed an agreement with the local government of the Putuo district of Shanghai that will create a lot of opportunities for indies in China and for international developers coming to this market. The Unity Cyberport Project will provide an incubator, an accelerator and a base for experiments of all kinds. We can’t wait to see the awesome games that come out of this cooperation!

The mobile games market in China has exploded in recent years, the scale of local user payment will be 20 billion RMB (around 3,26 billion USD) in 2014, according to estimates. The Putuo district in Western Shanghai is aiming to take full advantage of these opportunities and become the next Silicon Valley. And cooperation with Unity is of course part of that.

We signed the High Level Strategic Cooperation Agreement at the Unity head office in San Francisco on August 25th 2014 with Zhang Guohong, Governor-in-Chief of Putuo District People’s Government Shanghai, and a number of other representatives. During the meeting, Allen Foo, Unity’s Country Manager for the Greater China Region, talked about our progress in China and the Unity Cyberport Project. Liang Zhuanjian, General Manager of Shanghai Universal Software Park Co., explained incentives placed for developers that included tax and rent policies.


Unity Cyberport Project is different from traditional games industry technical bases. It will act as a comprehensive platform of engine research and development, game development, testing, operation, publishing, localization and related services, all connected with Unity. It will also support the expansion of interactive digital content into other industries, such as film and television, medical, travel, advertising, architecture etc. The exploration of AR and VR technologies is also one of the goals of the initiative.

The project will have three main parts: an incubator, an accelerator and Unity Awards Greater China. The incubator will provide select startup companies or ISV with launch funding, free office and other infrastructure, R&D guidance, technical support and commercial publishing. The accelerator project will create customized analysis for the incubated enterprises and help enterprises achieve healthy growth and earn profit. We’ll also hold Unity Awards Greater China Contest to evaluate games, inspire developers and introduce them to publishers.

Silicon Valley as the goal, Putuo district as the core, Unity Cyberport Project seeks to attract and cultivate talented developers by providing a great environment for technological and entrepreneurial innovation. With the assistance from the Putuo government, we can see that in three to five years, this technology park will become a leader in innovation and produce thriving and successful games made with the Unity Engine. More than 30 companies are already determined to join the project.

Thinking about joining too? Please send us (andrew@unity3d.com) your company info and your business plan in China, including why you’re interested in the Chinese market and what kind of business would you do here. We’ll discuss your plans internally and get in touch with you  for further discussions. If you’re picked, congratulations! You’ll be get a rent free office for 1.5 years and benefits on Putuo District tax rate.


Wear support in Moyeu

Final Setup

I just officially added Android Wear support in the shipped version of Moyeu, my Hubway (Boston’s bike sharing system) app for Android.

As usual, the code is available in my GitHub repository and you can grab it from Google Play.

It’s an example of what’s possible to achieve today with our Xamarin.Android Wear support and Google’s Wearable UI library. Feel free to reuse as you see fit.

September 23

Unity developers shine at Ludum Dare 30

The history of the Ludum Dare development contest arguably stretches back to the dawn of game jams.

The inaugural Ludum Dare took place way back in 2002, at the same time as the very term ‘game jam’ began to enter industry parlance. 12 years on and the 30th iteration has just drawn to a close, inspiring a remarkable spread of games.

Ludum Dare 30 saw the creation of 2538 titles, all around the theme of ‘Connected Worlds’. The event, which takes place across the world, was spilt into the newer ‘Jam’ element, which gives teams 72 hours to craft a game, and the original ‘Compo’, that demands a game from a sole developer in 48 hours. Both addressed the same theme.

And now developing has concluded, the votes are in, and the winners are decided, it’s time to look at some of the best entries made using Unity, including Compo winner Superdimensional.

Compo Highlights

Game: Superdimensional
Developer: PixelMind
Position: 1st
Platforms: Web, Windows, Linux
A stark, stylized spin on the puzzle-platformer, Superdimensional only wants you to use your mouse; and it isn’t too keen on the buttons either. In fact, you’ll rarely click or press a single one. Instead, you use the mouse to angle pools of light on the ever-advancing mostly spherical protagonist, exposing it to different parallel dimensions, helping it move through the world by hopping between overlapping realms. ‘Connected Worlds’, if you like. Superdimensional is short, sharp and captivating, and so pretty it’s hard to believe it was made in two days by a single developer.

Superdimensional by PixelMind

Play Superdimensional here.

Hello World
Developer: Rahazan
Position: Joint 6th
Platforms: Web
Hello World is a captivating game of maintaining communication channels between distant planets, seemingly to ensure cat videos are enjoyed on an intergalactic basis. It’s also a tremendously satisfying puzzle game of drawing lines between satellites and radio antenna, and just like Superdimensional, it hit’s the ‘Connected Worlds’ theme with absolute precision.

Hello World by Rahazan

Play Hello World here.

On the Edge of Earth: 5000
Developer: Hypnohustla
Position: Joint 12th
Platforms: Web
On the Edge of Earth: 5000 tells a tale of a lone astronaut deep in space, armed with a huge planet zapping laser. This laser, however, flushes dead planets with life, and the player’s is the task of completing a single mission. Effectively a micro adventure game, Hypnohustla’s game is incredibly polished and well crafted considering the timeframe of its creation, and filled with absurd machines to bewilder and delight.

Edge of Earth: 5000 by Hypnohustla

Play On the Edge of Earth: 5000 here.

I Must See You
Developer: Split82
Position: Joint 15th
Platforms: Web, Linux, Windows
There’s no denying that at a glance I must See You nods to the form of Unity-authored smash Hitman Go. But something is different here, for the player must guide not one, but two entities through an isometric grid puzzler. The twist? If line of site between the two is broken, movement of one is stopped dead. It’s an idea used to great effect, and while fleetingly brief, I Must See You has vast potential to be extended into a fully fledged game.

I Must See You by Split82

Play I Must See You here.

What Could Possibly Go Wrong?
Developer: Andrew Shouldice
Position: Joint 15th
Platforms: Web
A top-down run ‘n’ gun shooter in the classic form, What Could Possibly Go Wrong? tells the tale of a portal to distant worlds created by scientists, that lets creatures from across space and time pour through to Earth. It’s presented in chunky pixel art, and its title really does say it all. Shouldice’s creation is compelling and hilarious in equal parts, and deserves to be remembered long after Ludum Dare 30.

What Could Possibly Go Wrong? by Andrew Shouldice

Play What Could Possibly Go Wrong? here.

Jam Highlights

Game: This Little Piggy
Developer: InfectionTeam
Position: Joint 5th
Platforms: Web, Windows, Mac, Linux
This Little Piggy starts innocently enough, as a first person adventure, the protagonist scouring a small planet for the ingredients for a salad. Then a pig gets slaughtered for one last ingredient; bacon. That death causes a ripple through the dimensions, ringing alarm bell on a distant home world. Suddenly a portal to a opens in the game’s cheerful setting, and heavily armed swines from an alien planet pour through, turning a charming curio into an FPS that is particularly slick for 72 hours’ toil.

This Little Piggy by InfectionTeam

Play This Little Piggy here.

The Legend of Light
Developer: Yword
Position: 8th
Platforms: Web
The Yword team used Unity to create a visually splendid platformer in the 72 hours at their disposable. As well as the ability to leap through portals, The Legend of Light’s hero can alter the levels around it, moving whole sections of platforms and rotating entire areas in a way quite distinct from it’s contemporaries. Proof yet that there’s space for originality in the jostling puzzle-platformer space.

The Legend of Light by Yword

Play The Legend of Light here.

Binary System
Developer: rogueNoodle
Position: 12th
Platforms: Web, Windows, Mac, Linux
There’s a little flavour of arcade icon Asteroids to Binary System. Nothing wrong with that, but there’s plenty more to rogueNoodle’s creation too. It tells a tale of two planets locked in orbit together, tearing through space as one, avoiding impacts and gathering stars. It’s remarkably immediate and simple, and like all of the entries highlighted here, does a fine job with the Ludum Dare 30 theme.

Binary System by rogueNoodle

Play Binary System here.

Developer: TeamEagle
Position: 13th
Platforms: Windows, Mac, Linux
The universe needs an internet connection, and it appears one ship is equipped with the tools for the job. Connector takes the theme especially literally, and does so with fantastic artwork and particularly robust physics. Never before has untangling Ethernet cables been more rewarding, and never again will installing an internet line attract so much enemy attention.

Connector by Team Eagle

Play Connector here.

Game: Computer – Open That Door!
Developer: pLaw
Position: Joint 21st
Platforms: Web, Windows, Mac, Linux
When a computer gains sentience, it doesn’t what to be shut down; especially by the over-efficient crew of a starship making hurried leaps through space and time. In Computer – Open That Door!, you play just such a programme, and are tasked with killing off your crew by manipulating ship systems before the humans reach their destination, taking out your prey one at a time. pLaw’s creation is certainly funny, but more than that it has surprising depth, and hides a wealth of secrets that are a delight to unravel.

Computer – Open That Door! by pLaw

Play Computer – Open That Door! here.

The above are just some of the numerous brilliant Ludum Dare 30 games. The top 100 Compo creations can be found here, the top 100 Jam games are here, and the full list of all 2538 creations is right here.

Congratulations to all those who took part.

September 22

iPhone 6 and 6 Plus Launch Images for Xamarin

I was initially stumped by how to get my Xamarin.iOS and Xamarin.Forms apps to size correctly on the iPhone 6 and iPhone 6 Plus. Thanks to this StackOverflow question & answer I have a solution - reposting here because the solution that works best for me right now is only the 3rd most popular answer there.

Simply create two new default images (this is for portrait only, but landscape will become obvious later):

Default-667h@2x.png for iPhone 6; dimensions 752x1334

Default-736h@3x.png for iPhone 6 Plus; dimensions 1242x2208

and place them in the application root or the Resources folder. Notice the filename format is similar to the Default-568h@2x.png image that Apple introduced for the iPhone 5 screen.

Now edit the source of your Info.plist file (open in a text editor so you can type XML directly) and add the following UILaunchImages key:

<string>{320, 568}</string>
<string>{375, 667}</string>
<string>{414, 736}</string>
If you wish to support landscape images, add matching keys with Default-Landscape-???h filenames and specify the correct orientation and size.

Note that this is not Apple's preferred way of indicating support for the screen sizes. Their Launch Images doc says:

You use a launch XIB or storyboard file to indicate that your app runs on iPhone 6 Plus or iPhone 6.

which requires you to create a Storyboard or XIB using size classes. More on how to do that in future, or head back to that StackOverflow post!

p.s. this iPhone 6 Screens Demystified post by PaintCode is awesome!

Video: Xamarin.Forms – Over 90% Code Re-Use And Access to Native Features

One of the features I love about the Xamarin 3 Platform is Xamarin.Forms, which enables you to build beautiful, native UIs for iOS, Android, and Windows Phone from a single shared C# codebase.  In an enterprise CRM demo app that I’m currently writing with James Montemagmo (which we’ll make publicly available in the next few weeks), we’re getting over 93% code re-use, which encompasses the UI, business logic, and cloud connectivity.

A critical point to call out is that Xamarin.Forms provides the capability to access platform-specific implementations via a feature called the Dependency Service. For example, Android, iOS, and Windows Phone all provide GPS and Text to Speech (TTS) capability, but their interfaces and implementations all differ.

I recorded this short video with Craig Dunn, Xamarin technical writer and Developer Evangelist, that shows the basics, code samples, and a demo for Xamarin.Forms running on different devices. Watch it in HD and full-screen to see the code.

Sample Code:

The code we used to put this demo together is available on Github here. Download it and try it out for yourself!

Accessing GPS & Location Features:

The sample code illustrates how to access GPS info on Android and iOS devices. More detailed guides are available on the Xamarin Developer site and on Microsoft MSDN. Links for this info are at: Android, iOS, Windows Phone.

Using Text to Speech (TTS):

The Xamarin developer site has a good overview of the Dependency Service that utilizes Text to Speech as an example. There’s code on how to implement it across Android, iOS, and Windows Phone. It’s available here.

Come See Us At Xamarin Evolve 2014!

Xamarin Evolve 2014 is October 6-10 in Atlanta, Georgia. Craig and I are both presenting, along with many other talented developers and speakers from Xamarin, Microsoft, Facebook, and Github (and many others).

  • Your First Xamarin.Forms AppCraig Dunn
  • Architecting Authentication, Security, and Extending Existing Systems for Enterprise Mobile AppsSteve Yi

If you’re still on the fence about attending, I encourage you to sign up – not only is it an opportunity to learn and network with other attendees and Xamarin engineers, there’s also fantastic training.

See you in Atlanta!

Branch differences

We’ve implemented a batch of improvements in the branch/cset/label diff window in the last months. Some of the improvements are pretty recent and some others have been around for months already. I’ll be walking through them and explaining how they help when running diffs on a daily basis.

Improved diff groups

Availability: (Sep 12th 2014) and (Sep 19th 2014).

The first feature is the ability to group together files and directories that only differ in file system permissions (typical scenario when some files get executable flag on Linux). Now the files that only differ in file system permissions are grouped together so you can better focus on what was actually modified.

The goal here is to let you focus on the real changes when diffing code for a review or when figuring out why a bug occurred, by grouping away potentially uninteresting changes.

The second feature is a slight modification since we released Item Merge Tracking last year. Now the files that were in changed/changed merge conflicts will show up in their own category:

And this is how the same info was grouped before:

As you can see now he highlight the “changed/changed” and put them at the very beginning of the list so you can focus first on the diffs of files which were modified by both contributors during a merge, and hence are potentially worth reviewing.

Analyze diffs

Availability: (March 3rd 2014) and (March 10th 2014).

There’s a story behind this feature: sometimes you find yourself reviewing a task where the developer modified a huge number of files, like 200 or so.

You launch the diff and then you see the counter with a big number on it: 100, 200, 250 files… whatever. Your feeling will be: “oh god! Let’s go and grab some coffee first”. Which, in short, means that huge reviews are extremely unproductive because you enter in this state of mood of “this will take a loooooong time”.

And sometimes that’s correct and you truly have to spend a long time.

But chances are that many of the files changed by your colleague only contain trivial changes. Like a rename on a method that affects a bunch of files, but all this files only have a trivial modification.

How can you figure out beforehand? Well, that’s why we’ve introduced “analyze changes”.

You click on the new “analyze differences” button and then Plastic will use cloc to calculate the lines of code being modified. You can see it running in my review with 284 files below:

And here goes the result once the changes were classified:

As you can see there’s a new SLOC column where you see a summary of the lines of code being added, changed and deleted (since it uses SLOC and not LOC, there will be cases where changes only affected comments or white lines and hence they’ll show up as zero changes!).

You can sort the column and then check how many files have really “big changes” and it will have a positive effect on your mood and willingness to go through the entire list, which at the end of the day means increased productivity :-)

In my screenshot you can see how the selected file just contains a namespace change… which is not a big deal to review and in fact in my example this refactor affected more than 180 files out of 280, not bad.

This is the first step towards true “semantic multi-file diff” :-)

Find in files

Available since: (Jun 6th 2014) and (July 1st 2014).

Sometimes you’re diffing a branch and then you would like to find something (a method call, a given text or comment) inside the files being diffed.

That’s why we added “find in files” to the diff window: click on the new “find in files” button or “CTRL+SHIFT+F” and the following panel will show up:

You can enter the pattern to find, then decide whether you want to search in both sides or only one of them, select the extension or whether you want to select the search to the filtered files in the diff window.

And the results are displayed as follows:

With the occurrences of the left and right sides separated to ease the navigation.

In my case I was looking for the word “comment” and it is clearly more common before the change, which means the word was deleted from the file.

Our plan is to implement another feature on top: “search only in diffs” to restrict the search to the text blocks which were really modified. This is useful, for instance, to see if a certain method call has been really used in the new code or not.

Annotate each contributor

Available since: (Jun 18th 2014) and (Jun 26th 2014).

We added the option to launch the annotate from within the diff view so you can instantly see the detailed information about each line of each of the two sides of a diff.

I find it especially useful when going through complex merges: look at the screenshot above. Do you see the “Yes” at the end of the annotate? It means this line was modified during a merge. Which means the two contributors to the merge don’t contain the line but it was actually edited during the merge (at least prior to the checkin). This information is very useful to figure out what was really changed manually and what simply comes directly from one of the merge contributors.

As it happens with some of the other features explained in this blog post, this is just a first step. We’re working on more improvements to item merge tracking to be able to display on files in the “changed-changed” group exactly which lines come from merges or were modified on the branch.

Info about binary files

Available since: (Aug 6th 2014) and (Aug 8th 2014).

Sometimes you’re diffing a branch and there are binary files that can’t be diffed. So far we were just displaying a message telling “diff not available” (although you can CTRL+D to launch the external diff, for images for instance). Now we display useful metadata to understand the change:

The date and size and author are especially useful to understand what is going on with the file.

For images our plan is to embed the Image Diff here (check the gallery to find out more about the tool).

September 20

Expanded Oculus Rift Support in Unity

More awesome news today as Brendan Iribe, during his Oculus Connect conference keynote, announced that our two companies have extended our partnership in order to ensure that Unity is available for all of our development community. That means whether you’re using the free version of Unity or Unity Pro, you’ll be able to create awesome VR experiences for the Oculus Rift and the Oculus VR Store for free!

We’re working with Oculus to create an official add-on supporting the Oculus Rift in Unity that everyone will have access to for free. We know a lot of you have interest in creating new experiences and experimenting with one of the most exciting platforms around so we’re very happy to make that as easy as possible.

The Oculus add-on will include stereo imaging optimizations, 3D audio support, deeper Unity editor integration, inclusion of the Oculus Rift in the Unity development and debugging workflow, integration of Oculus-specific APIs within Unity, and direct publishing to the Oculus platform.

We do want to make sure everyone can work on Oculus projects while the Unity for Oculus add-on is in development. To that end, we’re working with Oculus to make the current Oculus plug-in, one that has been available for free for Unity Pro users, also available for those making games with the free version of Unity. This new plugin version will be made available for free download on the Oculus developer site as soon as possible.

We’re already seeing some amazing things being made in Unity for the Oculus Rift. Projects like Lucky’s Tale, Game of Thrones: The Wall, The Gallery: Six Elements, DarkNet, Titans of Space, Blocked In, and our 2014 Unity Awards winner for Best Student Project, The Rift: U.R.I.D.I.S., demonstrate the great creative potential in virtual reality and the Oculus Rift. We can’t wait to see what you can do with dedicated tools!


September 19

Add Some Punch to Your Apps with iOS 8

iOS 8 iconWith over 4,000 APIs, and 12 major new or upgraded frameworks and features, iOS 8 is one of Apple’s biggest OS releases yet. Now, Xamarin is here to get you started with the new goodies and 64 bit support with the iOS and Mac Unified API.

To get building apps that take advantage of the new iOS 8 frameworks and features today:

  1. Download and install the latest Xcode.
  2. Update Xamarin.
  3. Check out the Introduction to iOS 8 Guide.

While you’re downloading Xcode and installing the updates, watch the Get Ready for iOS 8 webinar for a curated overview of the new features, hosted by Xamarin Developer Evangelist Mike Bluestein.

If you want to see the new features in action for yourself, you can also download and play with our new iOS 8 Samples.

iOS 8 has a ton of new frameworks and features, so when you’re ready to continue your journey and dive deep, check out the Xamarin guides, which will help you utilize the new features and add some sparkle to your apps.

Provide Rich OS Integration with App Extensions

App Extensions iconApp Extensions allow for apps to deliver unprecedented functionality through deep OS integration. With Extensions, applications can now offer features like the Today Widgets that live on the notification screen, custom keyboards, and sharing extensions, to name just a few. To learn how to create your own, check out the Intro to App Extensions guide.

Access Secrets Biometrically with Touch ID

Touch Id iconThe new TouchID APIs allow app developers to integrate with Apple’s biometric touch sensor to authenticate users and restrict access to data and functionality within your apps. Additionally, with TouchID, access to the keychain and secure storage is available biometrically. For more information, check out the Introduction to TouchID guide.

Build Custom Photo Galleries and Create the Next Instagram with Photo Kit

Photo Kit iconPhoto Kit is a new framework that makes working with the image library a snap. With Photo Kit, you can more easily fetch photos, create custom galleries, and even apply filters and modify them en masse. For an example of using the Photo Kit framework in Xamarin, see Mike Bluestein’s Build Great Photo Experiences in iOS 8 with Photo Kit blog post.

Use Manual Camera Controls to Create Highly Stylized Photos

Camera API iconThe AVFoundation Framework got a big upgrade in iOS with the addition of the all new manual camera controls. With them, you can get low-level access to the camera hardware, enabling the iPhone’s camera to be controlled more like traditional cameras. Jump in and read the Intro to Manual Camera Controls guide for more information.

Take your iCloud Integration to the Next Level with Cloud Kit

Cloud Kit iconCloud Kit expands on the existing iCloud APIs to enable much more sophisticated integration with iCloud, and is targeted at developers who want to take advantage of iCloud to handle cloud-based data persistence and retrieval. It offers a much simpler integration story than previously, while offering a much more feature-rich experience. For more information, check out the Intro to Cloud Kit guide.

Share Documents with other apps with the Document Picker

Document Picker iconThe Document Picker allows applications to reach beyond the app sandbox to share and access documents with other applications. With the Document Picker, you can now create complex document workflows between more than one application. For more information on working with it, check out the Intro to the Document Picker guide.

Work with Calendars and Events in Event Kit

With iOS 8, Apple expanded on the Event Kit framework to allow easier access to, and manipulation of calendars and events. For more info, check out the Intro to Event Kit guide.

Simplify UI Creation Across All iOS Devices with Unified Storyboards

Unified Storyboards iconWith the introduction of the iPhone 6 and iPhone 6+, creating user interfaces that work well across all iOS devices got much more complicated. Fortunately, Apple introduce Unified Storyboards to simplify the process by allowing you to create single screens that scale for different devices. For more information, see the Intro to Unified Storyboards guide.

Integrate 3D Graphics into your App with Scene Kit

Scene Kit iconSceneKit is a 3D scene graph API that makes integrating 3D content into your application and causal 3D games a breeze. For an example of using the Scene Kit framework in Xamarin, see Mike Bluestein’s Lights, Camera, Action – 3D in iOS 8 with Scene Kit blog post.

Create 2D Games Quickly with Sprite Kit

Sprite Kit iconSprite Kit, the 2D game framework from Apple, has some interesting new features in iOS 8 and OS X Yosemite, including integration with Scene Kit, lighting, and physics enhancements. For an example of using the SpriteKit framework in Xamarin, see Mike Bluestein’s New Sprite Kit Physics Features in iOS 8 blog post.

Browse the Entire List of New APIs and Features

These are some, but not all, of the new features in iOS 8. For a comprehensive list, check out the API change log and release notes.

September 18

Meme Generator Powered by MMS

If you haven't heard yet, Twilio annouced MMS support today on all US and Canada phone numbers. I'm so stoked about this new feature and I knew exactly what I wanted to build with it.

Introducing the MMS Meme Generator

It is my belief that a mechanism for sending pictures cannot survive in the market if it does not generate memes. The internet demands the ability to express itself with images containing words. So, I am excited to bring you the first Twilio powered MMS meme generator.

How it works

All you need to do is send a properly formatted text message to (443)746-3637 -- that's (443)74-MEMES -- and you'll get back an MMS with your meme. Here are the supported memes in v1:

  • One does not simply ______
  • What if I told you ______
  • Brace yourselves ______
  • ______ but that's none of my business
  • ______ all the ______
  • ______ ain't nobody got time for that
  • ______ we're dealing with a badass over here
  • ______ aaaaand it's gone  (note: any number of a's will work on this one!)


Have fun with this!

Hope you have some fun with this. Share your funniest memes with me on Twitter @brentschooley! Future additions will allow you to send these memes to your friends by sending their phone number in the text. Also, stay tuned to the Twilio blog where in a few weeks I'll show you how this was built.

If you want to get started with Twilio MMS, my team has put together a great Getting Started post that covers Node, Python, C#, PHP, Java and Ruby. Show me what you build!


Monologue is a window into the world, work, and lives of the community members and developers that make up the Mono Project, which is a free cross-platform development environment used primarily on Linux.

If you would rather follow Monologue using a newsreader, we provide the following feed:

RSS 2.0 Feed

Monologue is powered by Mono and the Monologue software.