Practical PHP Refactoring: Tease Apart Inheritance
Refreshing AppFuse's UI with Twitter Bootstrap
wxPython: Showing 2 Filetypes in wx.FileDialog
Windows Phone lacks developer experience first thinking.
Today I read that Apple iPhone makes more money than Microsoft does all up, that is to say the phone that Steve Ballmer the CEO of Microsoft used to mock â generates more revenue than his entire company does (who is laughing now).
It got me thinking, let us assume you were inside Microsoft today and you heard this news for the first time, how would you react? How would you adjust your core strategies overall and how do you think this will play out?
Inside Microsoft they have a vision, it centres on the Windows 8 or bust mentality, and that for me is something of a concern given, they really have not done anything new to be openly honest.
Yes, there is Metro which is new, well not really, the initial design execution is new but the concept of taking a minimalist approach to the desktop has been around for quite some time (Adobe really did this well with their CS5 and CS4 product UIâs which youâd be an idiot if you assumed had no influence in design today).
The web has been also doing grid based design for as long as I can remember, so thatâs nothing pioneerish going on here either. The idea of some NUI effects and control, sure thatâs new I guess but not enough to flip the world into a new way of doing software interaction and development in fact it probably falls down when it comes to data density.
What is new then? The most obvious piece to what is new in this saga is the reality that Microsoft faces around its future. The industry has grabbed Microsoft by the shirt and dragged them into focusing on User Experience first, Technology second and what is so striking about the metro + Microsoft story is that its hinting at some new thinking.
What hasnât changed though is the technology first approach, Microsoft continues to retreat to its initial bad behaviour, that is to say it thinks in technical terms and not in experience terms. What hasnât change is that each team is left to interpret the experience strategy and what hasnât changed is that Product teams make, marketing / evangelism sustain and the divide occurs resulting in both teams looking at one another as if âits your fault we donât have adoptionâ.
Allow me to illustrate.
Games make up for about 64% of the current Windows Phone 7 sales, which is a little bad given if youâre an Application developer depending on your category of choice you stand to only tap into around 8% of the audience purchasing power.
That aside, Games are the golden ticket in the Windows Phone 7 way of life. Ok, so letâs build a game? Open up your browser and start typing search terms for Windows Phone 7 game tutorials and XNA or whatever you feel is appropriate.
You should be coming up short on examples that mostly live in a small spread across Microsoft random websites that constantly change context and when youâre done there, you should also be drowning in blog posts that are either extremely detailed or very shallow (not quite in between).
That for me is a problem, if I were in the team Iâd be looking at this from a perspective of two things. How can I market the potential of this platform in a game centric device world and secondly assuming that thread is off and running how can I sustain this momentum once the devs have taken the bait.
Iâm not saying that the key to Windows Phone 7 overtaking the iPhone is games, thereâs probably a thousand or more things that need to occur before you even embark on that discussion, what I am saying is the grass roots fundamentals arenât in place.
Lets say I click my fingers and the $500million spent on marketing to date actually worked, you have an audience of Windows Phone 7 folks over the next 2 years running hot in potential sales of the device. Congrats, 1 in 5 mobile phones sold today are Windows Phone 7.
Now what.
How do you sustain that momentum, how do you encourage more and more solutions to be built for the phone and lastly how do you retain control over the entire experience.
This is a huge problem today within Windows itself, there is so much energy spent on promoting the entire vision of WinRT and its future(s) but there is no on ramping to help the solutions delivery for this vision. Instead, it is a lot of wait and see?
Android has had next to no marketing but yet its retaining a steady share and Iâd argue that its developer base of java and mono geeks have really taken this bad boy out for a test drive. Itâs not a huge learning curve either, in under a week I was mucking around with the Android development and Iâd say the community backing for this phone is quite loud despite the randomness of Google.
Itâs still just as bad as Windows Phone 7 but thatâs fine, reason being this is typical with any Google solution â Microsoft however can be better than that? They can on board people faster and with more energy than their competitors do as they are staffed worldwide better.
If you ask me, the phone itself is one thing but if the experience at the developer to consumer is filled with random noise and less signal around getting solutions to a mature level of quality, then thatâs just the first strike and more to come shall follow.
There is a reason why the Windows Phone 7 marketplace is filled with crappy games or apps, some are good but they arenât as rich as the iPhone (even then iPhone has crap to).
Iâd argue that the competitive advantage Microsoft has right now that isnât being capitalised on is the stark reality that they have a development experience that is quite rich and inviting the downside is once you get past the Powerpoint style development and want to actually build a Minecraft / Voxel Engine on a phone well you come up short.
If Microsoftâs vision is to ramp developers onto C++ then where is the investment on learning C++? DirectX? XNA? OpenGL? Etc. etc.
This phone needs much more than guys dropping the phone in a urinal as way to entice the masses to the cause. It needs to start at the experience level and work its way back to the technical detail(s). Its not just about building yet another Microsoft website that doubles down on Tutorials its more about thinking and engaging developers in ways that they understand or need massive leaps in thinking around. If Windows 8 and its device strategy canât sustain the developer base and relies heavily on the market to teach the masses, then its yet another failure on the horizon. Same tactics as last time only more glitter.
Related Posts:jQuery "Pinify" Plugin Tutorial for Building App-Like Sites
1.7 Tutorials, CometD 2.4.0, Wink Toolkit 1.4.1, and Documentation Feedback
This past week included four significant announcements:
- The Dojo Tutorial series has been updated to include version 1.7 of Dojo. Read the announcement from SitePen for more details.
- Wink Toolkit has been updated to version 1.4.1. Wink Toolkit is a Dojo Foundation project that is mobile-specific, now builds on AMD, and is now easy to use with Dojo. See the Community Connections demo app which shows off using Dojo and Wink together, and introduces some of the committers to Dojo and Wink.
- CometD has released version 2.4.0. In addition to improving their WebSockets support, they have also updated their Dojo client to work with Dojo 1.7.1 (though it does not yet support AMD).
- We’ve long heard that we have issues with our documentation, and in spite of our best efforts to improve them, especially with the tutorials, we need help identifying and resolving issues with our docs. If you’re interested in contributing, less us know on the mailing list or on IRC. But even if you’re not interested in that level of help, we’ve simplified the feedback process. At the bottom of each API viewer and tutorial page (and soon reference guide as well), you’ll find a link to a quick feedback form. If you see an issue on the page you’re reviewing, simply click the link, type in a note with the details of the problem, and we’ll make it a priority to fix.
Limit your abstractions: Analyzing a DDD application
Model Templates in Django without Denormalization
Number- New HTML5 Input type
New Mocking Capabilities in JustMock Q3 2011 SP
Telerik JustMock received many new features in the service pack for the Q3 2011 release, enhancing the mocking frameworkâs impressive ability to mock almost everything. Letâs take a look at a few highlights of JustMock Q3 2011 SP.
Mock Inside a ThreadpoolMock objects can be accessed inside of another thread and work as expected.
var mockable = Mock.Create<Mockable>();
Mock.Arrange(() => mockable.IsMocked).Returns(true);
bool mocked = false;
var latch = new WaitLatch();
ThreadPool.QueueUserWorkItem(cookie =>
{
try
{
mocked = mockable.IsMocked;
}
finally
{
latch.Signal();
}
});
latch.Wait();
Assert.IsTrue(mocked); The callback for ThreadPool.QueueUserWorkItem accesses the mock object, and the expected value is returned.
Asserting Occurrence in Extension Method
You can now ensure occurrences for extension methods to your mocked objects.
var sequence = Mock.Create<IEnumerable<int>>(); Mock.Arrange(() => sequence.First()).Returns(1).OccursOnce(); int result = sequence.First(); Assert.AreEqual(1, result); Mock.Assert(sequence);
In this example, sequence.First() is only called once, passing the test.
IgnoreInstance in Fluent ExtensionsMehfuz Hossainâs article on Future Mocking with IgnoreInstance describes this feature added in JustMock Q3 2011, but you may have noticed he didnât use the Fluent API. It is now present in these extensions, so the example in the original blog post can be written as follows:
var fakeUsed = Mock.Create<UsedClass>();
fakeUsed.Arrange(mock => mock.ReturnFive()).Returns(7).IgnoreInstance();
Assert.AreEqual(7, fakeUsed.ReturnFive());
Assert.AreEqual(7, new UsedClass().ReturnFive()); Whichever style you prefer, mocking tightly coupled class is simple with JustMock.
Invoke Call with Expression Argument with Dynamic ValueThis feature gives you granular control over an arrangement utilizing a lambda expression.
var repository = Mock.Create<IBookRepository>();
var service = new BookService(repository);
var expected = new Book { Title = "Adventures" };
Mock.Arrange(() => repository.GetWhere(book => book.Id == 1))
.Returns(expected)
.MustBeCalled();
var actual = service.GetSingleBook(1);
Assert.AreEqual(actual.Title, expected.Title); In this example, service.GetSingleBook(1) is calling its dependent repository with the expression: book => book.Id == id. The parameter âidâ is a dynamic value.
public class BookService
{
private IBookRepository repository;
public BookService(IBookRepository repository)
{
this.repository = repository;
}
public Book GetSingleBook(int id)
{
return repository.GetWhere(book => book.Id == id);
}
} JustMock will now match book.Id == 1 to book.Id == id when id is equal to one. The expression must match value types. For example, book.Id > 0 will never be called by service.GetSingleBook(1).
Better Access to Documentation
The Getting Started Guide and example projects are now found in the start menu under Telerik | JustMock.
These resources can help you find the solution to nearly any mocking scenario. The Getting Started Guide is the bulk of the English documentation. However, we view tests as documentation as well. Thatâs why the example projects provide a hands-on approach, unit testing JustMock itself.
The documentation is also available in Help3 for download in a separate ZIP file.
Whatâs Coming?Our Q1 2012 Webinars are just around the corner. If you attend the Whatâs New in Tools for Better Code webinar, you can see live demos of the features mentioned in this blog post and much, much, more. One lucky winner from the Just* webinar will receive a Telerik Ultimate Collection worth $1999. More importantly, you will sharpen your ninja skills to write better code!
Browsing Blobs within a container using the Windows Azure Node SDK
Video Tutorials for Azure on Cloud9
Venn Diagram entirely in CSS
Backbone.js vs Ember.js
DZone's Different!
The week in qooxdoo (2012-02-03)
Just referencing the list of bugfixes, as most team members were absent this week or busy with unresolved tasks:
BugfixesFor a complete list of tasks accomplished during the last working week, use this bugzilla query.
Have a nice weekend.
End-of-week SilverlightShow Content Recap (2/3/2012)
Below you may find a summary of all new content we've published on SilverlightShow throughout the week January 30 - February 5, 2012:
- New Articles
- Webinar News
- Ebook News
- Forum News
- 50+ fresh new stories by our valued bloggers and community sites
- Using the Live SDK in Windows 8 XAML/C# Metro Applications by Michael Crump
- Windows 8 and the future of XAML: Part 2: The Windows Runtime (WinRT) by Gill Cleeren
- Recording of Webinar 'Metro and WinRT for the Silverlight/WPF Developer: Part 1' by Gill Cleeren
- Winners of free ebooks from our yesterday's Metro/WinRT webinar
- Part 2 of the Webinar 'Metro and WinRT for Silverlight/WPF' scheduled for Feb 9th
- 7 Deadly Sins for Windows Phone Developers: Day #1 Pride
- LeakEvent -> WeakEvent in Silverlight
- New Silverlight Video Tutorial: How to make Sliding Panels all in Blend
- Refactoring Windows 8 Code-Behind to MVVM
- Why Windows Phone needs WinRT
Monday (January 30th, 2012)
- Create Your Own Skin For The Windows Phone 7 Emulator
- Accelerometer Sensor for Windows Phone 7
- Winning on the Marketplace: The differentiation game
- How to implement communication between Silverlight and the HTML host
- Templating a XAML CheckBox to a thumbs-up/down control using Expression Blend
- Creating a Visual Studio LightSwitch Screen Template
- Windows Phone Tutorial: Playing A Sound, Simplified
- How to Turn On/Off Synchronization of Windows 8 Personalization with Windows Live ID
- Windows 8 Metro style app recap
- 31 Weeks of Windows Phone Metro Design | #5 Choosing between Panoramas, Pivots and/or Pages
- How I ended up using WebBrowser instead of a TextBlock in a Windows Phone application
- Top 10 sharks using Expression Design, Free Blend & XAML
- WP7 – Changing Visuals Based on Phone Theme with ThemeToStateBehavior
Tuesday (January 31st, 2012)
- SilverlightShow 'Metro & WinRT' Webinar Split Into Two Parts. Slides for Part 1 Available!
- SilverlightCream Top 5 News for Week January 23-29, 2012
- Telerik Chart Legend in Metro Style
- Windows Phone 7 - Location Service and Bing Maps
- Something's Missing from the WebBrowser Control
- More on the New OData T4 Template: Service Operations
- How to Write Your First WinRT XAML Metro App
- Creating A LightSwitch Theme Extension using Expression Blend
- Acting on file management feedback for Windows 8
- The Big Dummies Guide for Windows Phone Developer Resources
Wednesday (February 1st, 2012)
- Common Marketplace ingestion errors and how to avoid them
- Top 10 Tips for Building a Windows Phone App
- Code to send game invite to multiple user in Windows Phone
- Displaying static maps on the Windows Phone for performance and scenario wins
- Using JQuery with WinJS
- 13 Windows 8 features worth knowing about
- MVVMLight Hello World in 10 Minutes
- 7 Deadly Sins for Windows Phone Developers: Day #2 Envy
- How To Use leaderboards on Windows Phone with XPG
- Memory Profiling for Application Performance
- HTML5 on Windows Phone: A Simple Boilerplate
- Windows Phone Resources
Thursday (February 2nd, 2012)
- 7 Deadly Sins for Windows Phone Developers: Day #3 Sloth
- EvenTiles from Start to Finish, Part 16 - Using Launchers inside your application
- Implementing Trial Functionality for Windows Phone applications
- Deploying LightSwitch Applications to Windows Azure
- Learn Windows Phone 7 Development in 31 Days – Day 1 – Getting Started with WP7
- Register for Q1 Release Webinar by Telerik - Sharpen your .Net Ninja Skills
- Windows 8 Photoshop Templates
- Fixing the Mango Microphone Issue – Part 1
- Windows Phone Design Guidelines on MSDN
Friday (February 3rd, 2012)
- Windows Phone 8 Detailed
- Windows 8 Touch Events Interactions
- Get Your Windows Phone Applications in the Marketplace Faster
- 7 Deadly Sins for Windows Phone Developers: Day #4 Wrath
- Horizontal Scrolling in RadDataBoundListBox now available
- Using Skydrive in your Windows Phone applications: part2
- LightSwitch Community & Content Rollup–January 2012
- Missing Background Image on Panorama Control breaks ContextMenu and Causes Performance Issues in Windows Phone Applications
- The Windows Phone Marketplace Needs an Affiliate Program
- How to Databind SelectedItems of the ListPicker and RecurringDaysPicker
Recording of Gill Cleeren's 'Metro and WinRT for the Silverlight/WPF Developer' webinar is now available
The recording of Gill Cleeren's yesterday SilverlightShow webinar - Metro and WinRT for the Silverlight/WPF Developer - is now online.
Watch the webinar recording | View the webinar slides | Download the demosIn this webinar, which is part 1 from a 2-part session (join part 2 next week) Gill Cleeeen demonstrated how you can transfer your Silverlight/WPF knowledge to the new Metro-way of building applications. He did this by looking at a working application containing most of the features you’ve come to love in Silverlight.
Agenda for part 1 was:
1. General XAML stuff for Windows 8
2. Old and new controls
3. Finding your way with navigation
Agenda for part 2 (Feb 9th) is:
1. Styling and templating
2. Data in your Windows 8 apps: Getting data, data binding
3. The Application Lifecycle (Copyright 2010 Windows Phone 7)
4. Tiles and more (Copyright 2010 Windows Phone 7)
5. IO’ing in Metro apps
As usual, we had some small gifts for the attendees who joined and supported the event - 3 free copies of Gill's SilverlightShow ebook ''Getting Ready for Microsoft Silverlight Exam 70-506' and 2 free ebooks ''Microsoft Silverlight 4 Data and Services Cookbook'' from Packt Publishing. See who got the ebooks!
Stay in touch with SilverlightShow (via RSS, Twitter, Facebook or LinkedIn) to be the first to know about upcoming webinars!
Running Sentry on DotCloud
Recording of Webinar 'Metro and WinRT for the Silverlight/WPF Developer: Part 1' by Gill Cleeren
Download the webinar slides (ppt / pptx) | Download the demos
Webinar summary: Are you currently building XAML-based applications using Silverlight or WPF? And are you afraid that all you’ve learned in the past is now suddenly obsolete? Then you should really attend this webinar and be amazed!
We’ll see how you can transfer your knowledge to the new Metro-way of building applications. We’ll do this by looking at a working application that contains most of the features you’ve come to love in Silverlight.
You’ll learn that things like data binding, styling, controls and much more can be leveraged to build applications in Windows 8. After this webinar, you will see that all of a sudden, you are already an experienced Metro app developer! A big smile is guaranteed after this talk!
Level 250-300
Agenda for part 1:
1. General XAML stuff for Windows 8
2. Old and new controls
3. Finding your way with navigation
Part 2 of the "Metro and WinRT for the Silverlight/WPF Developer" is scheduled for February 9th, 2012, 10 am PDT (see your local time). Sign up now | View agenda
Some small prizes were given in this webinar:
- Three free copies of Gill Cleeren's ebook 'Getting Ready for Microsoft Silverlight Exam 70-506'
- and 3 free ebooks 'Microsoft Silverlight 4 Data and Services Cookbook' by Packt Publishing
Enjoyed this webinar? Gill Cleeren has a 4-day training session on XAML!
XAML on Silverlight 5, WP7, Win 8 Metro & WPF: a 4-day Training in London, UK
February 20-23, 2012, from 9.00 am till 5.00 pm | Trainer: Gill Cleeren | Training page
This training will focus on mastering XAML on the following platforms: Silverlight 5, Windows Phone 7, Windows 8 Metro and WPF.
The goal of this training is to teach the students to work with XAML by using it on one platform, and then apply the knowledge they already have to other platforms. A focus will be put on the differences between all platforms, as well as the aspects in which they overlap.
Fee for the full 4-day training course: £ 1.700 + VAT.
