In about 2 weeks now, I’ll have the chance to be part of the French TechDays in Paris as a speaker. This year, I’ll own a session called “Windows Phone performance analysis & optimisation” with my colleague Charlotte.
The agenda looks like the following:
- why performance analysis ?
- device vs emulator
- leveraging WP7 threads
- using the VS profiler for WP7
- tips and tricks
During the session we will use a “real” app we’re working on for a few months now (I’ll share more details after the session). We have some cool tips that haven’t been shared anywhere before, so if performance is a topic of interest for you, stat tuned !
Click on the following image for a link to the TechDays website:
I’m planning to share the most of the content of this session on my blog soon after the event.
Don’t hesitate to stop by and say hi…
Next Wednesday (November 9th), I’ll be at the Microsoft Days 11 as a member of the Ask The Expert team. I’ll be playing with the Samsung Slate I got at //BUILD/, discussing WPF, Silverlight, Windows Phone 7 and Windows 8.
Don’t hesitate to stop by and say hi if you’re coming to this event !
As promised, here is a blog post which shares source code and slides for the Rx talk I gave during last TechDays in Paris. I animated this session with my co-worker Charlotte and with Mitsu.
Download slides here.
Download source code here.
Demo1: Drag’n’drop in a WPF application
The goal was to implement a basic drag’n’drop functionality in a WPF application. The Rx query looks like the following:
var query = from mouseDown in this.image.GetMouseLeftButtonDownObservable()
let downPosition = mouseDown.EventArgs.GetPosition(this)
let rect = new Rect(downPosition.X - 10, downPosition.Y - 10, 20, 20)
let delta = mouseDown.EventArgs.GetPosition(this.image)
from mouseMove in this.GetMouseMoveObservable()
.Select(ea => ea.EventArgs.GetPosition(this))
.SkipWhile(p => rect.Contains(p))
.DoOnce(p => this.onMouseEnter.Begin(this.image))
.Select(p => p.Offset(delta))
.Finally(() => this.onMouseLeave.Begin(this.image))
query.Subscribe(p => this.image.SetPosition(p));
Demo2: online Twitter search and Bing map geolocalization
This time, the goal was to query Twitter asynchronously and to geolocalize the associated Tweets. The Rx query:
.DistinctUntilChanged((ea) => this.textbox.Text)
.Do(ea => this.ShowLoadingIndicator())
.Select(ea => TweeterHelper.Search(this.textbox.Text))
.Select(page => TweeterHelper.ParseTwitterSearch(page))
this.listbox.ItemsSource = tweets;
Demo3: using the accelerometer in a Windows Phone 7 application
The last demo was about the usage of the accelerometer in a Windows Phone 7 application. Here is the relevant Rx query:
private void MoveEllipse(IObservable<Acceleration> accelerationObservable)
.Select(accCouple => new Acceleration(accCouple.First(), accCouple.Last()))
.Do(acc => this.textBlock.Text = acc.ToString())
.Scan(new Point(x0, y0), (point, acc) => point.Move(acc).ClipTo(horizontalInterval, verticaInterval))
.Subscribe(p => this.ellipse.SetCenter(p));
Doing this session was a really great experience ! I’d like to thank Charlotte and Mitsu for doing it with me. Also, I’d like to thank all users who came to the presentation !