SlideShare a Scribd company logo
1 of 61
Matt Lacey @mrlacey http://mrlacey.com/
me
Freelance developer
Doing “mobile” development over 10 years
Organise the Windows Phone User Group
Wants to help you build awesome apps
YOU
Developer
Experienced on other mobile platforms
Some Windows Phone awareness
Want to build awesome apps
native x-platform games
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
principles language&
1. Pride in craftsmanship
2. Be fast and fluid
3. Authentically digital
4. Do more with less
5. Win as one
The OS implementation of the principles
Can follow the principles
without implementing the
language
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
Apps can be more than just
white text on a black
background
Are drop shadows, gradients,
rounded corners and gloss
really a part of your brand?
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
http://www.flickr.com/photos/winterofdiscontent/3231416496/
.net
async
C#
5
var client = new WebClient();
client.DownloadStringCompleted +=
(sender, args) =>
MessageBox.Show(args.Result.Length.ToString(),
"Response length",
MessageBoxButton.OK);
client.DownloadStringAsync(
new Uri("http://www.mobdevcon.com/"));
private async Task ShowPageLength()
{
var client = new HttpClient();
var response = await client.GetStringAsync(
"http://www.mobdevcon.com/");
MessageBox.Show(response.Length.ToString(),
"Response length",
MessageBoxButton.OK);
}
[CompilerGenerated]
private struct <MakeAwaitableRequest>d__0 : IAsyncStateMachine
{
public int <>1__state;
public MainPage <>4__this;
public AsyncVoidMethodBuilder <>t__builder;
private object <>t__stack;
private TaskAwaiter<string> <>u__$awaiter3;
public HttpClient <client>5__1;
public string <response>5__2;
private void MoveNext()
{
try
{
TaskAwaiter<string> awaiter;
bool flag = true;
switch (this.<>1__state)
{
case -3:
goto Label_00DD;
case 0:
break;
default:
this.<client>5__1 = new HttpClient();
awaiter = this.<client>5__1.GetStringAsync("http://www.mobdevcon.com/").GetAwaiter();
if (awaiter.IsCompleted)
{
goto Label_008A;
}
this.<>1__state = 0;
this.<>u__$awaiter3 = awaiter;
this.<>t__builder.AwaitUnsafeOnCompleted<TaskAwaiter<string>, MainPage.<MakeAwaitableRequest>d__0>(ref awaiter, ref this);
flag = false;
return;
}
awaiter = this.<>u__$awaiter3;
this.<>u__$awaiter3 = new TaskAwaiter<string>();
this.<>1__state = -1;
Label_008A:
string introduced7 = awaiter.GetResult();
awaiter = new TaskAwaiter<string>();
string str = introduced7;
this.<response>5__2 = str;
MessageBox.Show(this.<response>5__2.Length.ToString(), "Response length", MessageBoxButton.OK);
}
catch (Exception exception)
{
this.<>1__state = -2;
this.<>t__builder.SetException(exception);
return;
}
Label_00DD:
this.<>1__state = -2;
this.<>t__builder.SetResult();
}
public IList<BlogPost> FindPopularPosts(IList<BlogPost> allPosts)
{
var popularPosts = new List<BlogPost>();
foreach (var post in allPosts)
{
if (post.Views >= 10000)
{
popularPosts.Add(post);
}
}
return popularPosts;
}
public IList<BlogPost> FindPopularPosts(IList<BlogPost> allPosts)
{
return allPosts.Where(p => p.Views >= 10000).ToList();
}
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
MVP data binding+
<TextBlock Text="{Binding SomeString}" />
<Button Command="{Binding DoSomething}"
Content="do something" />
http://flic.kr/p/9ny7B6
MVVMLight Caliburn.Micro MVVMCros
s
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
http://flic.kr/p/9vjqMk
http://flic.kr/p/aNbQui
toast, tile & raw
no interception
no notification center
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
Good news
Better than WP7
Great tools
Bad news
Low spec devices
Large/complex apps
Images
Background agents
frame rate counters
redraw visualizations
cache visualizations
memory counters
application analysis
execution profiling
memory profiling
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
.resx
.xlf
bindings
custom
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
1. Metro
2. Visuals
3. Controls
4. .net
5. MVVM
6. Lifecycle
7. Navigation
8. Memory
9. Localization
10. Beyond 8.0
http://dev.windowsphone.com/
http://www.developer.nokia.com/
http://mrlacey.com/
10 tips for porting to Windows Phone 8

More Related Content

Similar to 10 tips for porting to Windows Phone 8

Similar to 10 tips for porting to Windows Phone 8 (20)

20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발20150728 100분만에 배우는 windows 10 앱 개발
20150728 100분만에 배우는 windows 10 앱 개발
 
F# And Silverlight
F# And SilverlightF# And Silverlight
F# And Silverlight
 
Internet Explorer 8 Developer Overview
Internet Explorer 8 Developer OverviewInternet Explorer 8 Developer Overview
Internet Explorer 8 Developer Overview
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
 
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
Visual Studio | Lanzamiento VS2017 en Buenos Aires - 11/03/2017
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on Mobile
 
Making Your Site Look Great in IE7
Making Your Site Look Great in IE7Making Your Site Look Great in IE7
Making Your Site Look Great in IE7
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
 
Vaadin Components
Vaadin ComponentsVaadin Components
Vaadin Components
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995
 
Ruby For Startups
Ruby For StartupsRuby For Startups
Ruby For Startups
 
21 android2 updated
21 android2 updated21 android2 updated
21 android2 updated
 
Exchange 2010 Web Services
Exchange 2010 Web ServicesExchange 2010 Web Services
Exchange 2010 Web Services
 
Developing in android
Developing in androidDeveloping in android
Developing in android
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5Dave Orchard - Offline Web Apps with HTML5
Dave Orchard - Offline Web Apps with HTML5
 

More from Matt Lacey

More from Matt Lacey (20)

Modern XAML Development - Matt Lacey
Modern XAML Development - Matt LaceyModern XAML Development - Matt Lacey
Modern XAML Development - Matt Lacey
 
Is your mobile app as secure as you think?
Is your mobile app as secure as you think?Is your mobile app as secure as you think?
Is your mobile app as secure as you think?
 
A look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processingA look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processing
 
Intro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUGIntro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUG
 
Wpug vserv developer deck- march 2014 global
Wpug  vserv developer deck- march 2014 globalWpug  vserv developer deck- march 2014 global
Wpug vserv developer deck- march 2014 global
 
Pricing mobile apps
Pricing mobile appsPricing mobile apps
Pricing mobile apps
 
Preparing for WP8
Preparing for WP8Preparing for WP8
Preparing for WP8
 
Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)
 
Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)
 
WPSDK 7.1.1
WPSDK 7.1.1WPSDK 7.1.1
WPSDK 7.1.1
 
Deep linking and secondary tiles
Deep linking and secondary tilesDeep linking and secondary tiles
Deep linking and secondary tiles
 
PhoneGap @ LDNUG
PhoneGap @ LDNUGPhoneGap @ LDNUG
PhoneGap @ LDNUG
 
Introducing Windows Phone 7 Development
Introducing Windows Phone 7 DevelopmentIntroducing Windows Phone 7 Development
Introducing Windows Phone 7 Development
 
WP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScriptWP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScript
 
Xna for wp7
Xna for wp7Xna for wp7
Xna for wp7
 
Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?
 
Developing for Windows7 with the APICodepack
Developing for Windows7 with the APICodepackDeveloping for Windows7 with the APICodepack
Developing for Windows7 with the APICodepack
 
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
 
Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)
 
Mobilise your ASP.NET website
Mobilise your ASP.NET websiteMobilise your ASP.NET website
Mobilise your ASP.NET website
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

10 tips for porting to Windows Phone 8

Editor's Notes

  1. Ask questions, butAround all day
  2. How much will be relevant
  3. Pride in craftsmanshipAttention to detailEngineer the experience to feel polished at every stageBe fast and fluidImmersive and responsiveUse motion to bring life and continuityAuthentically digitalTake advantage of the digital mediumInfographic not iconographicRealism, skeuoporphs and verisimilitudeDo more with lessPurposeful experienceContent, not chromeFierce reduction of UI elementsWin as oneNative integrationAcross form factors and experiencesStructure to aid creativity, not inhibit it
  4. Because we can do principles without language
  5. You can be visually stunning
  6. Can adjust to the conventions of the platform
  7. Can still reflect brand identity
  8. iOS – Pure Android – iOS7Your app on Windows Phone won’t be compared visually with how it look on other platforms
  9. Reviews last
  10. Summary overview, encourage exploration, like a magazine cover
  11. Not exactly like a tab control.Intended to show related items or differing views of the same data – e.g. emailNot for wizard type interface
  12. Lots of optionsDefinitely value for money to be hadToolkit &amp; Telerik
  13. RadControls essentially freeLarge range of other Open Source controls available too: GeekChamp, GitHub, Codeplex
  14. State machine3 lines of code is actually 60
  15. ReSharper – CodeRush - JustCode
  16. Aids testability
  17. Is code behind bad
  18. Suspend and resumeFAS &amp; FAR
  19. http://www.fanpop.com/clubs/nintendo/images/26503062/Agents – periodic &amp; intensiveDownloading
  20. Pride in craftsmanshipAttention to detailEngineer the experience to feel polished at every stageBe fast and fluidImmersive and responsiveUse motion to bring life and continuityAuthentically digitalTake advantage of the digital mediumInfographic not iconographicRealism, skeuoporphs and verisimilitudeDo more with lessPurposeful experienceContent, not chromeFierce reduction of UI elementsWin as oneNative integrationAcross form factors and experiencesStructure to aid creativity, not inhibit it
  21. don&apos;t break the back stack - be predictable
  22. don&apos;t break the back stack - be predictable
  23. exceptions- end of flow- long navigation- poss. deep link. Toast, not tile?
  24. exceptions- end of flow- long navigation- poss. deep link. Toast, not tile?
  25. 190+ countries &amp; 50 languagesLocalization can be an easier way to reach more users than porting to another platform
  26. Still 10 million devices out there. Only just moved to less than 50% of WP devicesVery easy to support both, especially if not using functionality specific to 87 apps run unmodified + some functionality available via reflection
  27. IDC estimates 30M WP devices by Christmas, but 200M Windows8 installsCan share code, even the same libraries as there are commonalities to the APIs of bothDon’t share the same UI though.