Tools and processes we use to build apps quickly and to a very high standard. Timur Garifzyanov
Tools and processes we use to build apps quickly and to a very high standard.Timur Garifzyanov
1. Badoo2. Windows phone at Badoo3. Architecture, tools, patterns
Badoo
Badoo - 269,570,384 registered
190 countries
+250 employees who speak 46 languages
Moscow and London
Technologies
Mobile 80% - Web 20%
Platforms
User Profile Current World Region Android iOS Windows
AFRICA 5% 1% 6%APAC 1% 2% 0%ASIA 7% 5% 7%EURO 41% 42% 42%LATAM 21% 6% 33%
MENA 9% 7% 3%NAMER 17% 37% 9%
Windows phone at Badoo
OS Percent8.10 84.78.0 8.077.10 6.3210.0 0.94
Windows Phone – 678,000 monthly
2m sessions daily
Average rating is 4.5 stars
2 developers + 2 QA
Experimental platform
Architecture, tools, patterns
Easily change anything
Don’t break things
Async/await
async/await is greatvar image = await new ImageDownloader().Download(LargeUrl); ImageSessionCacheService.Put(ImageCacheService.GetCacheKey(LargeUrl), image);
Every page is a function
Modal window serviceawait ModalWindowService.ShowAsync<UploadPhotoPage, List<Photo>>(params);
xaml
App.xaml<Application.Resources>
<ResourceDictionary><state:UserState x:Key="UserState" />
</ResourceDictionary></Application.Resources>
MenuText="{Binding Person.Name, Source={StaticResource UserState}}"
Behaviors<i:Interaction.Behaviors>
<behaviors:ManageImageBehavior IsBlured="True" Source="{Binding Url}" /></i:Interaction.Behaviors>
Triggers<ec:DataTrigger Binding="{Binding PromoBlockType, ElementName=UserControl}“ Value=“1”>
<ec:ChangePropertyAction PropertyName="Visibility" Value="Visible" /></ec:DataTrigger>
Styles<Style x:Key="PhotoPlaceholder“><Style x:Key="TopBarStyle“><Style x:Key="PopularityControlStyle“>
Content Templates<conditional:ConditionalControl>
<conditional:IfFeatureEnable FeatureType=“FEATURE"><DataTemplate>
<Button Width="328“></Button>
</DataTemplate></conditional:IfFeatureEnable>
</conditional:ConditionalControl>
Content Templates <conditional:ConditionalControl>
<conditional:IfAbTestVariation TestId=“1” VariationId=“2”><DataTemplate>
<Button Width="328“></Button>
</DataTemplate></conditional:IfAbTestVariation>
</conditional:ConditionalControl>
C# 6
Null-conditional operatorsIf (Object != null && Object.Field != null && Object.Field.Field != null && Object.Field.Field.Enabled){ Action();}
Null-conditional operatorsIf (Object?.Field?.Field?.Enabled == true){ Object.Field.Field.Action();}
NameofOnPropertyChanged(nameof(Property))
JiraTelerikFxCop
TeamCityStyleCop
ResharperVisual Studio 2015
We are hiring
7500£
Contacts
Timur GarifzyanovWindows Phone Team [email protected] & [email protected] & @garifzyanov_tim