From around 1995 until 2010 there was really only one operating system for client
computing: Windows.

Prior to 1995 there were a lot of options, though most not recognizable to users today:
3270 terminals, VT terminals, OS/2, Windows, DOS, CPM, and a bunch of others. Now
most of these weren’t “client computing”, they were relatively dumb terminal technologies
that provided access to a server (back then called a mainframe or minicomputer). Very
much like today’s web browser (sans JavaScript).

Today we’ve returned to a chaotic landscape of client computing: browsers, Windows,
iOS, OS X, Android, Linux (for the daring), and of course it isn’t like the pre-1995
technologies went away, they are just mostly emulated in Windows. What is interesting
though, is that most of today’s client computing technologies do actually
enable smart client software development. This includes the browser which can be
used as a smart client technology via JavaScript development, even though the majority of
browser “apps” are actually just colorful versions of 1990-era terminal-based computing
where the processing is all on a server/mainframe/minicomputer/whatever-you-want-to-call-it.

What is interesting about this return to client-side chaos is that it has reopened
the door for third party developer tools as a niche market.

In the early 1990’s there were quite a number of companies selling developer tools for
other company’s platforms. Borland with C++, Delphi and TurboPascal, Gupta with
SqlWindows, Powerbuilder, and a lot more.

When Windows became the dominant client computing platform most of these dev tools
fell by the wayside (not that they went away, they just stopped being mainstream).
This was because they couldn’t compete with Microsoft’s dev tools, which were always
in sync with the platform in a way that was probably too expensive for third parties
to match.

I think it is notable that our return to client computing chaos (or pluralism?) today
has already led to numerous third party dev tool vendors that sell dev tools for
other company’s platforms. Xamarin, PhoneGap, Telerik’s tools, and a lot more.

What is different to me is that in the early 1990’s I thought it was pretty obvious
that Windows would become a dominant platform, and I tended to argue against using
third party dev tools because I thought they’d have a rough go of it. As cool as Delphi
was, I always recommended VB.

Today I’m not so sure. I don’t see any of today’s platforms becoming dominant in the
foreseeable future. It is hard to imagine Windows returning to its monopoly status,
but I can’t imagine iOS or Android or OS X displacing Windows as the primary corporate
desktop computing environment either.

As a result we business developers need some way to build software independently of
any particular platform or OS vendor, because we must assume all our business software
will need to run on multiple platforms and OSes.

So today I find myself in the inverse of my early 1990’s stance, in that I’m reasonably
convinced that building smart client software (at least for business) means using
third party dev tools from vendors that aren’t tied to any one platform.

Of course I’ve spent the last 14 years in the .NET world, so naturally I gravitate
toward a combination of Xamarin and Microsoft
.NET as a way to use my C# and .NET knowledge across all platforms. I get to develop
in Visual Studio on Windows where I’m most comfortable, and my resulting software
runs on Android and iOS as well as on Windows Desktop, Phone, and WinRT.

As far into the future as I can see there’s no obvious platform/OS “winner”, so as
a developer the question isn’t which platform to target, it is which third party dev
tool reaches all platforms with a solid strategy that will stand out and thrive over
the next many years.

Third Party Dev Tools Strike Backhttp://www.lhotka.net/weblog/PermaLink,guid,48ba54b3-eab6-493a-aa85-c064155d1d29.aspxhttp://www.lhotka.net/weblog/ThirdPartyDevToolsStrikeBack.aspx
Mon, 14 Jul 2014 19:00:31 GMT<p>
From around 1995 until 2010 there was really only one operating system for client
computing: Windows.
</p>
<p>
Prior to 1995 there were a lot of options, though most not recognizable to users today:
3270 terminals, VT terminals, OS/2, Windows, DOS, CPM, and a bunch of others. Now
most of these weren’t “client computing”, they were relatively dumb terminal technologies
that provided access to a server (back then called a mainframe or minicomputer). Very
much like today’s web browser (sans JavaScript).
</p>
<p>
Today we’ve returned to a chaotic landscape of client computing: browsers, Windows,
iOS, OS X, Android, Linux (for the daring), and of course it isn’t like the pre-1995
technologies went away, they are just mostly emulated in Windows. What is interesting
though, is that most of <em>today’s</em> client computing technologies do actually
enable smart client software development. This includes the browser which <em>can</em> be
used as a smart client technology via JavaScript development, even though the <em>majority</em> of
browser “apps” are actually just colorful versions of 1990-era terminal-based computing
where the processing is all on a server/mainframe/minicomputer/whatever-you-want-to-call-it.
</p>
<p>
What is interesting about this return to client-side chaos is that it has reopened
the door for third party developer tools as a niche market.
</p>
<p>
In the early 1990’s there were quite a number of companies selling developer tools <em>for
other company’s platforms</em>. Borland with C++, Delphi and TurboPascal, Gupta with
SqlWindows, Powerbuilder, and a lot more.
</p>
<p>
When Windows became the dominant client computing platform most of these dev tools
fell by the wayside (not that they went away, they just stopped being mainstream).
This was because they couldn’t compete with Microsoft’s dev tools, which were always
in sync with the platform in a way that was probably too expensive for third parties
to match.
</p>
<p>
I think it is notable that our return to client computing chaos (or pluralism?) today
has already led to numerous third party dev tool vendors that sell dev tools <em>for
other company’s platforms.</em> Xamarin, PhoneGap, Telerik’s tools, and a lot more.
</p>
<p>
What is different to me is that in the early 1990’s I thought it was pretty obvious
that Windows would become a dominant platform, and I tended to argue against using
third party dev tools because I thought they’d have a rough go of it. As cool as Delphi
was, I always recommended VB.
</p>
<p>
Today I’m not so sure. I don’t see any of today’s platforms becoming dominant in the
foreseeable future. It is hard to imagine Windows returning to its monopoly status,
but I can’t imagine iOS or Android or OS X displacing Windows as the primary corporate
desktop computing environment either.
</p>
<p>
As a result we business developers need some way to build software independently of
any particular platform or OS vendor, because we must assume all our business software
will need to run on multiple platforms and OSes.
</p>
<p>
So today I find myself in the inverse of my early 1990’s stance, in that I’m reasonably
convinced that building smart client software (at least for business) means using
third party dev tools from vendors that aren’t tied to any one platform.
</p>
<p>
Of course I’ve spent the last 14 years in the .NET world, so naturally I gravitate
toward a combination of <a href="http://www.xamarin.com">Xamarin</a> and Microsoft
.NET as a way to use my C# and .NET knowledge across all platforms. I get to develop
in Visual Studio on Windows where I’m most comfortable, and my resulting software
runs on Android and iOS as well as on Windows Desktop, Phone, and WinRT.
</p>
<p>
As far into the future as I can see there’s no obvious platform/OS “winner”, so as
a developer the question isn’t which platform to target, it is which third party dev
tool reaches all platforms with a solid strategy that will stand out and thrive over
the next many years.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=48ba54b3-eab6-493a-aa85-c064155d1d29" />http://www.lhotka.net/weblog/CommentView,guid,48ba54b3-eab6-493a-aa85-c064155d1d29.aspxAndroidiOSWindows PhoneWinRTXamarinhttp://www.lhotka.net/weblog/Trackback.aspx?guid=39fa911a-c3c2-473f-9050-055bec37fa7ahttp://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,39fa911a-c3c2-473f-9050-055bec37fa7a.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,39fa911a-c3c2-473f-9050-055bec37fa7a.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=39fa911a-c3c2-473f-9050-055bec37fa7a2

As well all know, portable class libraries are pretty cool, but are restricted by
the “lowest common denominator” effect.

For example, CSLA .NET supports the use of DataAnnotations along with the richer CSLA
rules engine.

In trying to create one of the new “Universal PCL” assemblies to support WinRT on
Win8 and WP8 I ran into the fact that WP8 doesn’t support DataAnnotations.

“No problem” I thought, “we already have our own implementation for WP8 Silverlight,
for Android, and for iOS. I’ll just use that code.”

Which worked insofar as that I have a Universal PCL Csla.dll that builds.

But it doesn’t work because I can’t actually use that Csla.dll from WinRT on Win8
because that WinRT already has DataAnnotations and so there are type collisions.

As a result it isn’t clear to me that I can actually create a Universal PCL for CSLA
– at least not one that supports DataAnnotations across all platforms like I’m able
to do if I create one assembly per target platform (like I’ve been doing since 2007
with Silverlight 2).

I guess this makes sense. The guidance around creating a PCL is that you have code
that is simple enough that it doesn’t include any platform-specific implementations
that would be solved easily using #if directives. The internal implementation of some
parts of CSLA is far from simple, and we do use #if directives to optimize for and/or
leverage features of each of the 9 platforms currently supported by CSLA (yes, we
really provide business code portability across NINE different platforms).

My personal feeling is that I’d rather support all 9 platforms as efficiently as possible,
rather than compromise one or more of them just to use a fancy and optional new concept
like the Universal PCL.

(of course if Microsoft and Xamarin add DataAnnotations to Windows Phone 8.1, Android,
and iOS then I wouldn’t need to implement it in CSLA and that would also solve this
problem – so maybe someday :) )

Limitations of Portable Class Librarieshttp://www.lhotka.net/weblog/PermaLink,guid,39fa911a-c3c2-473f-9050-055bec37fa7a.aspxhttp://www.lhotka.net/weblog/LimitationsOfPortableClassLibraries.aspx
Mon, 28 Apr 2014 20:07:47 GMT<p>
As well all know, portable class libraries are pretty cool, but are restricted by
the “lowest common denominator” effect.
</p>
<p>
For example, CSLA .NET supports the use of DataAnnotations along with the richer CSLA
rules engine.
</p>
<p>
In trying to create one of the new “Universal PCL” assemblies to support WinRT on
Win8 and WP8 I ran into the fact that WP8 doesn’t support DataAnnotations.
</p>
<p>
“No problem” I thought, “we already have our own implementation for WP8 Silverlight,
for Android, and for iOS. I’ll just use that code.”
</p>
<p>
Which worked insofar as that I have a Universal PCL Csla.dll that builds.
</p>
<p>
But it doesn’t work because I can’t actually use that Csla.dll from WinRT on Win8
because <em>that</em> WinRT already has DataAnnotations and so there are type collisions.
</p>
<p>
As a result it isn’t clear to me that I can actually create a Universal PCL for CSLA
– at least not one that supports DataAnnotations across all platforms like I’m able
to do if I create one assembly per target platform (like I’ve been doing since 2007
with Silverlight 2).
</p>
<p>
I guess this makes sense. The guidance around creating a PCL is that you have code
that is simple enough that it doesn’t include any platform-specific implementations
that would be solved easily using #if directives. The internal implementation of some
parts of CSLA is far from simple, and we do use #if directives to optimize for and/or
leverage features of each of the 9 platforms currently supported by CSLA (yes, we
really provide business code portability across NINE different platforms).
</p>
<p>
My personal feeling is that I’d rather support all 9 platforms as efficiently as possible,
rather than compromise one or more of them just to use a fancy and optional new concept
like the Universal PCL.
</p>
<p>
(of course if Microsoft and Xamarin add DataAnnotations to Windows Phone 8.1, Android,
and iOS then I wouldn’t need to implement it in CSLA and that would also solve this
problem – so maybe someday :) )
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=39fa911a-c3c2-473f-9050-055bec37fa7a" />http://www.lhotka.net/weblog/CommentView,guid,39fa911a-c3c2-473f-9050-055bec37fa7a.aspxCSLA .NETWindows PhoneWinRTXamarinhttp://www.lhotka.net/weblog/Trackback.aspx?guid=91653d60-9830-4a98-88f4-e64795fa4093http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,91653d60-9830-4a98-88f4-e64795fa4093.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,91653d60-9830-4a98-88f4-e64795fa4093.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=91653d60-9830-4a98-88f4-e64795fa40932

Because the 1520 is just too big. Otherwise I really like it in a lot of ways – high
def screen, easy to read content, very fast, slot for MicroSD card.

But it doesn’t fit nicely into my pockets, and it is very awkward to hold up to my
ear when talking (yes, I often use BlueTooth, but not always).

Mostly though, even with my big hands (I’m 2m tall after all) I can’t use it one-handed.
<insert texting while driving jokes here> In reality this has nothing to do
with driving as I have a good hands-free setup in my truck. This has to do with normal
everyday use of the phone, and the reality that it never works one-handed,
even for basic things like pulling it out of my pocket to answer a call.

I have high hopes for the 1020. It is the size of my 920, which I loved, and has a
much better camera. I don’t believe it has a MicroSD slot though, which is the only
real negative I can see.

Bye Bye Lumia 1520http://www.lhotka.net/weblog/PermaLink,guid,91653d60-9830-4a98-88f4-e64795fa4093.aspxhttp://www.lhotka.net/weblog/ByeByeLumia1520.aspx
Thu, 06 Mar 2014 19:56:47 GMT<p>
I few weeks ago I posted about my new Nokia Lumia 1520 “phablet”: <a title="Lumia 1520- First thoughts" href="http://www.lhotka.net/weblog/Lumia1520FirstThoughts.aspx">Lumia
1520- First thoughts</a>
</p>
<p>
Tomorrow my new Lumia 1020 will replace the 1520.
</p>
<p>
Why?
</p>
<p>
Because the 1520 is just too big. Otherwise I really like it in a lot of ways – high
def screen, easy to read content, very fast, slot for MicroSD card.
</p>
<p>
But it doesn’t fit nicely into my pockets, and it is very awkward to hold up to my
ear when talking (yes, I often use BlueTooth, but not always).
</p>
<p>
Mostly though, even with my big hands (I’m 2m tall after all) I can’t use it one-handed.
&lt;insert texting while driving jokes here&gt; In reality this has nothing to do
with driving as I have a good hands-free setup in my truck. This has to do with normal
everyday use of the phone, and the reality that it <em>never</em> works one-handed,
even for basic things like pulling it out of my pocket to answer a call.
</p>
<p>
I have high hopes for the 1020. It is the size of my 920, which I loved, and has a
much better camera. I don’t believe it has a MicroSD slot though, which is the only
real negative I can see.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=91653d60-9830-4a98-88f4-e64795fa4093" />http://www.lhotka.net/weblog/CommentView,guid,91653d60-9830-4a98-88f4-e64795fa4093.aspxWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=e383a601-ef45-4d19-b7ae-0c8843aaa827http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,e383a601-ef45-4d19-b7ae-0c8843aaa827.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,e383a601-ef45-4d19-b7ae-0c8843aaa827.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=e383a601-ef45-4d19-b7ae-0c8843aaa8271

I’ve had my Nokia Lumia 1520 “phablet” for around 6 hours now and thought I’d record
my earliest thoughts.

(phablet is a term used to describe a huge phone, big enough to be a small tablet
– hence “phablet”)

Good:

The phone is as solid and well built as other Lumia devices

Even though it is bigger than my 920 I don’t think it weighs much more; not what I
expected from such a large device

From what I’ve seen thus far, the battery doesn’t go down unless I run the Waze app
(which drains batteries even if your phone is plugged into a charger)

Reading email, browsing, and other data consumption activities are a lot of fun on
the bigger screen

Not only is the screen bigger, it is 1080p so it is so clear and sharp! Watching Hulu
Plus and NetFlix on this thing is nice!!

Moving from one WP8 device to another is a breeze; all my data and apps are in the
cloud so the new phone just spent a while downloading everything and it just worked!

Neutral:

The GDR3 “Black” update auto-installed on startup, and of course it has nice features
all by itself, but I had that on my 920 already

Though the device is quite large, I mostly talk via BlueTooth headsets or Microsoft
Sync in my truck, so I haven’t yet encountered any awkward moments of holding a phablet
up to my ear

Bad:

Stupid AT&T prevents the Data Sense app from installing to the device; my 920
was a developer device and so it wasn’t blocked (even on ATT), and I really, really,
really miss having Data Sense already (yes, they say I should use the myATT app, but
I’m on a corporate plan so that app is total junk, and even if it did work it wouldn’t
show the useful info shown by Data Sense)

The screen is so big that even with my massive hands I can’t really use the device
with one hand

A small number of apps from the 920 apparently can’t run on the 1520, though that
could be related to me moving from an unlocked dev phone to an AT&T branded device
where they appear to cripple some things

Though the battery life seems to be excellent, charging the battery takes _forever_
– or I’ve got a bad device, because it has been charging for a really long time and
isn’t fully charged yet (and no, the Waze app isn’t running in the background :) )

The device is big enough to be somewhat uncomfortable in the front pocket of my jeans,
so I’m trying the back pocket; hopefully I don’t accidentally sit on it and break
the phone…

On Waze:

Twice I mentioned the Waze app. It is a wonderful app if you need to get somewhere
through traffic, snowstorms, etc. The user-driven data sourcing for traffic and related
events is all in realtime, and I’ve found that Waze gets me around traffic that other
GPS apps (even with traffic data) wouldn’t avoid.

BUT, the Waze app does literally drain the battery on phones even when plugged into
a charger, so it is something you can _only_ use when the phone is plugged into a
charger, and even then only for a relatively short period of time (such as on your
commute to/from work). Even then, I suspect it would totally drain a battery with
a longer commute like people have in some cities…

Lumia 1520: First thoughtshttp://www.lhotka.net/weblog/PermaLink,guid,e383a601-ef45-4d19-b7ae-0c8843aaa827.aspxhttp://www.lhotka.net/weblog/Lumia1520FirstThoughts.aspx
Tue, 04 Feb 2014 03:30:47 GMT<p>
I’ve had my Nokia Lumia 1520 “phablet” for around 6 hours now and thought I’d record
my earliest thoughts.
</p>
<p>
(phablet is a term used to describe a huge phone, big enough to be a small tablet
– hence “phablet”)
</p>
<p>
Good:
</p>
<ol>
<li>
The phone is as solid and well built as other Lumia devices</li>
<li>
Even though it is bigger than my 920 I don’t think it weighs much more; not what I
expected from such a large device</li>
<li>
From what I’ve seen thus far, the battery doesn’t go down unless I run the Waze app
(which drains batteries even if your phone is plugged into a charger)</li>
<li>
Reading email, browsing, and other data consumption activities are a lot of fun on
the bigger screen</li>
<li>
Not only is the screen bigger, it is 1080p so it is so clear and sharp! Watching Hulu
Plus and NetFlix on this thing is nice!!</li>
<li>
Moving from one WP8 device to another is a breeze; all my data and apps are in the
cloud so the new phone just spent a while downloading everything and it just worked!</li>
</ol>
<p>
Neutral:
</p>
<ol>
<li>
The GDR3 “Black” update auto-installed on startup, and of course it has nice features
all by itself, but I had that on my 920 already</li>
<li>
Though the device is quite large, I mostly talk via BlueTooth headsets or Microsoft
Sync in my truck, so I haven’t yet encountered any awkward moments of holding a phablet
up to my ear</li>
</ol>
<p>
Bad:
</p>
<ol>
<li>
Stupid AT&amp;T prevents the Data Sense app from installing to the device; my 920
was a developer device and so it wasn’t blocked (even on ATT), and I really, really,
really miss having Data Sense already (yes, they say I should use the myATT app, but
I’m on a corporate plan so that app is total junk, and even if it did work it wouldn’t
show the useful info shown by Data Sense)</li>
<li>
The screen is so big that even with my massive hands I can’t really use the device
with one hand</li>
<li>
A small number of apps from the 920 apparently can’t run on the 1520, though that
could be related to me moving from an unlocked dev phone to an AT&amp;T branded device
where they appear to cripple some things</li>
<li>
Though the battery life seems to be excellent, charging the battery takes _forever_
– or I’ve got a bad device, because it has been charging for a <em>really long time</em> and
isn’t fully charged yet (and no, the Waze app isn’t running in the background :) )
</li>
<li>
The device is big enough to be somewhat uncomfortable in the front pocket of my jeans,
so I’m trying the back pocket; hopefully I don’t accidentally sit on it and break
the phone…</li>
</ol>
<p>
On Waze:
</p>
<p>
Twice I mentioned the Waze app. It is a wonderful app if you need to get somewhere
through traffic, snowstorms, etc. The user-driven data sourcing for traffic and related
events is all in realtime, and I’ve found that Waze gets me around traffic that other
GPS apps (even with traffic data) wouldn’t avoid.
</p>
<p>
BUT, the Waze app does literally drain the battery on phones even when plugged into
a charger, so it is something you can _only_ use when the phone is plugged into a
charger, and even then only for a relatively short period of time (such as on your
commute to/from work). Even then, I suspect it would totally drain a battery with
a longer commute like people have in some cities…
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e383a601-ef45-4d19-b7ae-0c8843aaa827" />http://www.lhotka.net/weblog/CommentView,guid,e383a601-ef45-4d19-b7ae-0c8843aaa827.aspxWindows PhoneWP8http://www.lhotka.net/weblog/Trackback.aspx?guid=7243ebb2-0068-4f59-a35c-e0f54d6943b2http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=7243ebb2-0068-4f59-a35c-e0f54d6943b22

The final release of CSLA 4 version 4.5.20 is now available for download

CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.

This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.

It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.

One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.

CSLA 4 version 4.5.20 release availablehttp://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspxhttp://www.lhotka.net/weblog/CSLA4Version4520ReleaseAvailable.aspx
Wed, 20 Mar 2013 03:56:18 GMT<p>
The final release of CSLA 4 version 4.5.20 is now available for download
</p>
<p>
<a href="http://www.cslanet.com/Download.html">http://www.cslanet.com/Download.html</a>
</p>
<p>
It is also available via NuGet.
</p>
<p>
CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.
</p>
<p>
This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.
</p>
<p>
It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.
</p>
<p>
One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7243ebb2-0068-4f59-a35c-e0f54d6943b2" />http://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspxCSLA .NETWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=f2b1d727-81c8-49a4-8210-684b3d1633c3http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,f2b1d727-81c8-49a4-8210-684b3d1633c3.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,f2b1d727-81c8-49a4-8210-684b3d1633c3.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=f2b1d727-81c8-49a4-8210-684b3d1633c34

The strangest thing happened this evening.

My wife’s best friend is visiting and we’re watching The Daily Show and the Colbert
Report on the Xbox using Hulu Plus – catching up on our backlog of funny.

All of a sudden the TV goes blank, and then a picture appears on the screen. A picture
from the friend’s phone.

WTF!?!

So we stopped watching the shows and figured out what was going on (sort of).

She has a Samsung phone – one of the ones that is a “rip off” of the iPhone, so it
is a pretty nice smart phone. And her phone is on our wifi.

When looking at a picture on her phone there’s a button at the top of the screen that,
when tapped, sends the photo to the Xbox. It literally takes over the Xbox and shows
the picture. And you can pan through pictures on the phone and they each appear on
the Xbox (TV) – the images streaming from the phone to the Xbox.

On one hand this is pretty cool, and I wonder why my Windows Phone can’t do this?

On the other hand, it is a little scary to think that she was just playing around
with her phone and was able (albeit accidentally) to hijack my Xbox.

Talk about a connected world!

Xbox, phones, and pictureshttp://www.lhotka.net/weblog/PermaLink,guid,f2b1d727-81c8-49a4-8210-684b3d1633c3.aspxhttp://www.lhotka.net/weblog/XboxPhonesAndPictures.aspx
Sat, 09 Feb 2013 05:21:54 GMT<p>
The strangest thing happened this evening.
</p>
<p>
My wife’s best friend is visiting and we’re watching The Daily Show and the Colbert
Report on the Xbox using Hulu Plus – catching up on our backlog of funny.
</p>
<p>
All of a sudden the TV goes blank, and then a picture appears on the screen. A picture
from the friend’s <em>phone</em>.
</p>
<p>
WTF!?!
</p>
<p>
So we stopped watching the shows and figured out what was going on (sort of).
</p>
<p>
She has a Samsung phone – one of the ones that is a “rip off” of the iPhone, so it
is a pretty nice smart phone. And her phone is on our wifi.
</p>
<p>
When looking at a picture on her phone there’s a button at the top of the screen that,
when tapped, sends the photo to the Xbox. It literally takes over the Xbox and shows
the picture. And you can pan through pictures on the phone and they each appear on
the Xbox (TV) – the images streaming from the phone to the Xbox.
</p>
<p>
On one hand this is pretty cool, and I wonder why my Windows Phone can’t do this?
</p>
<p>
On the other hand, it is a little scary to think that she was just playing around
with her phone and was able (albeit accidentally) to hijack my Xbox.
</p>
<p>
Talk about a connected world!
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=f2b1d727-81c8-49a4-8210-684b3d1633c3" />http://www.lhotka.net/weblog/CommentView,guid,f2b1d727-81c8-49a4-8210-684b3d1633c3.aspxWindows PhoneXboxhttp://www.lhotka.net/weblog/Trackback.aspx?guid=8da1c6bb-d8cd-4325-aaff-533f660668f0http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=8da1c6bb-d8cd-4325-aaff-533f660668f02

I have released a beta of CSLA .NET: version 4.5.11, working toward a final release
in a few weeks.

CSLA .NET is an open source software development framework that helps you build a
reusable, scalable, and maintainable object-oriented business layer for your applications.

This update includes a few interesting features/changes.

Adds support for Windows Phone 8 (WP8) development on the Windows Phone Runtime (WinPRT)
platform

Simplifies support for ASP.NET MVC 3 and ASP.NET MVC 4, as well as ADO.NET EF 4 and
5 by splitting functionality into separate assemblies and nuget packages

Changes the local data portal to have the same behavior as a remote data portal for
async calls; specifically this means that the local data portal automatically shifts
all async requests onto a background thread from the thread pool

Transactional attribute now allows you to set the isolation level

Various bug fixes

You can get this prerelease version from nuget in Visual Studio, or you can download
the new Wix-based installer from the CSLA
download page.

CSLA 4.5 version 4.5.11 beta availablehttp://www.lhotka.net/weblog/PermaLink,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspxhttp://www.lhotka.net/weblog/CSLA45Version4511BetaAvailable.aspx
Wed, 06 Feb 2013 23:36:07 GMT<p>
I have released a beta of CSLA .NET: version 4.5.11, working toward a final release
in a few weeks.
</p>
<p>
CSLA .NET is an open source software development framework that helps you build a
reusable, scalable, and maintainable object-oriented business layer for your applications.
</p>
<p>
This update includes a few interesting features/changes.
</p>
<ol>
<li>
Adds support for Windows Phone 8 (WP8) development on the Windows Phone Runtime (WinPRT)
platform
<li>
Simplifies support for ASP.NET MVC 3 and ASP.NET MVC 4, as well as ADO.NET EF 4 and
5 by splitting functionality into separate assemblies and nuget packages
<li>
Changes the local data portal to have the same behavior as a remote data portal for
async calls; specifically this means that the local data portal automatically shifts
all async requests onto a background thread from the thread pool
<li>
Transactional attribute now allows you to set the isolation level
<li>
Various bug fixes
</li>
</ol>
<p>
You can get this prerelease version from nuget in Visual Studio, or you can download
the new Wix-based installer from the <a href="http://www.lhotka.net/cslanet/download.aspx">CSLA
download page</a>.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=8da1c6bb-d8cd-4325-aaff-533f660668f0" />http://www.lhotka.net/weblog/CommentView,guid,8da1c6bb-d8cd-4325-aaff-533f660668f0.aspxCSLA .NETWindows PhoneWP8http://www.lhotka.net/weblog/Trackback.aspx?guid=970ce9b2-a608-4c68-9784-bc0bb0ddc5b1http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,970ce9b2-a608-4c68-9784-bc0bb0ddc5b1.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,970ce9b2-a608-4c68-9784-bc0bb0ddc5b1.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=970ce9b2-a608-4c68-9784-bc0bb0ddc5b16

With all the new terminology and conceptual surface area that comes with Windows 8,
I think it is important to have some clarity and consistency around the terms and
concepts.

Here are some of the basic terms:

Windows 8 – the new operating system that runs in a “dual mode”:
Desktop (Win32) and WinRT (Windows Runtime)

Windows RT – Windows 8 on ARM devices (note: Windows RT and WinRT
are not the same thing)

Windows 8 UI style – a user experience design language often used
when building WinRT applications

Windows 8 basically includes two different operating systems.

One is the “old” Win32 OS we think of today as Windows 7. This is now called Windows
8 Desktop, and is available on Windows 8 Intel tablets, laptops, and desktops. This
is only partially available on ARM devices, and you should not expect to build or
deploy Win32 Desktop apps to ARM devices.

The other is the new Windows Runtime (WinRT) “operating system”. This is a whole new
platform for apps, and is available on all Windows 8 machines (ARM, Intel, tablet,
laptop, desktop). If you want the widest reach for your apps going forward, you should
be building your apps for WinRT.

Confusingly enough, “Windows 8” runs on Intel devices/computers. “Windows RT” is Windows
8 for ARM devices. The only real difference is that Windows RT won’t allow you to
deploy Win32 Desktop apps. Windows RT does have a Desktop mode, but only Microsoft
apps can run there. Again, if you want to build a Windows 8 app that works on all
devices/computers, build the app for WinRT, because it is consistently available.

Windows 8 UI style describes a user experience design language for the look and feel
of WinRT apps. This isn’t a technology, it is a set of design principles, concepts,
and guidelines.

Another source of confusion is that to build a WinRT app in Visual Studio you need
to create a “Windows 8 UI style” app. What makes this odd, is that this type of app
is targeting WinRT, and it is entirely up to you to conform to the Windows 8 UI style
guidelines as you build the app.

“Windows 8 UI style” was called “Metro style”, but Microsoft has dropped the use of
the term “Metro”. I am skeptical that this new “Windows 8 UI style” term will last
long-term, because it obviously makes little sense for Windows Phone 8, Xbox, Windows
9, and other future platforms that may use the same UI style. But for now, this appears
to be the term Microsoft is using.

Thinking about app development now, there are several options on the Microsoft platforms.

Windows 8 Terminology and Conceptshttp://www.lhotka.net/weblog/PermaLink,guid,970ce9b2-a608-4c68-9784-bc0bb0ddc5b1.aspxhttp://www.lhotka.net/weblog/Windows8TerminologyAndConcepts.aspx
Fri, 03 Aug 2012 16:03:20 GMT<p>
With all the new terminology and conceptual surface area that comes with Windows 8,
I think it is important to have some clarity and consistency around the terms and
concepts.
</p>
<p>
Here are some of the basic terms:
</p>
<ul>
<li>
<strong>Windows 8</strong> – the new operating system that runs in a “dual mode”:
Desktop (Win32) and WinRT (Windows Runtime)</li>
<li>
<strong>Desktop</strong> – the Win32 OS API that supports today’s applications in
Win8 (basically Windows 7)</li>
<li>
<strong>WinRT</strong> – Windows Runtime: the new OS API that supports “modern” applications
</li>
<li>
<strong>Windows RT</strong> – Windows 8 on ARM devices (note: Windows RT and WinRT
are not the same thing)</li>
<li>
<strong>Windows 8 UI style</strong> – a user experience design language often used
when building WinRT applications
</li>
</ul>
<p>
Windows 8 basically includes two different operating systems.
</p>
<p>
One is the “old” Win32 OS we think of today as Windows 7. This is now called Windows
8 Desktop, and is available on Windows 8 Intel tablets, laptops, and desktops. This
is only partially available on ARM devices, and you should not expect to build or
deploy Win32 Desktop apps to ARM devices.
</p>
<p>
The other is the new Windows Runtime (WinRT) “operating system”. This is a whole new
platform for apps, and is available on all Windows 8 machines (ARM, Intel, tablet,
laptop, desktop). If you want the widest reach for your apps going forward, you should
be building your apps for WinRT.
</p>
<p>
Confusingly enough, “Windows 8” runs on Intel devices/computers. “Windows RT” is Windows
8 for ARM devices. The only real difference is that Windows RT won’t allow you to
deploy Win32 Desktop apps. Windows RT does have a Desktop mode, but only Microsoft
apps can run there. Again, if you want to build a Windows 8 app that works on all
devices/computers, build the app for WinRT, because it is consistently available.
</p>
<p>
Windows 8 UI style describes a user experience design language for the look and feel
of WinRT apps. This isn’t a technology, it is a set of design principles, concepts,
and guidelines.
</p>
<p>
Another source of confusion is that to build a WinRT app in Visual Studio you need
to create a “Windows 8 UI style” app. What makes this odd, is that this type of app
is targeting WinRT, and it is entirely up to you to conform to the Windows 8 UI style
guidelines as you build the app.
</p>
<p>
“Windows 8 UI style” was called “Metro style”, but Microsoft has dropped the use of
the term “Metro”. I am skeptical that this new “Windows 8 UI style” term will last
long-term, because it obviously makes little sense for Windows Phone 8, Xbox, Windows
9, and other future platforms that may use the same UI style. But for now, this appears
to be the term Microsoft is using.
</p>
<p>
Thinking about app development now, there are several options on the Microsoft platforms.
<br />
</p>
<table border="0" cellspacing="0" cellpadding="2" width="637">
<tbody>
<tr>
<td valign="top" width="113">
&nbsp;</td>
<td valign="top" width="207">
<strong>Technologies</strong></td>
<td valign="top" width="315">
<strong>Platforms</strong></td>
</tr>
<tr>
<td valign="top" width="113">
Full .NET 4.5</td>
<td valign="top" width="207">
ASP.NET, WPF, Windows Forms, WCF, WF</td>
<td valign="top" width="315">
Windows 7, Windows 8 Desktop, Windows Server 2008, Windows Server 2012</td>
</tr>
<tr>
<td valign="top" width="113">
WinRT .NET 4.5</td>
<td valign="top" width="207">
Windows 8 UI style apps</td>
<td valign="top" width="315">
Windows 8 WinRT, Windows Phone 8, rumored for next-gen Xbox</td>
</tr>
<tr>
<td valign="top" width="113">
Full .NET 4</td>
<td valign="top" width="207">
ASP.NET, WPF, Windows Forms, WCF, WF</td>
<td valign="top" width="315">
Windows 7, Windows Server 2008, Azure PaaS</td>
</tr>
<tr>
<td valign="top" width="113">
Silverlight</td>
<td valign="top" width="207">
Silverlight</td>
<td valign="top" width="315">
Windows 7, Windows 8 Desktop, Windows Phone 7, Windows Phone 8</td>
</tr>
</tbody>
</table>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=970ce9b2-a608-4c68-9784-bc0bb0ddc5b1" />http://www.lhotka.net/weblog/CommentView,guid,970ce9b2-a608-4c68-9784-bc0bb0ddc5b1.aspxMicrosoft .NETWindows 8Windows PhoneWinRTWP8http://www.lhotka.net/weblog/Trackback.aspx?guid=2461dff3-e39c-4bd2-9279-12c349a04395http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=2461dff3-e39c-4bd2-9279-12c349a043952

One of the primary goals for CSLA 4 version 4.3 (the next version we’ll be creating)
is to improve the performance of the MobileFormattter that is used for Silverlight
and Windows Phone applications. This is made all the more important, because it will
also be used in WinRT applications in the future.

Sergey (a CSLA dev team member, and Magenic colleague) has been doing some heavy research
into this area, and we’d originally thought to do the changes as part of the 4.2 release.
It turns out that doing a really great job of optimization will require some breaking
changes – at least for people who aren’t using managed backing fields. So we are deferring
the bigger changes until 4.3.

In the meantime, Sergey has blogged about how
to improve performance of MobileFormatter in 3.8 and 4 (4.0, 4.1, or 4.2). These
are changes you can make to your CSLA codebase now if you want some of the performance
benefits without waiting for the “big change” that’ll come in 4.3.

Improving CSLA 4 MobileFormatter behaviorhttp://www.lhotka.net/weblog/PermaLink,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspxhttp://www.lhotka.net/weblog/ImprovingCSLA4MobileFormatterBehavior.aspx
Sat, 12 Nov 2011 18:41:27 GMT<p>
One of the primary goals for CSLA 4 version 4.3 (the next version we’ll be creating)
is to improve the performance of the MobileFormattter that is used for Silverlight
and Windows Phone applications. This is made all the more important, because it will
also be used in WinRT applications in the future.
</p>
<p>
Sergey (a CSLA dev team member, and Magenic colleague) has been doing some heavy research
into this area, and we’d originally thought to do the changes as part of the 4.2 release.
It turns out that doing a really great job of optimization will require some breaking
changes – at least for people who aren’t using managed backing fields. So we are deferring
the bigger changes until 4.3.
</p>
<p>
In the meantime, Sergey has blogged about <a href="http://dotnetspeak.com/index.php/2011/11/how-to-improve-performance-of-csla-for-silverlight/">how
to improve performance of MobileFormatter</a> in 3.8 and 4 (4.0, 4.1, or 4.2). These
are changes you can make to your CSLA codebase now if you want some of the performance
benefits without waiting for the “big change” that’ll come in 4.3.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=2461dff3-e39c-4bd2-9279-12c349a04395" />http://www.lhotka.net/weblog/CommentView,guid,2461dff3-e39c-4bd2-9279-12c349a04395.aspxCSLA .NETSilverlightWindows PhoneWinRThttp://www.lhotka.net/weblog/Trackback.aspx?guid=a5e273d3-6e8a-48ce-9adf-9f176cf34b2ehttp://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e

I
am pleased to announce the release of CSLA .NET version 4.1 with support for .NET,
Silverlight and Windows Phone 7 (WP7).

Although there are numerous new features in version 4.1, the primary focus of this
release is Windows Phone 7. With CSLA 4 version 4.1 you can now author business classes
that run unchanged across the entire .NET platform:

Windows Phone 7

Silverlight

WPF

ASP.NET MVC

ASP.NET Web Forms

WCF services (SOAP and REST)

asmx web services

Windows Forms

The ability to reuse your business layer on .NET, Silverlight and WP7 is incredibly
powerful, enabling you to extend your application to users on Windows, the web, and
now the phone.

You can learn how to use CSLA 4 to build scalable, flexible, and maintainable applications
through the Using
CSLA 4 ebook series. This ebook series is currently a work in progress and will
be finished in the first half of 2011.

CSLA 4 version 4.1 releasehttp://www.lhotka.net/weblog/PermaLink,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspxhttp://www.lhotka.net/weblog/CSLA4Version41Release.aspx
Wed, 19 Jan 2011 01:30:40 GMT<p>
<a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="csla_logo1_32" border="0" alt="csla_logo1_32" align="right" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/CSLA-4-version-4.1-release_110AA/csla_logo1_32_thumb.png" width="112" height="32" /></a>I
am pleased to announce the release of CSLA .NET version 4.1 with support for .NET,
Silverlight and Windows Phone 7 (WP7).
</p>
<p>
You can download CSLA 4 version 4.1 at <a href="http://www.lhotka.net/cslanet/download.aspx">http://www.lhotka.net/cslanet/download.aspx</a>
</p>
<p>
Although there are numerous new features in version 4.1, the primary focus of this
release is Windows Phone 7. With CSLA 4 version 4.1 you can now author business classes
that run unchanged across the entire .NET platform:
</p>
<ul>
<li>
Windows Phone 7</li>
<li>
Silverlight</li>
<li>
WPF</li>
<li>
ASP.NET MVC</li>
<li>
ASP.NET Web Forms</li>
<li>
WCF services (SOAP and REST)</li>
<li>
asmx web services</li>
<li>
Windows Forms</li>
</ul>
<p>
The ability to reuse your business layer on .NET, Silverlight and WP7 is incredibly
powerful, enabling you to extend your application to users on Windows, the web, and
now the phone.
</p>
<p>
You can learn how to use CSLA 4 to build scalable, flexible, and maintainable applications
through the <a href="http://store.lhotka.net/Default.aspx?tabid=1560&amp;CategoryID=4&amp;List=1&amp;SortField=DateCreated+DESC%2cProductName&amp;Level=1&amp;ProductID=22">Using
CSLA 4 ebook series</a>. This ebook series is currently a work in progress and will
be finished in the first half of 2011.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a5e273d3-6e8a-48ce-9adf-9f176cf34b2e" />http://www.lhotka.net/weblog/CommentView,guid,a5e273d3-6e8a-48ce-9adf-9f176cf34b2e.aspxCSLA .NETWindows PhoneWP7http://www.lhotka.net/weblog/Trackback.aspx?guid=1dc6dfd5-9814-45be-8535-1eb5c604ef87http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,1dc6dfd5-9814-45be-8535-1eb5c604ef87.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,1dc6dfd5-9814-45be-8535-1eb5c604ef87.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=1dc6dfd5-9814-45be-8535-1eb5c604ef8713

I’ve had it for a while now (since launch date in the US), but wanted to wait a little
before blogging about it to really get a good feel for what I do and don’t like.

Also, by way of disclaimer, I’m coming to WP7 from Windows Mobile 6.5, so I can’t
compare and contrast to other modern phones like iPhone or Droid.

In short, I really like Windows Phone 7, but there are better devices than the HD7
(unless you are on T-Mobile).

Coming from an older phone like I did, the new WP7 phone OS is remarkable. Wonderful.
Truly a joy to use! And the HD7 has enough cpu, graphics and memory to make it fast
and very enjoyable.

My only real issue is that the HD7 device’s camera button is so hard to push that
it is almost impossible to take a good picture, which makes the camera nearly useless.
That’s not the fault of WP7, that’s the fault of some HTC engineer with overdeveloped
finger muscles or something…

The WP7 user experience is smooth and intuitive. It is loosely based on the Zune HD
user experience, but Microsoft clearly learned a lot from the Zune HD about what did
and didn’t work, and the phone’s user experience is consistently pleasant and easy.

One of the most touted features of the phone are the the “live tiles” on the home
page. And they are nice. I’ve got mine customized to show phone, people,
email and weather on the very first page, with messages and a few other commonly used
items further down. There are a few other apps I’ve used now and then that I haven’t
put on the home page, because it is just as easy to get to them using the voice navigation.

The cool thing though, is that the weather status and my wife’s Facebook status are
shown on that front page through the live tiles, so the most important information
is always right there

I’ve downloaded some free and commercial apps from the Marketplace. That’s a seamless
experience, and includes seamless updates of the apps as they become available. My
only quibble with the Marketplace is that it doesn’t seem to filter between apps,
music, videos, etc. So sometimes searching for an app can be tedious because it seems
that a lot of songs use the same words in their titles, so it can take some time to
sift through the songs to find the app you want…

In terms of apps, there are only three apps I am missing at this point:

Bing (I want the voice-prompted navigation that comes with the Bing app – the built-in
Maps app is ok for maps, but horrible for actual driving navigation)

TripIt (the mobile web access is OK, but a smart client experience would be a lot
better)

EverNote (here the smart client (with offline caching of notes) is really important,
and the web interface is a poor substitute – enough so that I’m considering migrating
back to OneNote where I can share everything on my SkyDrive)

In terms of phone features, the only thing missing is tethering and/or using the phone
as a wifi hub. My 6.5 phone did both of those things and I used them constantly, so
losing this ability is a serious drawback. If I wasn’t such a Microsoft loyalist the
lack of tethering would probably have prevented me from getting this phone – but as
it is I’ve chosen to live with the pain.

On the other hand, the way WP7’s “hubs” integrate together is wonderful. The People
and Pictures hubs, for example, automatically pull data from Facebook, Live, Outlook
and so forth – automatically bringing together nearly all the information I care to
see about everyone I interact with. This type of automatic data integration is amazingly
useful, and directly increases my productivity from a business and inter-personal
perspective.

And of course the fact that the phone is a Zune device (and so can use my
beloved zune.net subscription) is just icing on the cake. While I still carry
my Zune HD when traveling because it has enough memory to hold all my songs, I do
have a couple Smart DJ playlists synced to the phone for times when I’m sitting somewhere
and just need a little music. I always have the phone, but don’t always have the Zune
HD.

Finally, there’s Netflix. The high-res screen on the phone makes watching video content
reasonably enjoyable. Not comparable to a TV or even laptop screen of course, but
certainly workable. So again, when I’m sitting somewhere and feel like a little diversion
there’s always Netflix content available.

Would I recommend that someone get a WP7 device? Absolutely – WP7 is a joy to use!

Would I recommend the HD7? Probably not, but if you are on T-Mobile you are kind of
stuck… And really, other than the stupid camera button, it is a perfectly decent phone
(I really like the large screen and overall form factor).

Impressions of Windows Phone 7http://www.lhotka.net/weblog/PermaLink,guid,1dc6dfd5-9814-45be-8535-1eb5c604ef87.aspxhttp://www.lhotka.net/weblog/ImpressionsOfWindowsPhone7.aspx
Sat, 11 Dec 2010 22:17:17 GMT<p>
I have a WP7 device: the <a href="http://htc.t-mobile.com/hd7">HTC HD7</a>.
</p>
<p>
I’ve had it for a while now (since launch date in the US), but wanted to wait a little
before blogging about it to really get a good feel for what I do and don’t like.
</p>
<p>
Also, by way of disclaimer, I’m coming to WP7 from Windows Mobile 6.5, so I can’t
compare and contrast to other modern phones like iPhone or Droid.
</p>
<p>
In short, I really like Windows Phone 7, but there are better devices than the HD7
(unless you are on T-Mobile).
</p>
<p>
Coming from an older phone like I did, the new WP7 phone OS is remarkable. Wonderful.
Truly a joy to use! And the HD7 has enough cpu, graphics and memory to make it fast
and very enjoyable.
</p>
<p>
My only real issue is that the HD7 device’s camera button is so hard to push that
it is almost impossible to take a good picture, which makes the camera nearly useless.
That’s not the fault of WP7, that’s the fault of some HTC engineer with overdeveloped
finger muscles or something…
</p>
<p>
The WP7 user experience is smooth and intuitive. It is loosely based on the Zune HD
user experience, but Microsoft clearly learned a lot from the Zune HD about what did
and didn’t work, and the phone’s user experience is consistently pleasant and easy.
</p>
<p>
One of the most touted features of the phone are the the “live tiles” on the home
page. And they <em>are</em> nice. I’ve got mine customized to show phone, people,
email and weather on the very first page, with messages and a few other commonly used
items further down. There are a few other apps I’ve used now and then that I haven’t
put on the home page, because it is just as easy to get to them using the voice navigation.
</p>
<p>
The cool thing though, is that the weather status and my wife’s Facebook status are
shown on that front page through the live tiles, so the most important information
is always right there <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Impressions-of-Windows-Phone-7_DE18/wlEmoticon-smile_2.png" />
</p>
<p>
I’ve downloaded some free and commercial apps from the Marketplace. That’s a seamless
experience, and includes seamless updates of the apps as they become available. My
only quibble with the Marketplace is that it doesn’t seem to filter between apps,
music, videos, etc. So sometimes searching for an app can be tedious because it seems
that a lot of songs use the same words in their titles, so it can take some time to
sift through the songs to find the app you want…
</p>
<p>
In terms of apps, there are only three apps I am missing at this point:
</p>
<ol>
<li>
Bing (I want the voice-prompted navigation that comes with the Bing app – the built-in
Maps app is ok for maps, but horrible for actual driving navigation)</li>
<li>
TripIt (the mobile web access is OK, but a smart client experience would be a lot
better)</li>
<li>
EverNote (here the smart client (with offline caching of notes) is really important,
and the web interface is a poor substitute – enough so that I’m considering migrating
back to OneNote where I can share everything on my SkyDrive)</li>
</ol>
<p>
In terms of phone features, the only thing missing is tethering and/or using the phone
as a wifi hub. My 6.5 phone did both of those things and I used them constantly, so
losing this ability is a serious drawback. If I wasn’t such a Microsoft loyalist the
lack of tethering would probably have prevented me from getting this phone – but as
it is I’ve chosen to live with the pain.
</p>
<p>
On the other hand, the way WP7’s “hubs” integrate together is wonderful. The People
and Pictures hubs, for example, automatically pull data from Facebook, Live, Outlook
and so forth – automatically bringing together nearly all the information I care to
see about everyone I interact with. This type of automatic data integration is amazingly
useful, and directly increases my productivity from a business and inter-personal
perspective.
</p>
<p>
And of course the fact that the phone is a Zune device (and so can use <a href="http://www.lhotka.net/weblog/ZunenetRocks.aspx">my
beloved zune.net subscription</a>) is just icing on the cake. While I still carry
my Zune HD when traveling because it has enough memory to hold all my songs, I do
have a couple Smart DJ playlists synced to the phone for times when I’m sitting somewhere
and just need a little music. I always have the phone, but don’t always have the Zune
HD.
</p>
<p>
Finally, there’s Netflix. The high-res screen on the phone makes watching video content
reasonably enjoyable. Not comparable to a TV or even laptop screen of course, but
certainly workable. So again, when I’m sitting somewhere and feel like a little diversion
there’s always Netflix content available.
</p>
<p>
Would I recommend that someone get a WP7 device? Absolutely – WP7 is a joy to use!
</p>
<p>
Would I recommend the HD7? Probably not, but if you are on T-Mobile you are kind of
stuck… And really, other than the stupid camera button, it is a perfectly decent phone
(I really like the large screen and overall form factor).
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=1dc6dfd5-9814-45be-8535-1eb5c604ef87" />http://www.lhotka.net/weblog/CommentView,guid,1dc6dfd5-9814-45be-8535-1eb5c604ef87.aspxWindows PhoneWP7http://www.lhotka.net/weblog/Trackback.aspx?guid=fac2ec52-6b7b-4ead-b08e-06fda3c2d413http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,fac2ec52-6b7b-4ead-b08e-06fda3c2d413.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,fac2ec52-6b7b-4ead-b08e-06fda3c2d413.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=fac2ec52-6b7b-4ead-b08e-06fda3c2d4136

Apparently music subscription services are struggling to gain traction

I can understand that, because I was an anti-digital-music person for a long time.
My thought was that I had no reason to pay for a music subscription when radio was
free.

Of course radio isn’t free, and over time (as I’ve gotten older?) I find the DJ dialog
and commercials on radio to be increasingly annoying. To the point that radio costs
way too much – there’s less music than drivel and I just can’t take it.

The other alternative is to buy CDs, rip them and create your own collection. That
way you “own” the music. And certainly compared to buying digital MP3s it is better
to buy the CD. I’ve “purchased” digital music several times over the years, and several
times I’ve had the originating company go out of business and so the DRM locked me
out of my “purchase”. And I’ve had hard drive failures, and so lost my “purchase”.

Sure, a CD can get scratched, but if you buy a CD, rip it and then only use the digital
copy, you always have the pristine master source, even in the case of hard drive failure.

However, a CD costs around $12, and zune.net costs $15/mo. So I can buy around 12-13
CDs each year, or I can spend the same money to have access to a few hundred thousand
songs. Even over my entire lifetime, at 12 CDs per year I’ll never get a collection
the size I have access to via zune.net.

So radio is out (because it just sucks), and buying CDs isn’t really cost-effective.

But there are streaming services like pandora and last.fm and others. They are free,
or at least cheaper than zune.net, so why not use them?

I used to use pandora, but it started getting pretty flaky with its song selections.
Lately I’ve been using last.fm because they came with my xbox gold subscription (and
zune.net didn’t until recently). I like last.fm, they do a good job and they stream
to my xbox and my Windows Phone 7.

However, streaming services don’t work when I’m on an airplane, in a hotel (you never
get good bandwidth in a hotel), in northern Minnesota camping or fishing, etc. Basically
they are for city people who don’t travel, not for people like me who travel and/or
spend a lot of time in rural areas.

So how does zune.net differ from things like radio, CDs or streaming services?

For about $15/mo you get this:

Access to several hundred thousand songs via streaming

10 free purchases (DRM free) each month (basically I get to “buy” for free almost
an entire album every month)

Smart DJ, which does what pandora and last.fm do: creating a themed “radio station”
drawing music from my personal library plus the entire zune library (those hundreds
of thousands of songs)

The ability to sync Smart DJ playlists to my zune device or Windows Phone – so that
music is available when I’m entirely offline

So think about this. For just over the price of a CD I get (more or less) a CD’s worth
of music I actually own each month. I figure that’s $10 of the $15 covered
each month right there.

But more importantly, for my other $5/mo I get unlimited streaming just like pandora
or last.fm – and in a form that works when I’m entirely offline like on an
airplane or sitting on a lakeshore in far northern Minnesota where there’s no cell
coverage, much less Internet.

(it is this pure offline feature that even iTunes doesn’t have – and why zune.net
is (for me) the ultimate solution)

In the end, yes, I understand the arguments against paying a subscription fee for
music. But when compared to the alternatives, it has become clear to me that none
of those arguments really hold water. The zune.net service is pretty much the perfect
way to consume music.

Zune.net rockshttp://www.lhotka.net/weblog/PermaLink,guid,fac2ec52-6b7b-4ead-b08e-06fda3c2d413.aspxhttp://www.lhotka.net/weblog/ZunenetRocks.aspx
Fri, 10 Dec 2010 16:59:08 GMT<p>
Apparently music subscription services are struggling to gain traction
</p>
<p>
<a title="http://www.zdnet.com/blog/bott/more-itunes-alternatives-can-a-subscription-music-service-ever-succeed/2770?tag=nl.e539" href="http://www.zdnet.com/blog/bott/more-itunes-alternatives-can-a-subscription-music-service-ever-succeed/2770?tag=nl.e539">http://www.zdnet.com/blog/bott/more-itunes-alternatives-can-a-subscription-music-service-ever-succeed/2770?tag=nl.e539</a>
</p>
<p>
I can understand that, because I was an anti-digital-music person for a long time.
My thought was that I had no reason to pay for a music subscription when radio was
free.
</p>
<p>
Of course radio isn’t free, and over time (as I’ve gotten older?) I find the DJ dialog
and commercials on radio to be increasingly annoying. To the point that radio costs
way too much – there’s less music than drivel and I just can’t take it.
</p>
<p>
The other alternative is to buy CDs, rip them and create your own collection. That
way you “own” the music. And certainly compared to buying digital MP3s it is better
to buy the CD. I’ve “purchased” digital music several times over the years, and several
times I’ve had the originating company go out of business and so the DRM locked me
out of my “purchase”. And I’ve had hard drive failures, and so lost my “purchase”.
</p>
<p>
Sure, a CD can get scratched, but if you buy a CD, rip it and then only use the digital
copy, you always have the pristine master source, even in the case of hard drive failure.
</p>
<p>
However, a CD costs around $12, and zune.net costs $15/mo. So I can buy around 12-13
CDs each year, or I can spend the same money to have access to a few hundred thousand
songs. Even over my entire lifetime, at 12 CDs per year I’ll never get a collection
the size I have access to via zune.net.
</p>
<p>
So radio is out (because it just sucks), and buying CDs isn’t really cost-effective.
</p>
<p>
But there are streaming services like pandora and last.fm and others. They are free,
or at least cheaper than zune.net, so why not use them?
</p>
<p>
I used to use pandora, but it started getting pretty flaky with its song selections.
Lately I’ve been using last.fm because they came with my xbox gold subscription (and
zune.net didn’t until recently). I like last.fm, they do a good job and they stream
to my xbox and my Windows Phone 7.
</p>
<p>
However, streaming services don’t work when I’m on an airplane, in a hotel (you never
get good bandwidth in a hotel), in northern Minnesota camping or fishing, etc. Basically
they are for city people who don’t travel, not for people like me who travel and/or
spend a lot of time in rural areas.
</p>
<p>
So how does zune.net differ from things like radio, CDs or streaming services?
</p>
<p>
For about $15/mo you get this:
</p>
<ol>
<li>
Access to several hundred thousand songs via streaming</li>
<li>
10 free purchases (DRM free) each month (basically I get to “buy” for free almost
an entire album every month)</li>
<li>
Smart DJ, which does what pandora and last.fm do: creating a themed “radio station”
drawing music from my personal library plus the entire zune library (those hundreds
of thousands of songs)</li>
<li>
The ability to sync Smart DJ playlists to my zune device or Windows Phone – so that
music is available when I’m entirely offline</li>
</ol>
<p>
So think about this. For just over the price of a CD I get (more or less) a CD’s worth
of music <em>I actually own</em> each month. I figure that’s $10 of the $15 covered
each month right there.
</p>
<p>
But more importantly, for my other $5/mo I get unlimited streaming just like pandora
or last.fm – <em>and in a form that works when I’m entirely offline</em> like on an
airplane or sitting on a lakeshore in far northern Minnesota where there’s no cell
coverage, much less Internet.
</p>
<p>
(it is this pure offline feature that even iTunes doesn’t have – and why zune.net
is (for me) the ultimate solution)
</p>
<p>
In the end, yes, I understand the arguments against paying a subscription fee for
music. But when compared to the alternatives, it has become clear to me that none
of those arguments really hold water. The zune.net service is pretty much the perfect
way to consume music.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fac2ec52-6b7b-4ead-b08e-06fda3c2d413" />http://www.lhotka.net/weblog/CommentView,guid,fac2ec52-6b7b-4ead-b08e-06fda3c2d413.aspxWindows PhoneWP7XboxZunehttp://www.lhotka.net/weblog/Trackback.aspx?guid=e6f95bde-85f6-42b1-a08a-98a430df2caehttp://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,e6f95bde-85f6-42b1-a08a-98a430df2cae.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,e6f95bde-85f6-42b1-a08a-98a430df2cae.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=e6f95bde-85f6-42b1-a08a-98a430df2cae2

The first WP7 app built by Magenic is now in the WP7 app marketplace: GuestList.

This app allows you to easily check in attendees at an event, using EventBrite as
the backend service. You create your event in EventBrite, users register through their
web site, and as they arrive at your event you get the attendee list on your phone,
and easily check them in right there.

Chris Williams (Microsoft MVP and author of an upcoming WP7 developer book) did the
development on this project, with assistance from Donn Felker (author of a similar
app for Droid). Anthony Handley (from our Magenic Studios group) created the user
experience flow and look and feel.

Very exciting stuff!

Magenic&rsquo;s first WP7 apphttp://www.lhotka.net/weblog/PermaLink,guid,e6f95bde-85f6-42b1-a08a-98a430df2cae.aspxhttp://www.lhotka.net/weblog/MagenicrsquosFirstWP7App.aspx
Wed, 27 Oct 2010 20:25:56 GMT<p>
The first WP7 app built by Magenic is now in the WP7 app marketplace: GuestList.
</p>
<p>
<img style="WIDTH: 358px; HEIGHT: 296px" border=0 src="http://www.lhotka.net/weblog/content/binary/Marketplace.png" width=244 height=241>
</p>
<p>
This app allows you to easily check in attendees at an event, using <a href="http://www.eventbrite.com/">EventBrite</a> as
the backend service. You create your event in EventBrite, users register through their
web site, and as they arrive at your event you get the attendee list on your phone,
and easily check them in right there.
</p>
<p>
Chris Williams (Microsoft MVP and author of an upcoming WP7 developer book) did the
development on this project, with assistance from Donn Felker (author of a similar
app for Droid). Anthony Handley (from our Magenic Studios group) created the user
experience flow and look and feel.
</p>
<p>
Very exciting stuff!
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=e6f95bde-85f6-42b1-a08a-98a430df2cae" />http://www.lhotka.net/weblog/CommentView,guid,e6f95bde-85f6-42b1-a08a-98a430df2cae.aspxWindows PhoneWP7http://www.lhotka.net/weblog/Trackback.aspx?guid=ea802058-8e77-4386-949d-63076bce6b31http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,ea802058-8e77-4386-949d-63076bce6b31.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,ea802058-8e77-4386-949d-63076bce6b31.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=ea802058-8e77-4386-949d-63076bce6b31

And we know that the dev tools are planned for release in just a couple weeks – so
this is all coming together fast.

Windows Phone 7 &ndash; Released To Manufacturinghttp://www.lhotka.net/weblog/PermaLink,guid,ea802058-8e77-4386-949d-63076bce6b31.aspxhttp://www.lhotka.net/weblog/WindowsPhone7NdashReleasedToManufacturing.aspx
Wed, 01 Sep 2010 20:47:02 GMT<p>
Good news on the WP7 front:
</p>
<p>
<a href="http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/09/01/windows-phone-7-released-to-manufacturing.aspx">Windows
Phone 7 – Released To Manufacturing</a>
</p>
<p>
And we know that the dev tools are planned for release in just a couple weeks – so
this is all coming together fast.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=ea802058-8e77-4386-949d-63076bce6b31" />http://www.lhotka.net/weblog/CommentView,guid,ea802058-8e77-4386-949d-63076bce6b31.aspxWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=bacf77a7-36b5-4522-a827-8fb7dc3078dahttp://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,bacf77a7-36b5-4522-a827-8fb7dc3078da.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,bacf77a7-36b5-4522-a827-8fb7dc3078da.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=bacf77a7-36b5-4522-a827-8fb7dc3078da2

Lessons learned getting CSLA 4 to build and run in WP7.

Obviously WP7 is based on SL3, so SL4 specific code won’t work (which caused most
of my initial
build issues).

Human error plays a big role – I created several new projects for WP7, and even though
they shared existing code files (via file linking), I forgot to set things like the
assembly names and default namespaces – obviously that caused issues with serialization
between client and server. Never underestimate the ability of the human to overlook
simple things…

Don’t underestimate the impact of the tiny screen. While WP7 can run code from a full-screen
app (the same business objects, etc), it is amazing how the need to fit into a tiny
screen can impact the way you build your application!

VS10 doesn’t support signing assemblies, but you can do it by manually editing the
csproj file.

VS10 doesn’t support resource files, but you can manually add a resx to the main
project, then drag it into the Properties folder, then set the file’s properties
(custom tool, etc) so it works correctly.

WP7 appears to throw different exceptions from .NET/SL for various things. There are
a number of cases where I’m having to catch and rethrow exceptions to get the expected
exception type – which is something I don’t need to do in .NET/SL. Since my unit tests
often check for expected exceptions (testing failure conditions), I’m seeing a lot
of these issues and having to tediously address them one by one.

VS10 crashes “for no reason” on some WP7 code. I have the same code in .NET, SL and
WP7 and can walk through code in the debugger, but sometimes WP7 crashes Visual Studio
– I assume this is due to the beta state of the tools.

WP7 upgrade noteshttp://www.lhotka.net/weblog/PermaLink,guid,bacf77a7-36b5-4522-a827-8fb7dc3078da.aspxhttp://www.lhotka.net/weblog/WP7UpgradeNotes.aspx
Wed, 01 Sep 2010 18:24:12 GMT<p>
Lessons learned getting CSLA 4 to build and run in WP7.
</p>
<ul>
<li>
Obviously WP7 is based on SL3, so SL4 specific code won’t work (which caused most
of my <a href="http://www.lhotka.net/weblog/GettingCSLA4ToCompileForWP7.aspx">initial
build issues</a>).
</li>
<li>
Human error plays a big role – I created several new projects for WP7, and even though
they shared existing code files (via file linking), I forgot to set things like the
assembly names and default namespaces – obviously that caused issues with serialization
between client and server. Never underestimate the ability of the human to overlook
simple things…
</li>
<li>
Don’t underestimate the impact of the tiny screen. While WP7 can run code from a full-screen
app (the same business objects, etc), it is amazing how the need to fit into a tiny
screen can impact the way you build your application!
</li>
<li>
VS10 doesn’t support signing assemblies, but you can do it by manually editing the
csproj file.
</li>
<li>
VS10 doesn’t support resource files, but you can manually add a resx <em>to the main
project</em>, then drag it into the Properties folder, then set the file’s properties
(custom tool, etc) so it works correctly.
</li>
<li>
WP7 appears to throw different exceptions from .NET/SL for various things. There are
a number of cases where I’m having to catch and rethrow exceptions to get the expected
exception type – which is something I don’t need to do in .NET/SL. Since my unit tests
often check for expected exceptions (testing failure conditions), I’m seeing a lot
of these issues and having to tediously address them one by one.
</li>
<li>
VS10 crashes “for no reason” on some WP7 code. I have the same code in .NET, SL and
WP7 and can walk through code in the debugger, but sometimes WP7 crashes Visual Studio
– I assume this is due to the beta state of the tools.
</li>
</ul>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=bacf77a7-36b5-4522-a827-8fb7dc3078da" />http://www.lhotka.net/weblog/CommentView,guid,bacf77a7-36b5-4522-a827-8fb7dc3078da.aspxCSLA .NETWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=31e28336-6271-439e-bbd8-1ee1836af5f1http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,31e28336-6271-439e-bbd8-1ee1836af5f1.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,31e28336-6271-439e-bbd8-1ee1836af5f1.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=31e28336-6271-439e-bbd8-1ee1836af5f13

I started by getting the CSLA 4 codebase (from Silverlight) to compile
in WP7.

As an aside – working with WP7 is really a smooth experience. The emulator works quite
well, and the debugging experience is comparable to working with Silverlight. I can
see where it would be hard to debug/test things requiring touch or other device hardware,
but for basic app development the process is quite enjoyable.

Then I spent some quality time fighting with reflection. Over the years, as .NET has
evolved alternatives for reflection, CSLA has adopted those alternatives; dynamic
methods and now lambda expressions. The specific things CSLA is doing can’t be easily
done using the DLR, or I’d consider using that approach.

But WP7 is based on Silverlight 3, which predates the cool stuff in Silverlight 4.
That means that the lambda expression concepts used in CSLA 4 wouldn’t build in WP7
– so I basically put TODO comments in their place to get the codebase to compile.
Then I went back through and dug up the older 3.x code and tried to just plug it in,
replacing the TODO comments.

That turned out to be a little harder than I expected. As part of replacing reflection,
we enhanced the functionality of some of the code in CSLA 4, and the 3.x code didn’t
handle all the same scenarios. I don’t want my WP7 code to be incompatible with the
.NET/SL implementations though, so this basically meant rewriting the 3.x reflection
code to support the CSLA 4 functionality.

After a few hours of work all my dynamic method calling unit tests now pass (except
for the one that proves that dynamic method invocation is faster than reflection –
obviously that one has no meaning in WP7 at the moment). That’s a relief, as it means
that essentially all the core functionality of CSLA 4 now works.

With the notable exception of the data portal. It isn’t clear yet what’s failing,
but it appears to have something to do with type resolution. I know that Silverlight
and .NET don’t work the same in this regard, and I’m beginning to suspect that either
I need to revert some other code back to 3.x, or that WP7 doesn’t act the same as
Silverlight 3 or 4.

In any case, this is all very encouraging. I am now quite confident that we’ll be
able to take CSLA 4 business classes from Silverlight and run them in .NET or on WP7
without change. Just think about building a business class and knowing that it can
be used to create Silverlight, ASP.NET MVC, WP7, WPF, WCF, Web Forms, Windows Forms
and asmx interfaces! Too cool!!

CSLA 4 WP7 progress update 2http://www.lhotka.net/weblog/PermaLink,guid,31e28336-6271-439e-bbd8-1ee1836af5f1.aspxhttp://www.lhotka.net/weblog/CSLA4WP7ProgressUpdate2.aspx
Wed, 11 Aug 2010 01:02:49 GMT<p>
I started by getting the CSLA 4 codebase (from Silverlight) to <a href="http://www.lhotka.net/weblog/GettingCSLA4ToCompileForWP7.aspx">compile
in WP7</a>.
</p>
<p>
As an aside – working with WP7 is really a smooth experience. The emulator works quite
well, and the debugging experience is comparable to working with Silverlight. I can
see where it would be hard to debug/test things requiring touch or other device hardware,
but for basic app development the process is quite enjoyable.
</p>
<p>
Then we got <a href="http://www.lhotka.net/weblog/UnitTestingForWindowsPhone7.aspx">UnitDriven
running in WP7</a> so I could run my unit tests.
</p>
<p>
Then I spent some quality time fighting with reflection. Over the years, as .NET has
evolved alternatives for reflection, CSLA has adopted those alternatives; dynamic
methods and now lambda expressions. The specific things CSLA is doing can’t be easily
done using the DLR, or I’d consider using that approach.
</p>
<p>
But WP7 is based on Silverlight 3, which predates the cool stuff in Silverlight 4.
That means that the lambda expression concepts used in CSLA 4 wouldn’t build in WP7
– so I basically put TODO comments in their place to get the codebase to compile.
Then I went back through and dug up the older 3.x code and tried to just plug it in,
replacing the TODO comments.
</p>
<p>
That turned out to be a little harder than I expected. As part of replacing reflection,
we enhanced the functionality of some of the code in CSLA 4, and the 3.x code didn’t
handle all the same scenarios. I don’t want my WP7 code to be incompatible with the
.NET/SL implementations though, so this basically meant rewriting the 3.x reflection
code to support the CSLA 4 functionality.
</p>
<p>
After a few hours of work all my dynamic method calling unit tests now pass (except
for the one that proves that dynamic method invocation is faster than reflection –
obviously that one has no meaning in WP7 at the moment). That’s a relief, as it means
that essentially all the core functionality of CSLA 4 now works.
</p>
<p>
With the notable exception of the data portal. It isn’t clear yet what’s failing,
but it appears to have something to do with type resolution. I know that Silverlight
and .NET don’t work the same in this regard, and I’m beginning to suspect that either
I need to revert some other code back to 3.x, or that WP7 doesn’t act the same as
Silverlight 3 or 4.
</p>
<p>
In any case, this is all very encouraging. I am now quite confident that we’ll be
able to take CSLA 4 business classes from Silverlight and run them in .NET or on WP7
without change. Just think about building a business class and knowing that it can
be used to create Silverlight, ASP.NET MVC, WP7, WPF, WCF, Web Forms, Windows Forms
and asmx interfaces! Too cool!!
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=31e28336-6271-439e-bbd8-1ee1836af5f1" />http://www.lhotka.net/weblog/CommentView,guid,31e28336-6271-439e-bbd8-1ee1836af5f1.aspxCSLA .NETWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=23df901b-3951-415c-9ff5-da0e7098b2dbhttp://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,23df901b-3951-415c-9ff5-da0e7098b2db.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,23df901b-3951-415c-9ff5-da0e7098b2db.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=23df901b-3951-415c-9ff5-da0e7098b2db

When we created CSLA .NET for Silverlight it was long before Silverlight 2 shipped,
and there was no workable unit test framework for Silverlight. Even today, it is tricky
to test async methods and features with mstest in SL. Perhaps most importantly however,
I wanted to have the same exact unit test code running in .NET and Silverlight – and
that’s a level of parity that is hard to achieve.

And I have a few hundred unit tests for CSLA that rely on UnitDriven, so it isn’t
a trivial thing to think about switching to something else – so it is important that
UnitDriven work on WP7 too.

Fortunately Justin was able to get this done in an evening. It turns out that the
only major change required was to the UI, because obviously the WP7 form factor is
very space constrained compared to a full-size screen.

The end result is that there’s a preview release of UnitDriven that works
on WP7 – you can download it from codeplex.

Most of my CSLA unit tests are passing at this point, which gives us some confidence
that UnitDriven is working as expected. There are some UI issues still, especially
with long test names and some scrolling issues.

But if you are looking for a way to write unit tests for your WP7 Silverlight code,
and especially if you want to use the same unit test code on .NET, Silverlight and
WP7, then UnitDriven is something you
should consider.

Unit testing for Windows Phone 7http://www.lhotka.net/weblog/PermaLink,guid,23df901b-3951-415c-9ff5-da0e7098b2db.aspxhttp://www.lhotka.net/weblog/UnitTestingForWindowsPhone7.aspx
Tue, 10 Aug 2010 19:22:31 GMT<p>
I am working on <a href="http://www.lhotka.net/weblog/GettingCSLA4ToCompileForWP7.aspx">CSLA
4 for Windows Phone 7</a>. Of course I want to get all my unit tests (or most of them
anyway) running on WP7.
</p>
<p>
When we created CSLA .NET for Silverlight it was long before Silverlight 2 shipped,
and there was no workable unit test framework for Silverlight. Even today, it is tricky
to test async methods and features with mstest in SL. Perhaps most importantly however,
I wanted to have the same exact unit test code running in .NET and Silverlight – and
that’s a level of parity that is hard to achieve.
</p>
<p>
So Justin created UnitDriven and we donated it to the community through codeplex: <a href="http://unitdriven.codeplex.com">http://unitdriven.codeplex.com</a>.
</p>
<p>
And I have a few hundred unit tests for CSLA that rely on UnitDriven, so it isn’t
a trivial thing to think about switching to something else – so it is important that
UnitDriven work on WP7 too.
</p>
<p>
Fortunately Justin was able to get this done in an evening. It turns out that the
only major change required was to the UI, because obviously the WP7 form factor is
very space constrained compared to a full-size screen.
</p>
<p>
<strong>The end result is that there’s a preview release of UnitDriven that works
on WP7 – you can download it from <a href="http://unitdriven.codeplex.com/">codeplex</a>. </strong>
</p>
<p>
Most of my CSLA unit tests are passing at this point, which gives us some confidence
that UnitDriven is working as expected. There are some UI issues still, especially
with long test names and some scrolling issues.
</p>
<p>
But if you are looking for a way to write unit tests for your WP7 Silverlight code,
and especially if you want to use the same unit test code on .NET, Silverlight and
WP7, then <a href="http://unitdriven.codeplex.com/">UnitDriven</a> is something you
should consider.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=23df901b-3951-415c-9ff5-da0e7098b2db" />http://www.lhotka.net/weblog/CommentView,guid,23df901b-3951-415c-9ff5-da0e7098b2db.aspxSilverlightWindows Phonehttp://www.lhotka.net/weblog/Trackback.aspx?guid=13c38ccb-18d0-4452-872a-07a1f30b6106http://www.lhotka.net/weblog/pingback.aspxhttp://www.lhotka.net/weblog/PermaLink,guid,13c38ccb-18d0-4452-872a-07a1f30b6106.aspxRockford Lhotkahttp://www.lhotka.net/weblog/CommentView,guid,13c38ccb-18d0-4452-872a-07a1f30b6106.aspxhttp://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=13c38ccb-18d0-4452-872a-07a1f30b61066

Hopefully this can save someone some time. I spent a couple hours setting up a virtual
machine and installing the Windows Phone 7 dev tools, only to find that the phone
emulator won’t run in a virtual machine. It turns out that this is because the emulator is
a virtual machine and you can’t run a virtual machine in a virtual machine.

Don&rsquo;t install WP7 in a virtual machinehttp://www.lhotka.net/weblog/PermaLink,guid,13c38ccb-18d0-4452-872a-07a1f30b6106.aspxhttp://www.lhotka.net/weblog/DonrsquotInstallWP7InAVirtualMachine.aspx
Tue, 16 Mar 2010 16:45:59 GMT<p>
Hopefully this can save someone some time. I spent a couple hours setting up a virtual
machine and installing the Windows Phone 7 dev tools, only to find that the phone
emulator won’t run in a virtual machine. It turns out that this is because the emulator <em>is
a virtual machine</em> and you can’t run a virtual machine in a virtual machine.
</p>
<img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=13c38ccb-18d0-4452-872a-07a1f30b6106" />http://www.lhotka.net/weblog/CommentView,guid,13c38ccb-18d0-4452-872a-07a1f30b6106.aspxWindows Phone