The 4 key elements of conversation

Conversational Interfaces is a term often used to define systems that hold "human-like" conversations, examples include; Chatbots, Voice User Interfaces, and Embodied Conversational Agents. The user interacts with these using text input, voice recognition, and gestures. These types of interfaces are often unable to provide...


Create an F# project in VSCode

Prerequisites Operating system Windows MacOs Linux CLR .Net Framework (Windows) Mono (MacOs, Linux) VSCode With ionide extensions for VSCode (http://ionide.io/) Ionide-FSharp Ionide-FAKE Ionide-Paket Step-by-step instructions Create new directory Move to new directory At the console type Code . or open VSCode and then open the...


Hierarchy of opinion

The word opinion has two distinct meanings according to the Oxford Dictionary: A view or judgement formed about something, not necessarily based on fact or knowledge. A statement of advice by an expert on a professional matter. Synonyms to the word opinion are: belief, judgement,...


How to use 'npm link' to develop sharable components

If you are working on a node project there may come a point where your app has a dependency on another custom module you have created. For example, at one of our clients, my colleagues and I are responsible for a shared component called the...


How Applying Theory of Constraints Helped us Optimise our Code

My team have been working on improving the performance our API, and identified a database call as the cause of some problems. The team suggested three ways to tackle this problem: Scale up the database till it can meet our requirements. Introduce some light-weight caching...


Setting up Scala on Android

Scala can be used to build Android applications, as an alternative to Java or Kotlin. Unlike them, setting up an Android project in Scala with SBT is not straightforward, and can give us some headaches to get it right. To show how this can be...


Approaching Outside-in TDD on Android III

In the previous post, we wrote the acceptance test as a first step and started creating the classes on the entry points of our system. In this post, we will finish implementing the system, and will summarize what we have learnt during the process. Inner...


Visualise interruptions on a LEGO Wall

I had the privilege to attend the Certified Scrum Product Owner course at Skills Matter. During the two-day course, I learnt many techniques to deliver value efficiently, and I am going to share a less widely known tool to help teams visualise interruptions. Keeping track...


Database Testing With tSQLt

Evolutionary Database Development, as coined in Martin Fowler’s book Refactoring Databases, is a concept whereby the design of the database is not done upfront, but instead is done in a way that evolves as the software that is relying on the data store does. In...


What I wish I knew when I started as a software developer

Having worked in the software engineering field for 6 years, I sometimes pause and consider how much I have learned since I started my career. One thing that strikes me is how many things I would want to tell just-out-of-college me if I had the...


Codurance Hiring

We're hiring!

We are hiring Java and .NET Craftspeople in London and Barcelona

Enjoying this article?

Sign up to our monthly newsletter to get content like this in your inbox!

Codurance Logo

Software is our passion.

We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.

Latest Blogs




Contact Us

15 Northburgh Street
London EC1V 0JR

Phone: +44 207 4902967

Carrer Aragó, 208
08011, Barcelona

Phone: +34 689 723 737

Email: hello@codurance.com