NML

The NML Blog

Architecture Modeling at NML

Up to now, NML has followed what everybody in IT would generally recognise as a “sensible” approach to software diagramming. Mostly it consists of drawing...

Building the NML docs site - Part I - Overview...

Part one of a series on redesigning and building our internal documentation site.

Dynamic and Performant Web Typography

In 2012 I gave my first talk on typography on the web. Titled Web Typography Now it documented the evolution of type on the web...

Defining Acceptance Criteria and Test Tasks

The purpose of this article is to document what needs to be in place in order to ensure that:

Practical currying in Javascript

I came across currying years ago when I first tried my hand at learning Haskell. Although I understood it, I could not fathom how it...

3 Ways Our Devs and Testers Win at Collaborating

From my experience working as both a developer and a tester, I’ve noticed that there tends to be a sense of friction between the two...

Practical Azure

It takes time to learn any platform, and Azure is no different. Azure is generally speaking quite easy to use, belying the complexity and hidden...

Azure DevOps is amazing

The only unfortunate thing about Microsoft Azure DevOps is that they chose to use “DevOps” in the name, the latest and greatest buzzword right now....

Peer work reviews

Now that pull requests are part and parcel of most source control systems, it’s never been easier to ensure that clients get the value for...

Managing code risk

One thing that I always try to bring home to the developers at NML is this:

Unit testing at NML

Unit testing as a concept is simple. Write code to test code. It seems though that everybody forgets one fact about coding: It is really...

Fixing a Software Development Life Cycle

As a company, NML organically grew over time from a small group of talented developers working on one or two projects, to a company with...

Unit testing is your job

I 100% accept that what I am about to say in this post will find dissent in the programming community. That is a good thing...

How NML implements inheritance in C#

Inheritance is not the most difficult concept to grasp, and it is a skill all developers in modern OOP languages should have well under control....

NML Learning Channel 5 - Unit Testing

There was no time for a challenge and review, and so this post only has the session recording and presentation.

NML Learning Channel 4 - Dependency Injection

Inversion of control skills

NML Learning Channel 3 - Creation Patterns

Add an implementation for IBadFluentWeatherModelBuilder

NML Learning Channel 2 - Functions, Delegates, Lambdas, Events, Anonymous...

Build a simple console application with the following

NML Learning Channel 1 - OOP

Write a console application, with OOP and SOLID best practices as a priority

NML Learning Channel

I’ve worked hard this year to strengthen our core development skills at NML, and started some initiatives to help our teams grow both their personal...

How to Make BEE Work in Helping Small Businesses in...

Paul Cartmel, the founder of NML, believes that BEE’s best chance of making a difference is through directly assisting small businesses. To this end NML...

Serialization with Newtonsoft JSON

Serialization and deserialization is hard. Very. Serialization to an un-typed, semi-structured format, and deserialization back from it, is even harder, as I recently re-discovered to...

Basics of blockchain

Bitcoin is a consensus network that enables a new payment system and a completely digital currency and is the first decentralized peer-to-peer payment network that...

Gauge Automation Testing

What is Gauge?

The Darker Side of Cloud Computing

Internet piracy is a major problem that costs the software, movie and music industries billions of dollars each year. Many people download copyrighted content because...

An Introduction to Data Mining

As the amount of data we gather and store every day increases, we need to look at how we can fully utilize the knowledge contained...

Let's Test Responsively

With technology changing at a rapid rate, it’s become increasingly important to understand your users. Ultimately the End User impact has the most weight combined...

Inversion of Control: Dependency Injection vs Service Locator

SOLID

UX vs Design: What's the big deal?

The above picture recently landed in my inbox, and it’s worth reflecting upon.

LINQ OrderBy – A quick tip

If you’ve used LINQ you know that it’s very powerful and with a few lines of code you can achieve your goal in a concise...

Fun with flags and bitwise logic

Below we have an EntityType enum which can identify both Natural- and Legal entities.

Exploring Synchronization Contexts in .NET

When working with C#’s async/await keywords, you need to know about the Synchronization Context. I did not understand it at first and it caused many...

Making decisions about decision making

Liam and Emma get home from work on a Friday afternoon. Tired from the week that has passed, neither of them want to make supper,...

Technical Debt – Is it a No-No?

We’ve all been on that project at some point. You know – the one where timelines are ridiculously tight, deadlines are looming, we need to...

List comprehensions are awesome

I’m a C# programmer, so I’ll be the first to admit that the functional programming world makes my head spin, but I find it very...

Three Useful Knockout Extenders

I had to write some KnockoutJS code recently. The requirement was simple:

For versus Foreach

Whenever possible, use for instead of foreach.

Why I estimate upwards

This is what a client asked me recently. I would state, for example, that a task would take 160 hours instead of 154 hours.

The Box Challenge

We skipped a Coding Challenge last week. (Got a little busy with the business of starting awesome new projects with awesome new clients like Virgin...

And The Challenge Champions Are…

A couple of weeks back we initiated the Open Coding Challenge, and got some great submissions in. We followed that up with The Christmas Tree...

The Christmas Tree Challenge

Here’s a fun little coding challenge that most of us (devs) have come across at some point in our lives. It’s not too difficult, and...

On your marks, get set, code!

Here at NML, one of our senior developers (and chief instigators of office humour), Charl, likes to keep the team on its toes with a...

.Net and C#: What you thought you knew but didn't...

As coders, we know things in our area of expertise. Of course, we had better, or else we wouldn’t really be able to build anything...

Motivating and bringing out the best in your employees

Talented people do not want to be told what to do; they want to interact in small intimate groups, they want feedback and challenging projects,...