About Me

I first wrote software on my brothers ZX Spectrum in the 1980’s.  Things have moved on a bit since then but the one constant is I have never lost my passion for being creative with code.

I am a father, husband, coder, DIYer, gardener and someone who loves being outdoors. When I am not outdoors I code and when I code I think Rx.

My day job is a c# contractor working on high volume, low latency trading systems in the City of London.

Roland Pheasant

15 thoughts on “About Me

  1. Hi Roland,

    Really fantastic work you have done. I am struggling to use this for my scenario. I have a number of ObservableCollections that are populated from different data sources. I need to create CompositeRecords by combining the same record (same ID) across all the ObservableCollection. Currently I am having to listen to CollectionChanged event on all of the ObservableCollections and try creating the composite record from it. This essentially combines all the cells/columns from across the ObservableCollections into a single record, so include cells that don’t already exist and update existing cells. Each ObservableCollection has to filter itself as well based on a given criteria.

    Then the CompositeDataSource also does its own filtering setup by the user.

    Do you think something like the above can be achieved with Dynamic Data? By the way, I am using Silverlight 5 and have converted your code to be usable with Silverlight 5. But example in non-silverlight framework would also be helpful.

    Thanks a lot for the great work!

    Liked by 1 person

    • Thanks ever so much for the positive feedback. When I hear such things it makes me even more determined to drive the project forward.

      You can definitely use dynamic data to solve you problem. However there will be some manual plumbing required. On a production system I join meta data from several data sources into a single record and apply filtering to the resultant collection. With a small amount of code you could trigger automatic filtering when the meta data changes.

      Is it possible to get some sample code to me as it is difficult to advice on how to get started without seeing your exact scenario? You can email directly on roland@dynamic-data.org

      Also perhaps I could create a build for Silverlight. At least then you can get updates and refinements. I will look into this.

      Like

      • Thanks so much for such a quick response, I’ll put together a demo project for you soon.

        In Silverlight, when I was converting the code, I noticed one thing that the ObservableCollectionExtended does not have access to BlockReentrancy() and CheckReentrancy() methods. Which is a shame and I don’t understand why it isn’t supported on the base ObservableCollection by MS.

        Best Regards,

        Nasir

        Like

  2. Once I get your example I should quickly be able to solve your problem. There will be several ways of doing so but I will use it as a demo to show how to tell a filter to requery when meta data has changed.

    When I set up the portable class library for dynamic data, it was only the problem with the observable collection which stopped me from keeping support for Silverlight!

    Like

  3. Yes I figured that 🙂 and am struggling to find an alternative way of making ObservableCollection thread safe without having to write a new one. I really like the portable library and the new way of setting up properties in C#.

    I’ll put together a demo tonight and upload it on my OneDrive for you to download.

    I really really appreciate your effort.

    Best Regards

    Nas.

    Like

  4. Hi Roland,

    I have sent you an email with a simple app showing a basic structure of my app. I have also sent you the Silverlight version of Dynamic Data that I converted from your Portal version of Dynamic Data.

    I would really appreciate your suggestions and support

    Thank you

    Nas.

    Like

  5. Hi Roland,

    thanks a lot for your work. Dynamic Data makes my live so much easier.
    I am just digging through the source code of Tail Blazer. There is so much to learn. Thanks a lot for sharing that all.

    Greetings
    Peter

    Like

    • Thanks for the thumbs up and I am very pleased my efforts have made your life easier.

      I will be doing a new Tail Blazer release in the next day or so, then I will start blogging about how I created Tail Blazer using classic Rx and Dynamic Data

      Like

  6. Hi Roland,

    Thank you so much for sharing such a nice work, I know for sure I want to use it for my current project.

    I forked a project named FireSharp that now streams JSON patches from firebase.com (or uploads changes to Firebase), which I use as a View Model. In particular, collections are persisted as dictionaries of records (key / object), so I see how naturally Dynamic Data would fit in.

    So far, I developed a class that derives from ReactiveList and implements IDictionary and serializes, deserializes as a dictionary to interface with Firebase. When I heard about your project I wrote a similar class that derives for SourceCache but so far I haven’t been able to propagate items changes. And also I’m not too sure if I need such a class since you have extensions that create an observable changeset from a Reactive observable…

    I’ve looked at Dynamic Trader sample and it’s very elaborate in regards to the direct injection of views, not easy to understand to get started. And I also fail to understand your implementation of AbstractNotifyPropertyChanged, how it differs from deriving from ReactiveObject…
    I’m new to ReactiveUI, this explains probably why I feel a bit lost between both projects. I think a basic sample (along with how it extends ReactiveUI possibilities), would really help at structuring a new project.

    Thank you,
    Eric.

    Like

    • Eric

      With dynamic data there is no need for inheritance. The idea is you maintain your data, either an observable cache or an observable list and use the operators to reactively consume that data.

      Getting data to and from Firebase would be a service which you would have to write. The resulting data would be populated into a source cache / list. You could use a ReactiveList instead of one of dynamic data’s a SourceList or SourceCache but I only added the adaptor for people who are already using ReactiveList,

      You can use ReactiveObject as a base class for you view models as it does the same as AbstractNotifyPropertyChanged . However ReactiveObject is more powerful.

      The best place to contact me on is here: https://gitter.im/RolandPheasant/DynamicData. You will need a GitHub account but that is easy to set up.

      Like

  7. Your work is top notch. I like the separation of concerns,specifically the sourcecache concept. Also little things like the CompositeDisposable. More importantly its a good example of how to use reactive extensions. Andybody who doesnt at least consider using reactive extensions for developing high volume data applications needs to give a reasonable reason why.

    Like

  8. Hello, It is a really cool Librairy. I would like to use it more, how can I write a getter/setter who get Points and then sort the value and print to the screen?

    Like

  9. Hi Mr. Pheasant, I am an Italian boy of 17 years and by chance I came across his project, which made me understand the potential of C # language, so I wanted to ask what I could start reading or courses to follow online and what faculty she studied to be able to produce a program at that level.
    Thank you in advance.
    Lorenzo

    Like

Leave a reply to Peter Cancel reply