Posts Tagged ‘Data binding’

WPF, Azure, Threading, Silverlight, and the Future of User Experience

Unfortunately my afternoon on this day involved an emergency back at work and I had to leave the convention after the Chalk Talk to go back to the room to deal with the emergency. But all the sessions I attended on this day were really great.

Sessions Attended:

  • Keynote: The Future of User Experience: The Natural User Interface (Tim Huckaby)
  • Windows Presentation Foundation for Developers (Philip Japikse)
  • Building Your First Azure Application (Michael Stiefel)
  • Chalk Talk: Parallel Programming 101 (Tiberiu Covaci)
  • Top 7 Lessons Learned On My First Big Silverlight Project (Ben Day)

Keynote: The Future of User Experience: The Natural User Interface (Tim Huckaby)

The future technologies coming down the pipe include natural user interfaces with better multi-touch capabilities as well as voice and neural capabilities. Microsoft has recently released Kinect for the PC that will allow users to do various things using just their voice and/or body motions. Here is a link if you are interested in seeing some of the projects already in place with natural user interfaces (all built with Visual Studio 2010).

Related Sites:

Windows Presentation Foundation for Developers (Philip Japikse)

WPF is the next generation rich user application platform based on DirectX and is leaps ahead with databinding. WPF has true animation, and uses styles and templates (one place to change the entire application style).

If you write something once, you should probably make it a method. Twice, you should make it a method. Three or more times, you should stop being a programmer.

New in .NET 4: DataGrid, DatePicker, Calendar, Ribbon controls, Layout Rounding, Multi-Touch support, Custom Dictionaries, Behaviors, Animation Easing, and Binding String Format. New in .NET 4.5: Improved Performance with large data, Binding to Static Properties, Accessing Collections on non-UI Threads, Asynchronous Validation, and bug fixes. What’s missing? Visual inheritance, MDI support, ExtenderProvider support, MaskedTextBox, ErrorProvider/HelpProvider, and AutoComplete. We can use gradients and vector graphics. We can make images scale and not have to store files for all sizes of images. We can stack, wrap, and dock panels…horizontally and vertically.

Since I’ve not used WPF before, I jotted down the various features and functions that Phillip demo’d. Some of this may be beginner level for most, but here are my notes for those interested:

  • Attached properties – button on the panel gets the property of the panel (DockPanel.Dock(“Top”)).
  • Tabbing order thru menus goes in order the items are listed in XAML.
  • SharedSizeGroup – everything contained is capable of sharing size
  • Scroll bar control separate from other controls
  • Expander control
  • Height – number (specific), auto (fill what u need), * (like %)
  • MinHeight {Binding ElementName=MyText, Path=ActualHeight}
  • GridRow – column starts count with 0
  • Don’t use canvas because you lose the benefits of WPF
  • Save button can be disabled if no changes made
  • CommandViewModel (MVVM style)
  • Dictionary Support in MVVM – can make custom dictionary
  • Behaviors – watermark text box
  • Blend 4 get command behavior on grids
  • Blend SDK (reference System.Windows.Interactivity)
  • SWI
  • Hierarchical Data Template
  • DataBinding – 2-way and 1-way
  • Update source trigger happens on lose focus
  • Expressive UI – type in one field and other fields change if you have them tied together
  • Value converters or MulitValue
  • DataContext – looks to for binding. First one it finds. If it doesn’t find, has silent failure.
  • Style Trigger – use to trigger elements to display based on the trigger
  • IDataErrorInfo – string indexer & error property
  • Magic Strings – array populated in XAML order

As you can tell, lots of cool stuff in WPF…can’t wait to get started with it.

Recommended Books:

  • Pro WPF Development
  • WPF Unleashed

Related Sites:

Building Your First Azure Application (Michael Stiefel)

Azure is Platform as a Service (PAAS). Windows Azure works when we don’t want to manage infrastructure or a data center, we don’t want to buy for peak capacity, we don’t want virtual machines, and we have customers all over the world.

We sign up at the management portal in order to get started, and can also access the DB thru the portal (must set firewall rules – usually with IP range). We can connect to the Azure DB thru SSMS but there are limitations to this connection.

In the Hosted Services section of the portal, we have access to local emulators (compute and storage). An icon in the task bar gives us options to see how the application is working. The DB uses local SQL Express for development storage DB. If using the emulator, don’t forget to close down deployment when done.

A role is configuration plus code and is analogous to an application. Several ways to deploy application: the portal, Visual Studio, or PowerShell. Startup tasks can be set up to run every time the application is deployed.

During his demo, I jotted down a few notes:

  • DiagnosticConfiguration.GetDefaultInitial – can set to move data on specified time. (scheduled transfer period, buffer quota)
  • In Diagnostics section on Config tab, add cloud key.
  • Azure Storage Explorer – free addin to view IIS log and other diagnostics
  • Any degree of I/O should use medium VM size
  • Must set instance count – tools out there to help automate this
  • Load balancer in front of Azure handles traffic (Round Robin – no memory)
  • Does not redirect to same instance in same session
  • Set up cache
  • Minimum of 2 instances – small % that both will go down
  • Failure zones – fabric controller makes sure no shared hardware between your instances
  • Upgrade Zones – instances don’t get updated at same time
  • Create package file and upload to Management Portal
  • Affinity group – all services go in same center
  • Can deploy to stage or production
  • Windows Azure Cost Calculator – compute is major driver of cost
  • Can bulk copy DB
  • Put binary data in a blob

Related Sites:

Chalk Talk: Parallel Programming 101 (Tiberiu Covaci)

Good discussion on threading. I jotted down some notes in between getting pinged from work with an emergency. I ended up leaving this session to deal with the emergency. If anyone has anything to add from this, please leave your comments.

  • Asynchronous – waiting for answer (active waiting)
  • Concurrency – multithreading
  • Thread pool
  • Parallel – multiple computations concurrently
  • I/O is a big problem
  • We can’t get faster processors anymore so instead we get more cores
  • The thread is responsible for execution not the process…heavy weight.
  • Quick sort array and Queens Problem
  • Don’t use lock on disk
  • Interlock is performed in sharing data
  • Mutexes not recommended but can be seen everywhere (system wide object)
  • Semaphores – can run 3 print jobs in parallel
  • Reader/writer locks are bad on performance
  • ThreadPool.QueueUserWorkItem(_ => {action})
  • Task Parallelism (Task <T>)

Top 7 Lessons Learned On My First Big Silverlight Project (Ben Day)

Originally I had planned to attend the Fast, Faster Async ASP.NET session, but since I missed the 2:30pm session with Silverlight I decided to attend this one so that I could at least get a taste of Silverlight while I was here.

Ben briefly discussed RIA Services and recommends using RIA Services only for short-term, fast to market applications. This will save time coding but has no code reuse and is difficult to maintain long-term.

Here are Ben’s top 7 lessons:

  1. It’s 2 applications: client-side and server-side
  2. Unit Test
  3. Async WCF rules your architecture
  4. Repository and adapter patterns
  5. No shortcuts! Keep ViewModels and Models separate.
  6. Primitive obsession in your ViewModel
  7. x:Name is a code smell

Related Sites:


Read Full Post »

%d bloggers like this: