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

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

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
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.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...
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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...
 
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
 

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.