About Me

My name is Sacha Barber, I am what one would probably describe as a nerd. I basically love software, and I especially like .NET/Scala and cloud based architectures.

I live in Brighton in the UK, and currently hold the following qualifications:

  • MSc : Information Technology For E-Commerce : passed with distinctions
  • BSc hons : Computer Science and Artificial Intelligence : 1st class degree

Which I gained at Sussex university. Where I was subjected to a host of different languages, and subject matter. We did however concentrate on one main language, which was Java. So I did end up with 4 years Java experience, though still prefer .NET/Scala by a mile.

This is kind of like my second time around with education, I initially went down the electronics / music technology routes where I also gained the following qualifications, all studied part time

  • Ordinary national diploma : music technology
  • Ordinary national diploma : electronic engineering
  • Higher national diploma : electronic engineering
  • Higher national diploma : software engineering

I have also spent many years at work and I have worked at various companies in various roles. In my youth I was employed as an industrial automation engineer, where I would be responsible for many varying, tasks including software design, software testing, customer requirements specification analysis, large scale management execution system support for a large blue chip company (a small company called Proctor & Gamble), database development, active X development.

I was fairly happy at work, then all of a sudden we got invloved with a project with a crazy (Phd maths crazy, you know the sort) chap from Germany who we were hired to work with, on a large scale software project for Proctor & Gamble, where he worked. This was using .NET v1 / v1.1 at the time. That was it, I was totally hooked after that. I never looked back, and promptly ditched the VB that we had been using til then, in favour of C#.

In fact this meeting with .NET (C# really) was enough to convince me that I really really liked software, as such I decided to go back to university to gain a computer science related degree. The company where I was at that time, chose to sponsor this re-education. Although they did stipulate that I had to get good grades, as you can see, I did ok (a 1st class degree and a Masters with distinctions remember).

I also gained an award for the best IT project from my University, and the British Computer Society (BCS), for a remote control media player (code named Re-MP3). This was written using .NET v1.1.

Although my BSc project was cool, I think my MSc project, is much better, it is a Flickr type application that allows users to share content, using a web site, and also uses a desktop application to synchronize this content. This was written using .NET v2.0 and used lots of different programming techniques.

I have worked on many other projects, some of which I can not share, as they were for work, and as such I must maintain customer confidentiality, but I am also quite into writing articles in my spare time for codeproject, where I have published numerous articles about various subjects.

In fact as a result of writing community based articles I have now been awarded 9 MVP awards

Since going to university I have worked in various different roles, such as

  • Telecoms
  • Fx trading
  • Fx options
  • Various investment banks (don’t really like these roles though)
  • A catastrophe risk based hedge fund
  • A crypto currency based hedge fund

During these roles I have had to use a whole lot of different tech, here are some highlights

  • Apache Cassandra
  • Apache Spark
  • Apache Kafka
  • Spray.IO / Play Framework
  • Scala
  • Akka
  • Akka.NET
  • Azure
    • Azure Blob Storage
    • Azure Table Storage
    • Azure Service Bus
    • Azure EventHub
    • Azure EventGrid
    • Azure Functions
    • Azure Web Jobs
    • Azure Web Sites
    • Azure Key Vault
    • Azure Service Fabric
    • Azure SQL
    • Azure SQL Data warehouse (polybase etc etc)
  • C#
    • Rx
    • WCF
    • WPF (MVVM / PRISM)
    • Winforms
    • Excel DNA
  • Web
    • Web API
    • ServiceStack
    • ASP MVC
    • Aurelia
    • Angular
    • React
    • WebPack
    • Gulp/Grunt
    • TypeScript
  • Rabbit MQ
  • SQL Server
  • VSTS/Octopus Deploy/Team City/GitLab
  • Git

These days what I really get a kick out of is

  • Really simple well designed software
  • Distributed computing
  • Cloud computing
  • Functional programming (not all but some elements are dead handy)

My favourite languages being

  • C#
  • Scala


56 thoughts on “About Me

    1. Ian

      Oh really bad timing, I am off on hols tomorrow for 2 weeks, but this looks cool and I will have a look at it when I get back of holiday if that is ok. Though I am not running WinRT/Win8/VS11 at the moment, so I don’t know if I am going to be able to open the solution, am I?

      Either way I’ll find a way of looking at it when I get back

      1. great articles as usual 🙂
        id any chance having some wpf semantic zoom control like the one in winRT ?
        there is some wp8 version but none for wpf

    1. Ben

      I really like what you have done there (as it is close to what I did). I wish I had of gone for storing the positions of the vertices, and created the graph myself, but I used 3rd patry graph library which did not allow saving of positions. Ho hum. Yeah I like what you have done, its cool.

      1. Thanks mate. Did you analyze the IL from method body, or was it solely based on the .net reflection model? Let me know if you’re keen in joining forces and contributing 🙂 It would be great to have your experience and input.


  1. Hello Sacha!
    You are an amazing developer! I’m still a newbie, and I’m learning a lot reading you articles and studying your projects.

    I’m here to ask about your “ZombieExplorer : WCF-WPF n-tier examination” article at Code Project.

    Seems like it was removed from the website 😦 what happened? It will be back?
    Thank you! Cheers from Brasil!

  2. What happend with ZombieExplorer? I was looking forward to check it today, but it is signed as deleted on CP?!?!?

  3. Hi Sacha ….
    You have seemed to be my Role -Model

    I admire all the articles written by you.

    But , I have just started my career in programming and sometimes I feel very bad that I am not good at it.

    How did you feel when you initially started off?Would you like to share it ?
    Please do so ,…. & also if you like , you may give a word of advise to all of us ..

    Thanks a lot- Your works motivate me.You do things so that it helps you , but it helps a LOT of Us.

    Thanks again:)

    Cheers ,


    1. Shar

      Oh man, I consider myself to be at the start of my learning to be honest, there is no way I consider myself to be an expert at all. There is always so much more to learn. I think as long as you are passionate about it, it will be fine. Personally I like to read/try stuff out and set myself little projects. I think having something you want to achieve really helps you learn. And thanks to uber smart people like those at Stackoverflow.com you can always ask if you get stuck.

  4. Sacha, .NET needs people like you. I share your perspective of the MVVM world. Nice Framework. I will try to learn what you carefully coded for every lover of good-made things. I hope to follow you on Twitter if you give me the opportunity. Thanks a lot. I hope to see how you have a great success in this world.

  5. Whoops, I noticed you’re not on Twitter. Nice move (bad for your fans, though!) Then I’ll have to put your blog in my homescreen.

    I have just started today to how to use MEFedMVVM as your Cinch framework makes use of it.

    I’m ready for more, but I think the sample is to heavy. Would you mind writing a simple document in which you tell us how to wire up the things to have some very basic application like one with just a pair of ViewModels, a command and some dialog shown from it? (that IS a very common problem for all MVVM fans out there – showing windows from the view-unaware ViewModels).

    I hope you had a nice weekend and you could guide us towards your fantastic framework! I intend to put the word out in my workplace 🙂

    1. Jose

      Thanks for your comments, I appreciate the feedback. I would like to be able to create a simple demo for Cinch/MeffedMVVM, but right now I am completely stacked out

  6. Mamma mia! I’ve dived into the code and found that Cinch is a beast in complexity! My poor brain suffered from overheating when I came to the part in which you talk about the IUIVisualizerService and some of its insights. As I’m MEF newbie (I come from Unity), some of the details are totally confusing to me. I really hope that a “hello world”-like sample will turn on a lightbulb in my head. By the way, I read some lines written into the code-behind of a Window (in order to register a “popup”) and thought “doesn’t this break the pattern?”

    It was this part:

    //register known windows via callback from ViewModelBase
    //when services are ready
    ViewModelBase.SetupVisualizer = (x) =>
    x.Register(“AddEditOrderPopup”, typeof(AddEditOrderPopup));

    this.DataContext = new MainWindowViewModel();
    (this is the link)


    Sorry for the huge text here, I’m excited about the things I would do with Cinch, but I don’t know how to start to get some cool stuff (showing a Window in a loosely coupled manner is a REAL challenge that I never managed to do.

    Thanks a lot for your reading and good luck with all that work!

  7. hi sacha,
    I want to use your code (from url – “http://www.codeproject.com/Articles/16113/Retreiving-a-list-of-network-computer-names-using”) in my open source POS project. Its a small POS software and I found your code useful. Can I use it and redistribute it?

  8. Why is the picture of you on this site different than the picture of you on your Codeproject site?

    Anyway, I enjoyed reading your “About Me”.

  9. hi sacha, are you interested in developing a tree-map based sample project in wpf in ur free time, nothing big

  10. I meant collaborating on a tree-map based sample project.Meaning using the tree-map control in the project (System.Windows.Controls.DataVisualization.Toolkit or the one on Codeplex)

  11. Hi sasha,

    really love your article about NetMq as there is not much info on this framework.
    In my project, i m using 0MQ (with the clrzmq) in .Net. it’s working but i m asking myself to go to
    NetMq because clrzmq is not evolving anymore. I m just wondering if it s production ready as you
    made a huge test of it. But in a more general way, i m just wondering if using 0MQ is a good thing
    for a multi-Plateform app. 0Mq app can only talk to another 0Mq and language port binding are not
    really up to date (the only i see evolve is NetMq). My app has a server in .net, winform client,
    webform client and mobile client… and i don’t want to make a webservice between (fed up with wcf
    and production failed suprise) my mobile and web client but want to use javascript web socket.
    i have seen JSMQ…
    Well in a more general way, do you recommend 0MQ ( i have look at http://www.eneter.net too…don t know if you know it)

    maybe you can send me your comment by email…

    1. I would have no reservation about using netmq in.production, if fact we do already. I think netmq is the way to go. I use wcf loads too, I don’t mind it, but for that lightning quick stuff I really like netmq.

      I would use it if I were you, and I have also given renter a look before, the guy did good on that

      1. ok tx. i started to port my zmq code to NetMq. I will stay with it and let eneter in a part of my mind…

  12. Hello Sacha,

    I’ve read a lot of your Codeproject articles, wich helped me a lot to get a deeper knowledge of WPF. So at our Company we used the SharpDevelop WPF Designer in our Application as a Component. Now I fixed a lot there to give the Community something back. But now I wanted to fix e problem with loading ControlTemplates wich I described here: https://github.com/icsharpcode/SharpDevelop/issues/602
    Maybe you could help me with this issue?

    1. Jochen

      Sadly right now I just don’t have time to do anything, I am do some courses in my spare time, and also trying to laern React.js/Bower etc etc

  13. …mmm no! Sacha you should help people who request help from you and not learn react.js or bower for it is said in the bible

    “Hebrews 13:16 : Do not neglect to do good and to share what you have, for such sacrifices are pleasing to God.”

    also it is said

    “Luke 6:38: Give, and it will be given to you. Good measure, pressed down, shaken together, running over, will be put into your lap. For with the measure you use it will be measured back to you.”

    Besides why do you want to abandon WPF which you once cherished with all you heart for JavaScript that runs in a browser and all the perils that run with it.It is a sin

    1. John

      Your sense of humour is right up.My alley, and if I had the time I would so help. Have no fear I still love wpf, just need to keep your knowledge current is all

  14. I still managed to fix most of the issues I had by myself.

    The rest I think is maybe not fixable, maybe it is, but not without a big rewrite of the code. So now it works.

    But thank you anyway…

  15. Hi Sacha,

    Not sure if i can ask you that but here we go.

    My name is Decarlos and I am working in wpf diagram project and Im using
    “Sucram” projects as guidelines.

    Honest I think your approuch is much more clean and direct. Anyway for
    many reasons people here decide to use Sucram´s approuch.

    Right now I´m facing problem trying to connect the elements on onload of the form.
    Very similar as you do in your approuch.

    I can create the elements and the connections but I cant bind it. So Even i can
    see my elements and the connection on the screen they are not connected, if move one of the elements the connections stays in the same place.

    I will really apreciate if you can help me with that or just point in some direction.

    thanks a lot.

    Decarlos Menna.

    1. Unfortunately you need to bind, an in order to bind, you need to use a more MVVM approach (at least in my opinion) so you need something more like what I did. So I would push for using my approach. Which sadly is all I can say really

  16. Hi Sacha,

    One more question,

    I tried your approach, but i got stuck trying to reproduce one of my requirements.
    Resuming my connection needs to have the popup where i can insert data, same as the other elements on your project.
    I managed to include the information icon to the connection but i cant set up the popup to bind the values.
    So when i click on the “information” icon on my connection i need to have the popup where i can insert data.

    do you any idea how can i do that ?


  17. Hi Sacha,

    Just to say that I thoroughly enjoyed your sample NetMQ+ RX Streaming Data Demo. I actually have it working with my own tickers and prices (quotes). I have two quick questions: 1) I am calling the Client from a VB project (I do get the mainWindow and get tickers and prices)

    Dim app As New Client.App

    Dim myTickers As New System.Collections.ObjectModel.ObservableCollection(Of Client.ViewModels.TickerViewModel)

    Dim tickersViewModel As Client.ViewModels.TickersViewModel
    Dim connectivityStatusViewModel As Client.ViewModels.ConnectivityStatusViewModel
    Dim mainWindowViewModel As New Client.ViewModels.MainWindow.MainWindowViewModel(tickersViewModel, connectivityStatusViewModel)

    Dim mainWindow As New Client.MainWindow(mainWindowViewModel)

    however, when I try to get an observation

    myTickers = mainWindowViewModel.TickersViewModel.Tickers

    I get a null exception coming from the Client side (c#) any thoughts?

    question 2) Is there a way for the client to send command to the server say, GetData to get the server to run its process to obtain the current set of tickers and prices from the underlying data source as opposed to the pub/sub method? (Kind of on demand data request to the server)

    Thank you and congratulations for publishing your sample code projects.

    1. JC

      I dont know if I understand your 1st question. But for Question 2 there is a snapshot issued from the server to client(s). But if that is not what you want, you could expand it to have an extra RequestSocket in the client, and ResponseSocket in the server which could be used to grab initial data.

      See https://github.com/zeromq/netmq pages for an example of RequestSocket / ResponseSocket, only difference is you would need to split that into the 2 processes

      Client would have RequestSocket
      Server would have ResponseSocket

      1. Hi Sacha,

        I appreciate your quick response. For my first question, looking into the client side (C#), mainWindow gets and displays the tickers and prices obtained from the server; I have another valuation project (in VB) that needs to get the tickers and prices to value trades, how can I get a list of tickers and prices from the TickersViewModel.Tickers (in C#) if the call to get them comes from the VB project?

        (VB) myTickers = mainWindowViewModel.TickersViewModel.Tickers (C#)

        Perhaps I’m missing something really basic, but I must say I am newbie at this and just learning by example, that’s why I cannot thank you and Doron enough for your contributions.


  18. Hello,Sacha,
    How are you. This is Eric Liu from China. I am searching some APP developer, especially those are expertise of native advertising system. I heard your name from codeproject.com, i am writing this message to enquiry are you interested in the developing the Chinese market. We have a lot of market resources, and want to find a partner who is the real expertise to provide the technique support. So, are you interested in or not, please let me know, thanks.

    take care

  19. I tried to post the following on your articleF# 21 Events, but it said “comment could not be posted”. Can you move it there?

    Note that it is also possible to have events at module level. This may come in handy if you want one-time initialization and allow a listener or responder for the initialization.

    Another use of module events is that they are not bound to a created object and therefore not to their lifetime. If you have events that can happen all over your code and from different contexts (say, for instance, a LicenseValidation event for a certain feature of your product), this can be very helpful. It can be set from any .NET language.

    Yet another use I found was for solving forward references, where initialization requires an instance of an interface, but your current project cannot have a forward reference to it (a well known limitation of F#), or would otherwise result in a circular reference (a limitation of any .NET language). There are other ways around this, but a module event is an easy, secure and lightweight method.

    (disclaimer: I am the owner of Exselt, an XSLT 3.0 processor written in F#, and use this pattern in some places)

    1. I think I would probably use a Rx Mediator for this (in C#)

      public class EventMessager : IEventMessager
      private readonly Dictionary _subscriberLookup = new Dictionary();

      public IObservable Observe()
      object subject;
      if (!_subscriberLookup.TryGetValue(typeof(T), out subject))
      subject = new Subject();
      _subscriberLookup.Add(typeof(T), subject);

      return ((ISubject)subject).AsObservable();

      public void Publish(T @event)
      object subject;
      if (_subscriberLookup.TryGetValue(@event.GetType(), out subject))

  20. Hello Sacha,

    I was wondering is there anyway to get in touch with you for some question from a young and upcoming developer ;D?

    With Regards,

  21. Hello Sacha,

    Man you have blown my mind.
    I am looking to build a drag drop of our products onto a diagram and interconnect them into area’s and your WPF Diagram Designer has brought me to your blog etc.

    How on earth you have managed to do so much is amazing and I love how you have helped people as well.
    You Sir are a Demi-God… Keep up the Amazing work!

    In case people go “A What ?”– LOL — “Demi-God = a man who is greatly admired or respected”

    I don’t know who you work for but tell them to pay you LOTS, Wishes you was on my Team 😀

    Best regards,

      1. Yes I have seen there are a lot of 3rd party choices, we even use the DevExpress stuff for windows forms..
        I am tempted towards WPF for future product builds, so we may end up getting the DevExpress for WPF too.

        I have found with some 3rd party tool you always want to do that little something different and then your stuffed.
        So having the complete ground up source is total flexibility. Its a call off – Do it yourself or jump a few places by paying some $$$ and hope that does all you want too ….

        what I also liked was the depth you put into explaining all of your project and how it works.
        Find myself constantly learning and a good project is a great place to learn new tricks.

        I do wish some days my brain would absorb this stuff naturally but I find there are just them days when I have to bang my head against the Desk just to follow along lol….

        Hence why I never seem to have enough time…….

        Keep up sharing your knowledge you make a good teacher.

  22. Hello Sacha,

    Could you help me..?
    I followed your Azure: Upload and Stream Video Content to WPF from Blob Storage on CodeProject,
    I can upload files to the blob storage, but when I want to play the media, it has a problem…

    player.Source = uploadedBlobUri; <=== the Azure blob uri is not vaild for MediaElement…

    This is my video:

    I tried many ways to play the azure storage blob file in C# WPF, but all failed, ex: meta.vlc, mediaplayer….

  23. Hello, I am the owner of the site temnijblog.wordpresss.com. And I wanted to ask how you used SEO. Whether you used it for a fee or somehow did it for free.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s