Principles of Aspect Oriented Programming in C#

01 June 2015

Aspect Oriented Programming (AOP) has been around for a long time. It is a powerful concept that allows for the separation of “crosscutting” concerns that has always been widely misunderstood by developers and managers alike in my experience. This confusion has largely been due to the mismatch between AOP theory, terminology, and implementation. Recently, I have seen a renewed interest in it, and I hope this article can help to demystify some of the confusions.

Read more...

Mitigating Incomplete Dependencies

09 September 2014

As a consultant, I frequently encounter projects where assumed dependencies are not in place before the beginning of the project. Sometimes, these items might not even be available for months after I am expected to finish and leave. This is especial true of anything related to data (e.g. data services, data access libraries, databases, and sample data). But, it could also be related to non-functional requirements such as authentication and logging frameworks. Despite this, even when estimates were based on these items being ready and the customer knowingly signed off on those assumptions, customers have a hard time understanding the impact to the project schedule and will often argue not to move the target release date. I am not advocating that your team should give in to these unreasonable demands. In fact, I would argue the opposite. However, whether you are waiting on dependencies that should have been completed or had planned to work in parallel from the start, I do recommend architecting your application in such a way as to minimize the damage caused by incomplete dependencies.

Read more...

Windows 8 Development - C# Components for JavaScript Applications

05 June 2014

Many articles will tell you that you cannot have a C# back end for an HTML5 presentation layer. While this is true on the surface because you cannot mix them in a project, it is still possible to mix-in C# (or VB.NET if you are a verbose kind of person) as a “Windows Runtime Component.” Since I came into my first Windows 8 project with an ASP.NET MVC mindset, this is the route my team and I took. In retrospect, this might not have been the best idea because of the many limitations and oddities that added complexity. Depending on your team's skill-set, this may or may not be an option for you. However, you should consider the following.

Read more...

Windows 8 Development - Things to Know about JavaScript

03 June 2014

For my client's Windows 8.1 project, the team was happy to see that Microsoft offers the ability to write the application in JavaScript. This is because we are primarily web developers, and we could bring a lot of our current skills directly into the project. Other than the code that is considered “unsafe” (which does bring a lot of runtime-only issues), there does not seem to be any restrictions on what you can do in your application. You still have complete access to the .NET (WinRT) framework in the same way that a C# project has. For us, the JavaScript project was actually even more beneficial to us than C# because we didn't have any expectations around open source libraries that we would later find out are not compatibility with WinRT.

Read more...

Windows 8 Development - Environment

02 June 2014

For those of you that are not fans of Windows 8 (this includes me), this will be disappointing. But, you cannot use Windows7 to develop Windows Store Applications. This led me to run Ubuntu as my primary OS and run Windows 8.1 via VirtualBox whenever I work on Windows Store applications. I have found the transition from Windows 7 to Ubuntu to be a much smoother transition for me personally than being frustrated over waiting for Windows 8 to respond. This setup is working well for me and I can quickly switch between Windows 7 and 8.1 while keeping all of my browser tabs and documents open in Ubuntu. Obviously, this will not work in companies were the IT department has restrictions. But, it is worth mentioning.

Read more...