in

WPF Design and Development

IdentityMine Team Blogs

David Kelley

A day in the life of a humble software architect... doing C#, WPF, Silverlight, Legos, Fuzzy Logic AI and/or whatever is the latest and greatest or more importantly the coolest techo mumbo jumbo...

September 2006 - Posts

  • WPF/.NET 3.0/winfx etc and the reading experience...

    Ok, so we have this email alias for winfx setup and typically I let all the experts send out stuff and I check it out so I can learn and try to stay on top of things. There was this thread about readers and reader clients and talk about this one from the New York Times that some of my peers worked on. It really does have some cool features. Anyway Here is a bit of a thread that I started when I asked basically some questions about what the deal was? I put these in order that they were sent out starting with the email I sent out regarding this dicussion about readers.

    From: David Kelley
    Sent: Friday, September 29, 2006 8:06 AM
    To: winfx
    Subject: a little help?
    Ok, so maybe I spend a little too much time with algorithms and databases (they are so inspiring) J But I really do not see how the times reader (based on the screen shots) is any better then something that could be done in HTML or any of the other readers I have seen, and for that matter cnn.com, msn.com, space.org etc. all are just as easy to read as any other RSS reader? It all seems a bit much to about I’m not really sure. For winfx, WPF, .NET 3.0 etc it seems to be about better UI. With the work we have done here we have taken it to the next level with ‘finesse’ (whooshing) where applications are easier to use, more pleasant to use, better data visualization etc but when it comes to reading text- reading text is reading text. Maybe one font might be better then others but still? I’m not sure I understand what all but fuss is about?

    From: Mark Brown
    Sent: Friday, September 29, 2006 8:51 AM
    To: David Kelley; winfx
    Subject: RE: a little help?
    Whoa.... I hope we didn’t start a firestorm here. Seeing is believing (the screen shots don’t do the Times Reader justice). There is a fair amount of whoosing in the app (especially in the Topic Explorer). :)
     
    Personally, I LOVE the New York Times Reader experience, and our own Nathan Dunlap and Robby Ingebretsen have made significant contributions to this app prior to joining IdentityMine.
     
    I think what some of us are struggling with is the potential proliferation of branded WPF reading experiences (as Ashvil refers to as the 'closed reader') that are each a separate install on the client.

    From: David Kelley
    Sent: Friday, September 29, 2006 9:12 AM
    To: winfx
    Subject: RE: a little help?
    I did download it and it is cool. Lots of whooshing, I like that in any application but I mean any reader either a web page, some rss reader or this slick times reader; when you are just reading text I didn’t see what makes one different then the other that adds to the 'reading' experience?

    From: Nathan Dunlap
    Sent: Friday, September 29, 2006 9:25 AM
    To: David Kelley; winfx
    Subject: RE: a little help?
    Ok now you pushed my buttons :) Actually no firestorm on my side because I am used to explaining the app to people. Most people don’t get the app until they have used it for a few days consistently. Even then I don’t think most people can put their finger on what it is that is better. I was going to do a blog post but you now get my preview:
     
    Reading text is not just reading text... Maybe it is for you. But by and large the mass audience of 'text' readers have not found a suitable digital replacement for the paper reading experience.
     
    Having a little bit of insight into the NYT app and its design decisions I want to point out that there is no one feature in NYT that is a silver bullet that solves the reading problem. Rather I would argue that there are multiple features used together in the right way that reduce the reading problems.
     
    NYT was designed with the concept that readers used to spend 20 minutes a day reading paper news and now they on average are spending about 5 minutes a day skimming news headlines. This defeats both advertising and subscription models. The reader is betting big on devices (Tablets, UMPCs, etc) being core to solving this problem.
     
    The core features that reduce reading friction are:

    • offline support - Show me a web based reading experience that is a no touch offline solution that you technology challenged friends and family can use. Think about where you see people reading newspapers these days... Subways, airports, waiting rooms... All places that are "sometimes connected".
    • Ease of Use - you are capable of navigating and reading the news with just the four arrow keys. This is especially useful if the app runs on a device like tablets with directional buttons or is used with a remote. Try reading in bed with a laptop using the track pad or nub, or mouse every time you want to flip a page. Book reading experiences do not require near the muscle movement that is required to interact with computers... Especially in scrollable websites. Changing articles or flipping pages becomes a twitch muscle movement that with the right device is easier than flipping a paper page.
    • Adaptability - There are no reading applications that truly adapt to the size of the device as the NYT reader does. Acrobat has flow capabilities that most people aren’t aware of but they aren’t nearly as robust as what NYT does. The NYT Reader has specifically designed templates made for most popular tablet sizes available in both landscape and portrait positions.
    • OS integration - run the app on Vista. Use the start menu and type in an article and it searches cached content in Vista not in the app. Imagine when you can start tagging these articles and living the WinFS dream.

     
    Features that are compelling to businesses:
     
    • Branding and differentiation - this app was actually designed in coordination with the NYT print designers.. Not the web designers. Print professionals have historically felt that the web has destroyed the heart and soul of the art and science of print design. This is not just about typefaces but they are p art of it. This is about line height, kerning, leading, ligatures, stylistic variants. Paragraph width is a major issue with reading fatigue and our ability to read more effectively. If you haven’t heard Bill Hill talk about type then I highly recommend watching this http://channel9.msdn.com/showpost.aspx?postid=146749
    • Advertising - coordinated advertising that takes advantage of the adaptability features and the offline support is very compelling to advertisers. Especially since there are new advertising holes available because of pagination and interstitial navigations.
    • Stickiness - A major problem with websites and browser based applications is that you lose context really easily... How many times has a hyperlink in an email hijacked one of your browsers? Publishers hate this and its one compelling reason to become a standalone app. Getting icons on the desktop, in the start menu, and registering a file type are all much more compelling than the current bookmark, address bar options that websites currently have.
    Why is it a closed reader? Why not an browser based application? Its not because those weren't valid ideas on the table. It’s mostly about timing and technology. It’s a very realistic solution for NYT to build an XBAP solution. In fact that is core to the MS Reading starter kit. But again a browser based solution only solves a few battles (mostly reading display) which I don’t think is the reason NYT is innovative.

    From: Nathan Dunlap
    Sent: Friday, September 29, 2006 9:51 AM
    To: David Kelley; winfx
    Subject: RE: a little help?
    Very relevant and posted today 'Does Reading Really Matter' http://blogs.adobe.com/billmccoy/2006/09/does_reading_re.html

    From: David Kelley
    Sent: Friday, September 29, 2006 10:09 AM
    To: Nathan Dunlap; winfx
    Subject: RE: a little help?
    I think the ‘magic’ or silver bullet is when the times reader is part of outlook and built into a Teflon plastic thingy I can roll up and put in my pocket. Then when it is displaying it is just as easy to read as a paper magazine and plus maybe has most of the functionality of a tablet PC and for that matter when you look at it, it looks like a printed page and doesn’t need a back light... or batteries...
     
    So some one showed me the topic explorer... now that is cool! But still, I have my little wiz bang app I plug in each morning and launch 8 portals and I skim all the head lines and only read technical material that is particularly relevant. Should I now install a reader for each one of those portals? Right now IE is my reader and it doesn’t do all the whooshing but it seems to work. Maybe a nice plain RSS reader that gets rid of all the adds and works offline would me cool and is all I would want short of that topic explorer and the magic bullet above.
     
    Now really that Topic Explorer is worth it all by itself. THAT is in my mind an example of what WPF really gives us from a business stand point. I’m not even sure how you could do that kind of functionality any other way visually. (I suppose one could get really warm and fuzzy with their C++ compiler for a year or 3 but that gives me chills...) Being able to visualize information in a way that is easy and logical that couldn’t really be done ‘reasonably’ with other mediums really is where I think we really get bang for our buck. I will keep the NYT reader around just for that one feature.
     
    Anyway this did shed some light onto the whole reader experience thing for me. And I appreciate your explanation.
     
    One more issue though... about that 'Does Reading Really Matter'...
     
    Personally I love my books, in 2025 I will still be collecting them and worst of all (gasp) I will still be 'reading' them. They are all special to me. J So I don’t really see my self getting away from paper books until that magic e-book, rss, page computer, email wiz bang client with lots of whooshing and a topic explorer with no batteries is rolled up in my back pocket or better yet implanted under my skin and the UI is piped directly into my optic nerves...

  • Setting up Lego NXT Blue Tooth

    This I found a bit of a pain. Not so much that setting up blue tooth is a pain but the time out was a pain to get it setup with a computer so you have a partnership setup. This seems to be because of punching in your key into the NXT brick is a painfully. Also you need to update the NXT firmware. You can find a tool for doing this in the Lego IDE that updates the firm ware but when you are setting up the blue tooth connection in the windows control panel you need to work fast to get the key into the NXT computer.

  • WPF - ChartFX

    So I have been mucking about learning WPF (seeing how our main business focus in WPF and as most of our business currently is related to WPF and since I'm the only one left that is fairly clueless) My first real programming task was to use Chart FX to tie it to some interesting data. So I have the latest CTP of Chart FX and built out my little demo app. It seems to work great...

    But so there are these 'issues' that I found when I was making my scatter charts. Now granted this is the first CTP for WinFX/WPF where the Chart FX control Actually does scatter diagrams at all so we really need to wait a bit but with the current bits I found the following issues:

    1. I could not get the control to list more then the first five or six records in whatever data source it was bound too... I reall hope this one goes away. Now for my little demo I found that since I could add lots of 'series' to the control I could get around the problem using this as a simple 'hack'.
    2. So now assuming the 'control' works right and I could use one series for a collection of say '15' points... well so you can only have one style for your points. Again our simple hack gets around this as each series can have a seperate style. Now in this case I don't feel it is really a hack. When you look at the zamel it really makes since to have a style for each series of points in the chart.
    3. Length of collections... So when using multipul series I found that the longest must be the first one. So ok I can see the point of this but really good 'control' design in my mind would include being able to deal with this without blowing up.
    I have included my sample chart which has alot of stuff I won't necescarily do but it allowed me to plan with the control in the WPF environment. (FYI you will need the latest CTP chart fx dll to make it work.
  • Federated Database Design Pattern, the Baseline Implementation and SQL 2005

    So a number of people keep asking me about this (overview of the Federated Database Baseline Reference Implementation and the associated Design Pattern) so here is an over all description of the Federated Database Baseline Reference Implementation as implemented/developed for Microsoft to show case SQL Server 2005. This actually reword from the description we used in the lab manual:

    Overview

    The baseline system is designed so that each database or information silo can be a separate system. In fact, even Notification Services in the system could be a separate machine; however, in the Reference Implementation Notification Services is running in the Email Processing database.

    The communications infrastructure between applications and backend components uses secure ADO.NET connections when Windows Authentication is available and HTTP endpoints when it is not.

    Relationships across databases are managed at the application level to improve performance. Normal database relationships are maintained in specific database relationships as well as other features such as XML Schema collections, indexing etc.

    The system makes extensive use of SQL Server 2005 programmability, specifically SQL CLR, to leverage the database server as an application server platform. Data-oriented business logic can then be hosted in the database where it can be performed more efficiently. Middle tier and smart client logic can then focus on presentation and session state, allowing for a clean separation in the type of logic used in each tier.

    Both middle tier and smart clients leverage local SQL Server caches to facilitate improved performance and reliability. Each entity can continue to function independently of each other to the point that you could pull databases on or off line as needed without any down time for clients.

    Clients are able to operate when they can not make contact with the backend using Service Broker to queue requests. This same system allows requests on the backend to be queued easily and processed automatically when the server has CPU cycles. This improves overall performance and makes it much more difficult to overload the system.

    Technologies Highlighted

    The primary purpose of the Baseline Reference Implementation is to showcase new features in SQL Server 2005. These key technologies include:

    • Service Broker and Secure Messaging via Service Broker
    • CLR Routines and XML Serialization at the database level
    • The use of the XML 'datatype' in SQL Server
    • Notification Services
    • New T-SQL Language Enhancements
    • The use of 'xQuery'
    • XML Schema Collections in SQL Server
    • XML Indexing in the database
    • HTTP/SOAP Endpoints in SQL Server
    • Query Notification

    Other key features include:

    • Federated Database Design Pattern Implementation - Allow even the database(s) to scale up and out
    • ASP.NET 2.0 and .NET 2.0 Features (i.e. Master Pages, ASP Caching, double buffering, etc.)
    • Smart vs. Web Client Implementation
    • System Robustness
    Use-cases

    Initially the Baseline Reference System implemented 4 use-cases and otherwise was not necessarily complete.

    • Finding and Purchasing a Book
    • Add a New Book (Product)
    • Update Stock for a Book (Product)
    • Ship a Book (Fulfillment)
    • Add Product (Offline)

    Overall it was a really cool system and this Design Patterns is so robust at the enterprise level that you can go into the data center and pull the power cords on the db servers and the application not only won't skip a bet and the client apps continue on processing orders and no data is lost or orders missed.

  • Back To Basics - Lego Design Patterns

    So getting back to lego design patterns... After building a number of these Robots there seems to be some common design principles across all the designs thus far. So at the lowest level we have a set of hardware (current NXT set) and our computer to program it right? I think that so far I am going to disagree with my self from earlier and say there are only 3 patterns given the lego IDE. A base line and two others one called say 'Linear' and the other 'Repetitive'. So our base line is as described hard ward with a lego IDE program with up to 3 threads that may or may not work independently. So then we have the linear application is basically a glorified set of instructions and then the repetitive program.

    In the linear application the instruction set is just that and when complete it is complete and the robot is done. Virtually all the ideas I had earlier on the matter fit into both categories but when I found interesting is the latest category or pattern and that was the Repetitive Program. In this program there will always be some kind of master loop and generally I found my self putting in something to keep the brick from sleeping. Then there would also be some inner loop plus some instructions such as loop through this doing this until sort of thing and then execute some final logic and start over sort of thing. For the most part all the programs ended up here as it is the most robust model.

    So actually I think the Linear is going to be its own pattern and then all the others will remain so now we have 4 patterns with in the world of the lego IDE. You will note that the 'part droid' is not on the list as I think that the 'Part Droid' is not realistic to do using the Lego IDE and any such device would also then fall into one of the others. I think the 'Part Droid' idea really will come into play in the larger area using C# to build the program in the .NET environment.

    • Component/Part/Object
    • The Linear Application: Derived from base line to preform a set task and then be complete.
    • The Navigable System
    • The Stationary Device
    • The Part Droid: a robotic device component that fits together with others to build more complicated machines, robots and droids.
    So that being the case I will add-in a bit more on my patterns:

    Title: Component/Part/Object
    Problem Space: BaseLine
    Abstract: All Windows/Legos Based robotic systems are derived from this pattern where the NXT program is written in the lego IDE. Given the current state of the world you can't get around it...
    Context: Microsoft Windows, Lego NXT bits and IDE, Bluetooth, USB
    Known Uses: all but primarily as the bases for all robots where the NXT brick is programmed using the lego IDE.
    Related Patterns: Navigable System, Stationary Device

    Title: The Navigable System
    Problem Space: Navigation on a plane
    Abstract: Derived from Component/Part/Object this patterns address the abiltiy for a robot to move around in 2 or 3d space. Fudamentally the program will have a master loop or repitition with a max of 3 threads each with there own master loop and at least one method to control the brick time out and then at least one test or execution block that will cause the robot to move and at least one test to check the environment to see if it should change course and in the test it there will be a block todo just that at the very least.
    Context: Microsoft Windows, Lego NXT bits and IDE, Bluetooth, USB
    Known Uses: Manuvering in a given area some kind of robot on a plane
    Related Patterns: Component/Part/Object, The Stationary Device

    Title: The Stationary Device
    Abstract: Derived from Component/Part/Object this patterns address the abiltiy for a robot preform a given action. Fudamentally the program will have a master loop or repitition with a max of 3 threads each with there own master loop and at least one method to control the brick time out and then at least one test or execution block that will preform some task.
    Problem Space: The Machine
    Context: Microsoft Windows, Lego NXT bits and IDE, Bluetooth, USB
    Known Uses: Preforming actions, such as building or a repetitive action.
    Related Patterns: Component/Part/Object

    Title: The Linear Device
    Abstract: Derived from Component/Part/Object this patterns address the abiltiy for a robot preform a given action or series of actions once and then be complete.
    Problem Space: The Machine
    Context: Microsoft Windows, Lego NXT bits and IDE, Bluetooth, USB
    Known Uses: Preforming actions, such as building or an action.
    Related Patterns: Component/Part/Object

More Posts
© 2007 IdentityMine, Inc.
Powered by Community Server (Commercial Edition), by Telligent Systems