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

More Related Content

PPTX
b4usolution_Appium Mobile Automation Testing Made Awesome
PDF
Complete iOS Toolkit
PPTX
Mobile App Landscape for the Non-Technical
PPTX
Developing for Xoom with Flash and AIR
KEY
Introduction to Flex Hero for Mobile Devices
PPT
Blue Angels Case Study
PPTX
Phonegap - An Introduction
PPTX
Flarida butch mobile_presentation
b4usolution_Appium Mobile Automation Testing Made Awesome
Complete iOS Toolkit
Mobile App Landscape for the Non-Technical
Developing for Xoom with Flash and AIR
Introduction to Flex Hero for Mobile Devices
Blue Angels Case Study
Phonegap - An Introduction
Flarida butch mobile_presentation

What's hot (14)

PPTX
Developing for Windows Phone 7
PPTX
Introduction of Monaca
PPTX
Ecommerce Mini Project / Group Project Design
PDF
Appurify - Runtime Debugging, Performance Optimization and Automated CI
PPTX
Developing AIR for Mobile with Flash Professional CS5.5
PPTX
C# no bolso - desenvolvendo apps multiplataforma
PDF
Internship - Bootstrap
PPTX
Hybrid Mobile Applications
PDF
Mobile Development with PhoneGap
PDF
Mobile advertising by Yann Lechelle from Appsfire
KEY
Appush Hands On
PPT
Making Money with Adobe AIR
PPTX
AppNotch
PPTX
Developing AIR for Android with Flash Professional CS5
Developing for Windows Phone 7
Introduction of Monaca
Ecommerce Mini Project / Group Project Design
Appurify - Runtime Debugging, Performance Optimization and Automated CI
Developing AIR for Mobile with Flash Professional CS5.5
C# no bolso - desenvolvendo apps multiplataforma
Internship - Bootstrap
Hybrid Mobile Applications
Mobile Development with PhoneGap
Mobile advertising by Yann Lechelle from Appsfire
Appush Hands On
Making Money with Adobe AIR
AppNotch
Developing AIR for Android with Flash Professional CS5
Ad

Similar to Building poollie wk 2014 for ios android and windows phone using xamarin and azure (20)

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

Recently uploaded (8)

PPTX
The-Literary-Elements in non fiction creative
PDF
Top 10 Platforms for Securely Buying Verified Cash App Accounts.pdf
PDF
2025 Guide to Buy Verified Cash App Accounts You Can Trust.pdf
PDF
Date Right Stuff - Invite only, conservative dating app
PDF
Kids, Screens & Emotional Development by Meenakshi Khakat
DOC
EIU毕业证学历认证,贝尔维尤学院毕业证国外毕业证
PPTX
Social Media People PowerPoint Templates.pptx
PDF
Best 4 Sites for Buy Verified Cash App Accounts – BTC Only.pdf
The-Literary-Elements in non fiction creative
Top 10 Platforms for Securely Buying Verified Cash App Accounts.pdf
2025 Guide to Buy Verified Cash App Accounts You Can Trust.pdf
Date Right Stuff - Invite only, conservative dating app
Kids, Screens & Emotional Development by Meenakshi Khakat
EIU毕业证学历认证,贝尔维尤学院毕业证国外毕业证
Social Media People PowerPoint Templates.pptx
Best 4 Sites for Buy Verified Cash App Accounts – BTC Only.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

Editor's Notes

  • #2: Voorstellen Maarten, Macaw
  • #8: 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)
  • #9: Solving hard prblems for you, cross-platform. Examples SignalR and Azure Notiication Hubs
  • #11: ? QuickCross
  • #18: The importance o startup time
  • #20: Xamarin Platform