Friday, January 14, 2011

Dunn Training is offering a CSLA 4 training class on February 23, 2011 in Atlanta.

http://www.dunntraining.com/training/schedule.htm

If you are looking for CSLA .NET classroom training, this is a great opportunity. Here’s a quote from a student who attended the December class:

Dunn’s CSLA training was phenomenal!!! It significantly advanced our team’s knowledge of CSLA and helped layout the roadmap for our future development. Mark Berry  holistically demonstrated how CSLA works with MVVM, Silverlight, WPF, Expression, OO Programming and Code Generators. He also successfully answered extremely challenging CSLA questions that were thrown at him during class. Our team is pretty knowledgeable with CSLA and the other technologies, but Mark took us to an entirely new level, sprinkled in some nice tips, tied it all together, and reenergized our team. The training was well worth the money.

Friday, January 14, 2011 5:36:03 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Wednesday, January 12, 2011

Anyone who expected HTML5 to be more standard or consistent than previous HTML standards hasn’t been paying attention to the web over the past 13+ years.

Google’s decision to drop H.264 may be surprising as a specific item, but the idea of supporting and not supporting various parts of HTML5 (or what vendors hope might be in HTML5 as it becomes a standard over the next several years) is something everyone should expect.

I have held out exactly zero hope for a consistent HTML5 implementation across the various browser vendors. Why? It is simple economics.

If IE, Chrome, FF and other browsers on Windows were completely standards complaint in all respects there would be no reason for all those browsers. The only browser that would exist is IE because it ships with Windows.

The same is true on the Mac and any other platform. If the browsers implement exactly the same behaviors, they can’t differentiate, so nobody would use anything except the browser shipping with the OS.

But the browser vendors have their own agendas and goals, which have nothing to do with standards compliance or consistency. Every browser vendor is motivated by economics – whether that’s mindshare for other products or web properties, data mining, advertising, or other factors. These vendors want you to use their browser more than other browsers.

So in a “standards-based world” how do you convince people to use your product when it is (in theory) identical to every other product?

When products have a price you could try to compete on that price. That’s a losing game though, because when you undercut the average price you have less money to innovate or even keep up. So even in the 1990’s with Unix standards vendors didn’t play the pricing game – it is just a slow death.

But browsers are free, so even if you wanted the slow death of the price-war strategy you can’t play it in the browser world. So you are left with “embrace and extend” or “deviate from the standard” as your options. And every browser vendor must play this game or just give up and die.

This happened to Unix in the 1990’s too – the various vendors didn’t want to play on price, so they added features beyond any standard with the intent of doing two things:

  1. Lure users to their version of Unix because it is “better”
  2. Lock them into your version of Unix because as soon as they use your cool features they are stuck on your version

The same is true with browsers and HTML5. All browser vendors are jockeying now (before the standard is set) to differentiate and shape the standard. But even once there is a “standard” they’ll continue to support the various features they’ve added that didn’t make it into the standard.

This is necessary, because it is the only way any given browser can lure users away from the other browsers, thereby meeting the vendors’ long term goals.

People often say they don’t want a homogenous computing world. That they want a lot of variation and variety in the development platforms used across the industry. Over the past 13+ years HTML has proven that variation is absolutely possible, and that it is very expensive and frustrating.

Working for consulting companies during all this time, I can say that HTML is a great thing. Consultants charge by the hour, and any scenario where the same app must be rebuilt, or at least tweaked, for every browser and every new version of every browser is just a way to generate more revenue.

Is HTML a drag on the world economy overall? Sure it is. Anything that automatically increases the cost of software development like HTML is an economic drag by definition. The inefficiency is built-in.

The only place (today) with more inefficiency is the mobile space, where every mobile platform has a unique development environment, tools, languages and technologies. I love the mobile space – any app you want to build must be created for 2-5 different platforms, all paid for at an hourly rate. (this is sarcasm btw – I really dislike this sort of blatant inefficiency and waste)

But I digress. Ultimately what I’m saying is that expecting HTML5 to provide more consistency than previous versions of HTML is unrealistic, and moves like Google just took are something we should all expect to happen on a continuing basis.

Wednesday, January 12, 2011 11:49:44 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [10]  | 
 Tuesday, January 11, 2011

One of the nicest things about TFS is the way it can be customized and extended to fit different types of process.

A colleague of mine, Mario Cardinal, works for a company who has built an Agile/SCRUM extension: http://urbanturtle.com/awesome/

This really highlights how TFS can be used as the basis for a deep solution around a specific process, methodology or project philosophy. Cool stuff – and if you do SCRUM you should probably take a look at Urban Turtle to see if it can help you out.

Tuesday, January 11, 2011 12:41:56 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, January 04, 2011

The completed first draft of the Using CSLA 4: Creating Business Objects ebook is now online and available for purchase. UsingCsla4-02-120

If you’ve purchased (or now purchase) the Using CSLA 4 ebook series you’ll also have access to this new ebook.

This is book 2 of the series. The next book will be Using CSLA 4: Data Access, followed by Using CSLA 4: Security. These first four ebooks cover all the core concepts around using CSLA 4 to build your business layer, along with various options for building a data access layer and implementing authentication.

After these four are complete I’ll move on to ebooks covering how to use a CSLA .NET business layer to create applications with different types of UI, including Silverlight, WPF, ASP.NET MVC and Windows Phone 7 (WP7).

Here’s the top-level outline of the Creating Business Objects book’s contents:

  1. Introduction

  2. Key Object Concepts

    1. Stereotypes

    2. Serialization

    3. Object Lifetime

    4. Object Relationships

    5. Object Identity and Equality

    6. Platform Differences in .NET and Silverlight

    7. Property Declarations

    8. Method Declarations

    9. Metastate

  3. Solution Structure

    1. Project Types and Assembly References

    2. Combining Project to Create Solutions

  4. Object Stereotypes

    1. Editable Objects

    2. Read-Only Objects

    3. Execution Objects

    4. Criteria Objects

    5. LINQ Types

    6. Windows Forms Types

  5. Business Rules

    1. Business and Validation Rules

    2. Authorization Rules

For those who are wondering, the first ebook is almost through the editing process and the “draft” designation will then be removed.

Tuesday, January 04, 2011 5:41:03 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 
 Saturday, December 11, 2010

I have a WP7 device: the HTC HD7.

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 Smile

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:

  1. 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)
  2. TripIt (the mobile web access is OK, but a smart client experience would be a lot better)
  3. 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).

Saturday, December 11, 2010 4:17:17 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [13]  | 
 Friday, December 10, 2010

I just put CSLA 4 version 4.1 beta 2 online for download. This is probably the last beta release of version 4.1, so please download and try it – I appreciate any help I can get in testing these releases.

http://www.lhotka.net/cslanet/download.aspx

The primary changes in beta 2 include:

  1. Added a new Csla.Xaml.PropertyInfo control for WP7, WPF and Silverlight that is like PropertyStatus but totally non-visual. See the Samples\NET\cs\SimpleNTier solution’s WP7 UI project for an example of how this works
  2. Created a copy of the DataAnnotations functionality for WP7; this is a nice concept that Microsoft didn’t put into WP7, so I ported the parts of System.ComponentModel.DataAnnotations required by CSLA .NET, so if you have classes using DataAnnotations attributes in .NET or Silverlight, that code will now work in WP7 as well
  3. Laying the groundwork for a NuGet installer when 4.1 is released, so people will be able to download and install CSLA 4 via NuGet (thanks Jaans!)
  4. Laying the groundwork for a vsix installer for Visual Studio templates, so when 4.1 is released we can add this to the Visual Studio gallery (thanks Jonny!)

I’ve also put an updated draft of Using CSLA 4: Creating Business Objects online at http://download.lhotka.net/Default.aspx?t=UsingCsla4

This ebook is incomplete, but I’m providing work-in-progress drops of the book as I work on it. People who’ve purchased the entire Using CSLA 4 ebook series (from http://store.lhotka.net/) can download this pre-draft content. This new drop includes a lot more content than the previous drop – including the entire sections on declaring and implementing properties and methods, and a good start on the metastate fields/methods available from BusinessBase and other base classes.

Finally, I also put a top level type diagram online that is available to anyone who has purchased either the Using CSLA 4: CSLA .NET Overview ebook or the entire ebook series. It is available from the same download.lhotka.net web page.

Books | CSLA .NET | WP7
Friday, December 10, 2010 3:25:51 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 

Apparently music subscription services are struggling to gain traction

http://www.zdnet.com/blog/bott/more-itunes-alternatives-can-a-subscription-music-service-ever-succeed/2770?tag=nl.e539

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:

  1. Access to several hundred thousand songs via streaming
  2. 10 free purchases (DRM free) each month (basically I get to “buy” for free almost an entire album every month)
  3. 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)
  4. 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.

Windows Phone | WP7 | Xbox | Zune
Friday, December 10, 2010 10:59:08 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [6]  | 
 Monday, November 29, 2010

One week from today, on December 6, at the Microsoft office in Bloomington, MN you can attend a free two-track .NET developer training event: Code Mastery.

This event includes content from the Microsoft PDC 2010 event, plus custom content covering topics such as:

  • Windows Phone 7 (WP7) development
  • How to really use the MVVM design pattern in WPF
  • SQL Azure
  • Combining Scrum and TFS 2010
  • Best practices for development in .NET
  • and more!!

If that isn’t enough, there’s a raffle at the end of the day, with great prizes (including an MSDN Universal subscription), and our special guest Carl Franklin from .NET Rocks! will be in attendance to spice up the event.

Register now to reserve your seat!

Monday, November 29, 2010 10:21:14 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 
 Monday, November 22, 2010

Thanks to Russ Blair, there is now a time-based index available for the entire Core 3.8 video series.

The series can be purchased from http://store.lhotka.net.

Monday, November 22, 2010 3:05:35 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [0]  | 

The first ebook in the Using CSLA 4 ebook series is now available.

Using CSLA 4: CSLA Overview

This ebook (in PDF format) is an introduction to CSLA 4, and will provide you with an overview of the framework, its goals and its most basic usage scenarios. All other ebooks in the Using CSLA 4 ebook series assume you have read this first ebook and understand the overall architecture and philosophy of the CSLA .NET framework.

You should also be aware that the Using CSLA 4 ebook series is also available for purchase, and it will be cheaper to buy the series than every individual ebook. Obviously right now purchasing the series only gets you access to the first book, but you'll gain immediate access to all subsequent books in the series as they come online.

Monday, November 22, 2010 2:02:49 PM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  | 

This is the proposed outline for the Using CSLA 4 ebook series. This is subject to change, but it is the outline I’m working against at the moment as I set up packaging and pricing for the ebooks and the ebook series.

The plan is to publish seven ebooks, and each will be released in PDF format for reading on the PC or any other PDF reader.

As a special note: I have not yet found a practical way to publish in native format for the Kindle because the Kindle can’t support different fonts or tables. And believe me, I really want this on the Kindle because I love, love, love my Kindle!! But I can’t delay publishing the content while I continue to try and find a cost-effective way to create a specific Kindle version.

You will be able to purchase each ebook individually, or purchase the entire ebook series. Purchasing the series will be cheaper than buying each book individually.

Individual books will be available for purchase as they enter the draft/review phase, and will be updated as corrections are made. I am doing this to get the content out as quickly as possible. If you don’t want a draft, wait until the DRAFT designation is removed from the description of the item on the store (http://store.lhotka.net/).

If you purchase the series, you will automatically gain access to each book as it enters the draft/review phase. In other words, you are buying future access to the entire series ebooks as they come out.

Here’s the current proposed outline for the series:

  1. Using CSLA 4: CSLA .NET Overview
    1. Introduction and Installation
    2. Architecture and Philosophy
    3. CSLA .NET framework design overview
  2. Using CSLA 4: Creating Business Objects
    1. Stereotypes
      1. Editable root/child
      2. Editable root/child list
      3. Dynamic list/root
      4. Read-only
      5. Read-only list
      6. NameValueList
      7. Command
      8. Unit of Work
    2. Object metastate
      1. IsNew, IsDirty, IsValid, etc.
    3. Property declarations
      1. PropertyInfo metastate field
      2. Managed backing fields
      3. Private backing fields
      4. Child object references
      5. Lazy loading of child objects
    4. Business rules
      1. Business rules
      2. Validation rules
      3. Authorization rules
      4. Sync/async rules
      5. DataAnnotations attributes
  3. Using CSLA 4: Data access
    1. Data access models
      1. DP_XYZ invoking DAL
      2. Factory objects as DAL
      3. DP_XYZ as DAL
      4. Factory objects invoking DAL
    2. Data access technologies
      1. ADO.NET
      2. ADO.NET Entity Framework
      3. OData services
    3. Data portal
      1. N-Tier
        1. 1-, 2-tier
        2. 3-tier
        3. 4-tier (Silverlight, WP7)
          1. MobileFactory
    4. Configuring the client
    5. Configuring the server
      1. IIS
      2. Windows Server AppFabric
      3. Windows Azure
    6. Using compression in Silverlight
  4. Using CSLA 4: Security
    1. MembershipProvider authentication
    2. Windows authentication
    3. Custom authentication
    4. IAuthorizeDataPortal
  5. Using CSLA 4: Silverlight 4 and WPF
    1. Development basics
      1. WPF
      2. Silverlight
    2. MVVM design pattern
      1. Basic XAML Framework (Bxf)
      2. TriggerAction
    3. Data binding
    4. ViewModelBase/ViewModel
    5. PropertyInfo/PropertyStatus
    6. Platform specifics
      1. WPF
      2. Silverlight
  6. Using CSLA 4: ASP.NET MVC 3
    1. ASP.NET MVC development basics
    2. Controller (Csla.Web.Mvc)
    3. CslaModelBinder
    4. Html authorization helpers
  7. Using CSLA 4: Windows Phone 7
    1. WP7 development basics
    2. MVVM design pattern
      1. Basic XAML Framework (Bxf)
      2. TriggerAction
    3. Data binding
    4. ViewModelBase/ViewModel
    5. PropertyInfo
Monday, November 22, 2010 11:01:22 AM (Central Standard Time, UTC-06:00)  #    Disclaimer  |  Comments [2]  |