Ross McNichol

I am a Solutions Architect

Ross McNichol

A hands-on IT Manager and .NET solutions architect developing desktop apps with WPF, web apps with Aurelia, and mobile apps with Xamarin. Sometimes I have found it difficult to find solutions to enterprise development patterns and solutions. This blog shares some of my favourite solutions to some difficult problems and elegant solutions I have found over the years

Me

My Professional Skills

Broad skills are listed below, most of my software development revolves around the Microsoft platform. C# is my specialty mixing in a bunch of other things like T-SQL, XAML, Typescript, HTML, CSS to get the job done

Web Development 70%
Mobile Development 75%
Desktop development 90%
Server Side Developer 99%

Aurelia Web Development

Aurelia is an elegant componentised SPA framework by Rob Eisenberg who also created Caliburn Micro which I have been using for many years. I have only been using it since late 2016 but it has worked really well for us

Xamarin/WPF desktop application development

More of a hobby at the moment and a way to contribute to the Caliburn micro project on GitHub. I have created the samples for WPF, UWP and Xamarin for official Caliburn micro GitHub repository

MS-SQL, Sqlite Database Development

I have been developing against SQL databases since 2005 and have a plenty of practice with designing building and tuning them. I have recently started using SQlite for integration testing in .NET applications

Solutions Architecture

Being involved in SMB's for my entire career I have had the opportunity to create multiple architectures to suit various needs. I take a great deal of pride in being able to discuss a business need and being able to confidently propose a solution that has a high probability of success

IT management

I am a pretty easy going and understanding manager, but I do expect a personal drive, innovation and results from my staff

Quality Assurance

I have developed over the years a comprehensive and proven quality assurance patterns. I have patterns for unit, integration, functional and manual testing to bring software solutions to their highest quality

0
years developing
0
years managing
0
completed major projects
0
current projects
  • Click once application wont start

    Click once application wont start


    I could not beleive it when i figured out why a click once application would not start on one of the networks machines. Over the past few days I have been helping a few people install our main business application from click once rather than over the network as it has been for the last 12 months, All was going well except for one machine. I tried reinstalling .NET 2.0 framework and going through the registry looking for any references that may have been left behind but to no avail.

    Our user naming convention is firstname and first letter of last name, this one particular users account was firstname.lastname noticing this I logged on using my domain account and sure enough my clickonce started working properly.

    So it seems having a full stop in the login username causes the software to fail with this mesage
    The system cannot find the path specified. (Exception from HRESULT: 0x80070003)

    Crazy I know. but true.
  • Provider Model

    Provider Model


    A month ago we had a new architect start at work the guy is crazy about the provider model here is a code project implementation

    http://www.codeproject.com/KB/dotnet/ConfigAndProviderModel.aspx

    So this has got me thinking about enterprise application patterns I might need to use sometime. Fowlers book "Patterns of enterprise application architecture" seems to be the book to read, every time I look up patterns for enterprise coding, this book is usually mentioned, I guess I will have fast track it into my schedule, that is the same schedule that has to fit in all the MCTS and an MSCP that we are all studing for work so we can become a Microsoft gold partner shop.

    Its nuts really how as I learn more the bigger my "todo" and "have to learn about" lists get, it looks like it will be next year before I even get a chance to look at doing a decent case study/ implementation of WPF or WF, I do have a WCF project just around the corner so that will be nice to finally have a play with.

    Thinking about it I have close to 5000 pages of text to read half being books i want to read and the other half Microsoft cerifications, I wish someone could invent a matrix like brain data dump so I dont have to queue nightly tech reading for the next 6 to 12 months depending on my disposition and my daughters sleeping habits. arrrrrgghh
  • Gang of four

    Gang of four

    So it seems if you want to call yourself an OO architect you need to have read a particular book "Elements of Reusable Object-Oriented Software" it's referred to as gang of four because of the four authors that wrote it. From what I understand it was a pretty big move to bring patterns note ably OO ones and give them names and documents them. using these we can communicate our ideas on how to solve problems more effectively, and gives us ideas of how to solve problems we face in our architecture. I started reading it yesterday, after its finished I will start Martin Fowler's "Patterns of Enterprise application architecture. Then Jimmy Nilson's Applying Domain Driven Designs and Patterns". Hopefully then I will have some good ideas to build my next project.
  • From Java to .NET

    From Java to .NET


    From 2002 to 2004 I went to QUT and studied Information Technology majoring in Software Development and Data Comms, during this time I mostly worked with Java, in java we modeled objects off the real world entities we were working with such as Customers, invoices and invoice items, these objects are joined through references between objects and collections. I have recently come to learn that this is what martin Fowler refers to as the domain model well at least a core principle of. In my first job I went to work for a company that wanted a windows client application for weighing and inducting cattle, I had only ever made java web apps and some really simple swing apps, however I needed some better tools for the job at hand being the only IT guy and developer looking after a multi million dollar operation with a couple of hundred staff, (there were only around 25 actually in the office so it want really that impressive an undertaking) I looked around at what applications were available I came across a free offer to try out the Visual studio 2005 beta 2, so I took that up. The IDE was very impressive, I got stuck in and did some walk throughs setting up a data source to a Sql server, and then dragging that data source onto a form, this was pretty cool, but the data there really wasn't exactly what I wanted, there was data in other tables I needed to get at and display, so I grabbed the Id and went off again to the database to grab some more info. This seemed very inefficient to me especially if I had to traverse across multiple tables. (Fowler refers to this as the table model) But it seemed a common way to do things, looking at guidance online and in forums all pointed in the direction that using typed data sets is the way to go. So I built the system this way it was difficult to build, difficult to maintain. I longed for my domain objects again where the logic and validation was neatly contained in an object. This is where my journey began three years ago.

    Just so you know what I am talking about when I refer to Table model and Domain model, Jimmy Nilssons book "Applying Domain Driven Design and Patterns"[2006] he summarized Martin Fowler's take on defining Patterns for Dealing with the main logic:

    Martin Fowler discusses three ways of structuring the main logic in application architecture in his book Patterns of Enterprise Application Architecture [Fowler PoEAA]. Those are Transaction Script, Table Module, and Domain Model.
    Transaction Script is similar to batch programs in that all functionality is described from start till end in a method. Transaction Script is very simple and useful for simple problems, but breaks down when used for dealing with high complexity. Duplication will be hard to avoid. Still, very many very large systems are built this way. Been there, done that, and I've seen the evidence of duplication even though we tried hard to reduce it. It crops up.
    Table Module encapsulates a Recordset [Fowler PoEAA], and then you call methods on the Table Module for getting information about that customer with id 42. To get the name, you call a method and send id 42 as a parameter. The Table Module uses a Recordset internally for answering the request. This certainly has its strengths, especially in environments when you have decent implementations for the Recordset pattern. One problem, though, is that it also has a tendency to introduce duplication between different Table Modules. Another drawback is that you typically can't use polymorphistic solutions to problems because the consumer won't see the object identities at all, only value-based identities. It's a bit like using the relational model instead of the object-oriented model.
    Domain Model instead uses object orientation for describing the model as close to the chosen abstractions of the domain as possible. It shines when dealing with complexity, both because it makes usage of the full power of object orientation possible and because it is easier to be true to the domain. Usage of the Domain Model pattern isn't without problems, of course. A typical one is the steep learning curve for being able to use it effectively.
  • Introduction

    Introduction

    As I work on becoming a solutions architect I thought I might share some insights of someone trying to build a great framework and be able to explain why its done that way, I am reading heaps of books from some of the greats in the industry including Martin Fowler and Rockford Lhotka I am still a fair way from being the solutions architect I want to be but here are my thoughts.
  • If you've gotten this far...

    Thanks for checking out my site, get in contact below if you would like to chat.

    Located

    Brisbane, Australia

    Email

    rmcnichol@gmail.com