SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Building Poollie: WK 2014 
+ = + +
The Dream 
Let’s make a fun app for the World Football Championship 
• To learn what it takes to make a successful app 
• To show off what is possible using Xamarin, Azure and .NET 
• To promote our company as an App Developer 
Started seriously developing 10 weeks before the kickoff of the first match 
Put up a “coming soon” webpage 
Little did we know…
www.poollie.nl
The “competition” in this category 
Mostly webbased systems: 
• watgaathetworden.nl / ING Bank 
• flexvoetbal.nl 
• nationalevoetbalpool.nl 
One mobile App: 
• Not free 
• iOS / Android, no WP 
In this category, a mobile app has many advantages over a website
Poollie features 
• User registration 
• Create / search pool 
• Invite players 
• Notifications 
• View Championship Schedule and Standings 
• Predict matches, predict winners and stats 
• View (live) match, calculate player points 
• View player points (self / others) 
• View Pool standings 
• … 
Even an app as simple as Poollie has a lot of features 
More info (in Dutch): 
Het Verhaal van Poollie
Poollie technology 
iOS and Android: Xamarin 
• Native UI 
• On-device database 
• REST / SignalR connection to server 
• Shared Code 
Windows Phone 8: 
• Native UI 
• Shared Code 
Plain-and-simple architecture 
Server: Windows Azure Website 
• ASP.NET WebAPI + SignalR 
• SQL Server + Micro ORM, Migrations 
• WebJobs for background processes 
• Service Bus to scale SignalR 
• Notification Hub
Xamarin Platform 
Apps look and feel native, because they are 
Productive app development environment 
Language Framework IDE
Client Technologies 
Leveraging the .NET cross-platform ecosystem 
More info: 
Lessons Learned
Three native apps, one source
Three native apps, one source 
Navigation logic also shared 
More info: 
github.com/MacawNL/QuickCross
Three native apps, one source 
DEMO 
More info: 
See YouTube Video
Marketing Poollie 
A good App doesn’t really sell itself 
It takes work to market an App, make people notice…
Success! Houston, we have a problem 
• Peaked at 200.000 screen views per hour 
• 100+ web api requests / sec 
Statistics and exception logging are critical
Scaling the server 
Cloud makes it possible to buy yourself out 
of trouble quickly 
Just click the buttons…
Scaling the server 
More cost efficient: old-fashioned SQL data modelling and query tuning, i.e: 
SELECT 
ROW_NUMBER() OVER(ORDER BY Points DESC) AS CurrentPosition, 
ROW_NUMBER() OVER(ORDER BY (Points-LastPointMutation) DESC) AS PreviousPosition, 
PoolId, PlayerId, DisplayName, Points, LastPointMutation 
FROM 
PoolPlayer INNER JOIN Player ON PoolPlayer.PlayerId = Player.Id 
WHERE 
PoolPlayer.PoolId = @PoolId AND 
PoolPlayer.PlayerStatus BETWEEN 5 AND 6 
ORDER BY 
CurrentPosition
Scaling the server 
More cost efficient: old-fashioned SQL data modelling and query tuning, i.e: 
SELECT 
CurrentPosition, PreviousPosition, PoolId, 
PlayerId, DisplayName, Points, LastPointMutation 
FROM 
PoolPlayer INNER JOIN Player ON PoolPlayer.PlayerId = Player.Id 
WHERE 
PoolId = @PoolId AND 
PoolPlayer.PlayerStatus > 4 
ORDER BY 
RowNumber
Client Performance 
Eliminating all web requests from the app startup 
Load minimum data from local storage for initial display. 
Once the app is interactive, start background load of more local data 
Also start an attempt to update with online data 
Optimizing Async 
Performance of non-UI code with ConfigureAwait(false) 
Poollie has 300 awaits in shared code. 
Replacing sqlite-net / IQueryable with Json.NET / Ienumerable 
Eliminate mapping layers and slow IO 
More info: 
Lessons Learned
Demo: Notifications 
In-App Notifications with SignalR 
Faster and more reliable delivery, free, 2-way persistent 
Push Notifications with Azure Notification Hub 
Always reach people 
More info: 
See YouTube Video
Xamarin Experience: Grip and Freedom 
Grip: not hitting a roadblock 
Performance 
Memory 
Look & feel 
Latest platform-specific functionality 
Freedom: mix and match 
Develop on Mac and on Windows machines 
Use Visual Studio and Xamarin Studio IDEs 
Use .NET (NuGet) and native libraries 
Use Shared Code Projects and Portable Class Libraries 
Share view markup (Xamarin Forms) and use native markup
Achievements 
We did allright  
47000 users with on average 25000 users every day during the 
championship; 2500 concurrent users at peak times. 
Voted as number oneWorld Championship pool app by iPhoneclub.nl 
Voted as best pool app for World Championship in Brazil by 
Androidworld.nl 
Selected four times as Featured App in the Dutch Windows Phone 
Store 
90% of the client-side code was shared across all three platforms, 
while each platform had its own native designed UI 
We provided continuous app updates with improvements and new 
features in all three app stores, right up to the end of the 
championship
Resources 
Dutch Mobile .NET Developers Group 
Xamarin Revolve: Tuesday, November 11, 2014 6:00 PM, Hilversum 
http://www.meetup.com/Dutch-Mobile-NET-Developers-Group 
Macaw mobile solutions 
http://www.macaw.nl/ 
@MaartenSikkema http://www.macaw.nl/macaw/medewerkers/maarten 
@VincentH_NET http://vincenth.net
Follow us on

Weitere ähnliche Inhalte

Was ist angesagt?

Developing for Windows Phone 7
Developing for Windows Phone 7Developing for Windows Phone 7
Developing for Windows Phone 7Gergely Orosz
 
Introduction of Monaca
Introduction of MonacaIntroduction of Monaca
Introduction of MonacaHideshi Ogoshi
 
Ecommerce Mini Project / Group Project Design
Ecommerce Mini Project / Group Project DesignEcommerce Mini Project / Group Project Design
Ecommerce Mini Project / Group Project DesignHemant Sarthak
 
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CIAppurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CIManish Lachwani
 
Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Chris Griffith
 
C# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataformaC# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataformaAllan Cleysson
 
Internship - Bootstrap
Internship - BootstrapInternship - Bootstrap
Internship - Bootstraptanay29
 
Hybrid Mobile Applications
Hybrid Mobile ApplicationsHybrid Mobile Applications
Hybrid Mobile ApplicationsSistek Yazılım
 
Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGapJoshua Johnson
 
Mobile advertising by Yann Lechelle from Appsfire
Mobile advertising by Yann Lechelle from AppsfireMobile advertising by Yann Lechelle from Appsfire
Mobile advertising by Yann Lechelle from AppsfireCocoaHeads France
 
Appush Hands On
Appush Hands OnAppush Hands On
Appush Hands Onappush
 
Making Money with Adobe AIR
Making Money with Adobe AIRMaking Money with Adobe AIR
Making Money with Adobe AIRAlmog Koren
 
Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Chris Griffith
 

Was ist angesagt? (14)

Developing for Windows Phone 7
Developing for Windows Phone 7Developing for Windows Phone 7
Developing for Windows Phone 7
 
Introduction of Monaca
Introduction of MonacaIntroduction of Monaca
Introduction of Monaca
 
Ecommerce Mini Project / Group Project Design
Ecommerce Mini Project / Group Project DesignEcommerce Mini Project / Group Project Design
Ecommerce Mini Project / Group Project Design
 
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CIAppurify - Runtime Debugging, Performance Optimization and Automated CI
Appurify - Runtime Debugging, Performance Optimization and Automated CI
 
Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5Developing AIR for Mobile with Flash Professional CS5.5
Developing AIR for Mobile with Flash Professional CS5.5
 
C# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataformaC# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataforma
 
Internship - Bootstrap
Internship - BootstrapInternship - Bootstrap
Internship - Bootstrap
 
Hybrid Mobile Applications
Hybrid Mobile ApplicationsHybrid Mobile Applications
Hybrid Mobile Applications
 
Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGap
 
Mobile advertising by Yann Lechelle from Appsfire
Mobile advertising by Yann Lechelle from AppsfireMobile advertising by Yann Lechelle from Appsfire
Mobile advertising by Yann Lechelle from Appsfire
 
Appush Hands On
Appush Hands OnAppush Hands On
Appush Hands On
 
Making Money with Adobe AIR
Making Money with Adobe AIRMaking Money with Adobe AIR
Making Money with Adobe AIR
 
AppNotch
AppNotchAppNotch
AppNotch
 
Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5Developing AIR for Android with Flash Professional CS5
Developing AIR for Android with Flash Professional CS5
 

Ähnlich wie Building poollie wk 2014 for ios android and windows phone using xamarin and azure

Agencies Developer Products
Agencies Developer ProductsAgencies Developer Products
Agencies Developer ProductsJeff Eddings
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...e-Legion
 
Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Okko Oulasvirta
 
Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Mobivery
 
Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)wesley chun
 
Python Developer Toolbox
Python Developer ToolboxPython Developer Toolbox
Python Developer ToolboxNick Landry
 
App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1ShepHertz
 
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Zohar Babin
 
Architecture app
Architecture appArchitecture app
Architecture appYnon Perek
 
Visual studio enterprise 2017 mobile by Russ Fustino
Visual studio enterprise 2017 mobile by Russ FustinoVisual studio enterprise 2017 mobile by Russ Fustino
Visual studio enterprise 2017 mobile by Russ FustinoRuss Fustino
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformAngus Fox
 
Mobile Banking webinar, December 15, 2010 by Jouk Pleiter
Mobile Banking webinar, December 15, 2010 by Jouk PleiterMobile Banking webinar, December 15, 2010 by Jouk Pleiter
Mobile Banking webinar, December 15, 2010 by Jouk PleiterBackbase
 
Bring Your Android Apps to BlackBerry 10 in minutes
Bring Your Android Apps to BlackBerry 10 in minutesBring Your Android Apps to BlackBerry 10 in minutes
Bring Your Android Apps to BlackBerry 10 in minutesDr. Ranbijay Kumar
 
Microsoft Teams - A developers perspective
Microsoft Teams - A developers perspectiveMicrosoft Teams - A developers perspective
Microsoft Teams - A developers perspectiveThomas Gölles
 
Amol Bhawar Resume 2016
Amol Bhawar Resume 2016Amol Bhawar Resume 2016
Amol Bhawar Resume 2016Amol Bhawar
 
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)Ido Green
 
Google Cloud Study Jam.pdf
Google Cloud Study Jam.pdfGoogle Cloud Study Jam.pdf
Google Cloud Study Jam.pdfjainavijeet
 

Ähnlich wie Building poollie wk 2014 for ios android and windows phone using xamarin and azure (20)

Agencies Developer Products
Agencies Developer ProductsAgencies Developer Products
Agencies Developer Products
 
Google Developers Overview Deck 2015
Google Developers Overview Deck 2015Google Developers Overview Deck 2015
Google Developers Overview Deck 2015
 
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
#MBLTdev: Разработка backend для мобильного приложения с использованием Googl...
 
Getting started with PhoneGap
Getting started with PhoneGapGetting started with PhoneGap
Getting started with PhoneGap
 
Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases Finland Azure User Group #8 DevOps Mobile Client Releases
Finland Azure User Group #8 DevOps Mobile Client Releases
 
Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V) Formación en movilidad: Conceptos de desarrollo en iOS (V)
Formación en movilidad: Conceptos de desarrollo en iOS (V)
 
Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)
 
Python Developer Toolbox
Python Developer ToolboxPython Developer Toolbox
Python Developer Toolbox
 
App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1
 
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
Kaltura Inspire Webinar: API Driven Video Platform - The Key to Scalability a...
 
Architecture app
Architecture appArchitecture app
Architecture app
 
Visual studio enterprise 2017 mobile by Russ Fustino
Visual studio enterprise 2017 mobile by Russ FustinoVisual studio enterprise 2017 mobile by Russ Fustino
Visual studio enterprise 2017 mobile by Russ Fustino
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
 
Mobile Banking webinar, December 15, 2010 by Jouk Pleiter
Mobile Banking webinar, December 15, 2010 by Jouk PleiterMobile Banking webinar, December 15, 2010 by Jouk Pleiter
Mobile Banking webinar, December 15, 2010 by Jouk Pleiter
 
Bring Your Android Apps to BlackBerry 10 in minutes
Bring Your Android Apps to BlackBerry 10 in minutesBring Your Android Apps to BlackBerry 10 in minutes
Bring Your Android Apps to BlackBerry 10 in minutes
 
Windows Phone Introduction
Windows Phone IntroductionWindows Phone Introduction
Windows Phone Introduction
 
Microsoft Teams - A developers perspective
Microsoft Teams - A developers perspectiveMicrosoft Teams - A developers perspective
Microsoft Teams - A developers perspective
 
Amol Bhawar Resume 2016
Amol Bhawar Resume 2016Amol Bhawar Resume 2016
Amol Bhawar Resume 2016
 
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
Entrepreneurship Tips With HTML5 & App Engine Startup Weekend (June 2012)
 
Google Cloud Study Jam.pdf
Google Cloud Study Jam.pdfGoogle Cloud Study Jam.pdf
Google Cloud Study Jam.pdf
 

Building poollie wk 2014 for ios android and windows phone using xamarin and azure

  • 1. Building Poollie: WK 2014 + = + +
  • 2. The Dream Let’s make a fun app for the World Football Championship • To learn what it takes to make a successful app • To show off what is possible using Xamarin, Azure and .NET • To promote our company as an App Developer Started seriously developing 10 weeks before the kickoff of the first match Put up a “coming soon” webpage Little did we know…
  • 4. The “competition” in this category Mostly webbased systems: • watgaathetworden.nl / ING Bank • flexvoetbal.nl • nationalevoetbalpool.nl One mobile App: • Not free • iOS / Android, no WP In this category, a mobile app has many advantages over a website
  • 5. Poollie features • User registration • Create / search pool • Invite players • Notifications • View Championship Schedule and Standings • Predict matches, predict winners and stats • View (live) match, calculate player points • View player points (self / others) • View Pool standings • … Even an app as simple as Poollie has a lot of features More info (in Dutch): Het Verhaal van Poollie
  • 6. Poollie technology iOS and Android: Xamarin • Native UI • On-device database • REST / SignalR connection to server • Shared Code Windows Phone 8: • Native UI • Shared Code Plain-and-simple architecture Server: Windows Azure Website • ASP.NET WebAPI + SignalR • SQL Server + Micro ORM, Migrations • WebJobs for background processes • Service Bus to scale SignalR • Notification Hub
  • 7. Xamarin Platform Apps look and feel native, because they are Productive app development environment Language Framework IDE
  • 8. Client Technologies Leveraging the .NET cross-platform ecosystem More info: Lessons Learned
  • 9. Three native apps, one source
  • 10. Three native apps, one source Navigation logic also shared More info: github.com/MacawNL/QuickCross
  • 11. Three native apps, one source DEMO More info: See YouTube Video
  • 12. Marketing Poollie A good App doesn’t really sell itself It takes work to market an App, make people notice…
  • 13. Success! Houston, we have a problem • Peaked at 200.000 screen views per hour • 100+ web api requests / sec Statistics and exception logging are critical
  • 14. Scaling the server Cloud makes it possible to buy yourself out of trouble quickly Just click the buttons…
  • 15. Scaling the server More cost efficient: old-fashioned SQL data modelling and query tuning, i.e: SELECT ROW_NUMBER() OVER(ORDER BY Points DESC) AS CurrentPosition, ROW_NUMBER() OVER(ORDER BY (Points-LastPointMutation) DESC) AS PreviousPosition, PoolId, PlayerId, DisplayName, Points, LastPointMutation FROM PoolPlayer INNER JOIN Player ON PoolPlayer.PlayerId = Player.Id WHERE PoolPlayer.PoolId = @PoolId AND PoolPlayer.PlayerStatus BETWEEN 5 AND 6 ORDER BY CurrentPosition
  • 16. Scaling the server More cost efficient: old-fashioned SQL data modelling and query tuning, i.e: SELECT CurrentPosition, PreviousPosition, PoolId, PlayerId, DisplayName, Points, LastPointMutation FROM PoolPlayer INNER JOIN Player ON PoolPlayer.PlayerId = Player.Id WHERE PoolId = @PoolId AND PoolPlayer.PlayerStatus > 4 ORDER BY RowNumber
  • 17. Client Performance Eliminating all web requests from the app startup Load minimum data from local storage for initial display. Once the app is interactive, start background load of more local data Also start an attempt to update with online data Optimizing Async Performance of non-UI code with ConfigureAwait(false) Poollie has 300 awaits in shared code. Replacing sqlite-net / IQueryable with Json.NET / Ienumerable Eliminate mapping layers and slow IO More info: Lessons Learned
  • 18. Demo: Notifications In-App Notifications with SignalR Faster and more reliable delivery, free, 2-way persistent Push Notifications with Azure Notification Hub Always reach people More info: See YouTube Video
  • 19. Xamarin Experience: Grip and Freedom Grip: not hitting a roadblock Performance Memory Look & feel Latest platform-specific functionality Freedom: mix and match Develop on Mac and on Windows machines Use Visual Studio and Xamarin Studio IDEs Use .NET (NuGet) and native libraries Use Shared Code Projects and Portable Class Libraries Share view markup (Xamarin Forms) and use native markup
  • 20. Achievements We did allright  47000 users with on average 25000 users every day during the championship; 2500 concurrent users at peak times. Voted as number oneWorld Championship pool app by iPhoneclub.nl Voted as best pool app for World Championship in Brazil by Androidworld.nl Selected four times as Featured App in the Dutch Windows Phone Store 90% of the client-side code was shared across all three platforms, while each platform had its own native designed UI We provided continuous app updates with improvements and new features in all three app stores, right up to the end of the championship
  • 21. Resources Dutch Mobile .NET Developers Group Xamarin Revolve: Tuesday, November 11, 2014 6:00 PM, Hilversum http://www.meetup.com/Dutch-Mobile-NET-Developers-Group Macaw mobile solutions http://www.macaw.nl/ @MaartenSikkema http://www.macaw.nl/macaw/medewerkers/maarten @VincentH_NET http://vincenth.net

Hinweis der Redaktion

  1. Voorstellen Maarten, Macaw
  2. Maarten: Voorstellen Vincent .NET Framework: including libraries and open source ecosystem NuGet NB enterprise apps: UX drives acceptance (consumers) and productivity (enterprise) UX is performance, stability, familiarity You need Native to get good that (UX)
  3. Solving hard prblems for you, cross-platform. Examples SignalR and Azure Notiication Hubs
  4. ? QuickCross
  5. The importance o startup time
  6. Xamarin Platform