2016-08-29

Cutting Edge - Beyond CRUD: Commands, Events and Bus

Cutting Edge - Beyond CRUD: Commands, Events and Bus: IC506997.jpg

In a simple CRUD system, each business event is pertinent to a single aggregate and only rarely the same event touches on multiple aggregates. However, when this happens, and aggregates and events are too numerous, the complexity of the resulting software grows considerably.

2016-06-13

Essential .NET - Dependency Injection with .NET Core

Essential .NET - Dependency Injection with .NET Core: Mark Michaelis explores the dependency injection (DI) capabilities of .NET Core, and shows why the simple and lightweight implemenatation provides a great way to for developers new to the technology to get started.

Code Coverage Isn't Only for Unit Tests

Code Coverage Isn't Only for Unit Tests:

unit-tests-code.png

What is Code (or Test) Coverage?

Code coverage (or test coverage) shows which lines of the code were (or were not) being executed by the tests. It is also a metric which helps you to find out the percentage of your covered (executed) code by the tests. E.g.: It tells you that your codebase consists of 10 lines, 8 lines were being executed by your tests, so your coverage is 80%. (It tells you nothing about the quality of your software or how good your tests are.)

If you want to read more about code coverage, check these links:

Two Approaches to Test Automation Architectures

Two Approaches to Test Automation Architectures:

Flow-Picture-250x300.jpg

I’ve yet to see two development environments that are alike. But even if there is no cookie cutter approach to software delivery, there are standard approaches, and methodologies that are consistent throughout modern software development and that frame nearly all environments.

Because there is a big move in software testing to go from purely manual testing (a non-technical process) to a fully automated deeply technical one, how QA processes are set up, and how it fits into the overall delivery chain is very important. Let’s take a look at the two most common architectures for test automation, and why they may or may not be the best approach.

TDD Will Speed You Up, Not Slow You Down

TDD Will Speed You Up, Not Slow You Down:

I was recently having a discussion with fellow Zone Leader Duncan Brown about TDD. He dropped this line:

"TDD rules — when you don't have a brand new product with a stupid deadline to work against"

Four C# Code Analyzers That Are Worth Your Time

Four C# Code Analyzers That Are Worth Your Time:

AddNullCheckCodeRefactoring.png

Four C# code analyzers that are worth your time

Four C# Code Analyzers That Are Worth Your Time

Four C# Code Analyzers That Are Worth Your Time:

AddNullCheckCodeRefactoring.png

Four C# code analyzers that are worth your time

An Introduction to Inform and Natural Language Programming

An Introduction to Inform and Natural Language Programming:

If you're reading this, there's a pretty good chance that you have written a program/script/class/method/whatever involving the Fibonacci sequence. It's a great way to logic through a new language (after you've Hello Worlded, right?), and often it's a good intro into recursion. So this code likely won't be too unfamiliar to you:

public class fib { 
 
    public static void main(String[] args) { 
        Scanner scan = new Scanner (System.in); 
        System.out.println("Enter a number: "); 
        int num = scan.nextInt(); 
        System.out.println(calculate(num)); 
    } 
 
    private static int calculate(int n){ 
        if (n <= 1) 
            return 1; 
        else 
            return calculate(n - 1) + calculate(n - 2); 
    } 
}
We all know that Java is fairly verbose. So yeah, this isn't the shortest program ever (especially with the included boilerplate). But it's recursive and takes an input and does what we need it to do.

Logging for Continuous Integration

Logging for Continuous Integration:

logging-for-continuous-integrationIf you look at the title of this post, you’re probably thinking to yourself, “huh, that’s never really come up.”  Of course, it’s possible that you’re not. But, in my travels as a consultant helping dev teams with practice and gap analysis, I’ve never had anyone ask me, “what do you recommend in terms of a logging solution for continuous integration?”

But hey, this is an easily solved problem, right?  After all, continuous integration means Jenkins, and Jenkins has an application log.  Perhaps that’s why no one is asking about it!  Now, all that’s left is to sit back and bask in the glow of every compiler warning your application has ever generated since the dawn of time.

4 Challenges You Need to Address with Microservices Adoption

4 Challenges You Need to Address with Microservices Adoption:

In the last few weeks, we’ve introduced the concept of microservices and its role as a business initiative and how to migrate your organization towards a microservices model. Transitioning to microservices creates significant challenges for organizations. This week, I’ll delve into some of the obstacles you might face and the ultimate benefits of your efforts.

Microservices Architecture

Microservices architecture is much more complex than legacy systems. In turn, the environment becomes more complicated because teams have to manage and support many moving parts. Some of the things you must be concerned about include:

The JavaScript, EcmaScript and the History

The JavaScript, EcmaScript and the History: This article is all about the Javascript ,ECMAScript, basic terminology and release history

Angular Router

Angular Router:

tumblr_o8ilfeqpSc1qc0howo8_250.png

Managing state transitions is one of the hardest parts of building applications. This is especially true on the web, where you also need to ensure that the state is reflected in the URL. In addition, we often want to split applications into multiple bundles and load them on demand. Doing this transparently isn’t trivial.

The Angular router is designed to solve these problems. Using the router, you can declaratively specify application state, manage state transitions while taking care of the URL, and load components on demand. In this article I will discuss the API of the router, as well as the mental model and the design principles behind it.