Skip to content
Carmel Eve - Software Engineer I

Carmel is the third person to graduate from our Apprenticeship Scheme.

Meet Carmel

Carmel is a software engineer and LinkedIn Learning instructor. She worked at endjin from 2016 to 2021, focused on delivering cloud-first solutions to a variety of problems. These included highly performant serverless architectures, web applications, reporting and insight pipelines, and data analytics engines. After a three-year career break spent travelling around the world, she rejoined endjin in 2024.

Carmel has written many blog posts covering a huge range of topics, including deconstructing Rx operators, agile estimation and planning and mental well-being and managing remote working.

Carmel has released two courses on LinkedIn Learning - one on the Az-204 exam (developing solutions for Microsoft Azure) and one on Azure Data Lake. She has also spoken at NDC, APISpecs, and SQLBits, covering a range of topics from reactive big-data processing to secure Azure architectures.

She is passionate about diversity and inclusivity in tech. She spent two years as a STEM ambassador in her local community and taking part in a local mentorship scheme. Through this work she hopes to be a part of positive change in the industry.

Carmel won "Apprentice Engineer of the Year" at the Computing Rising Star Awards 2019.

View Blogs View Talks
There's something wrong with the Pandas API on Spark

There's something wrong with the Pandas API on Spark

Carmel Eve

Fix the following issues: Errors converting large datasets to pandas, pandas for Spark is very slow, and pandas for Spark column reduction doesn't reduce data.
A week in the life of a (graduate) endjineer

A week in the life of a (graduate) endjineer

Carmel Eve

During our last few months of recruitment, one of the main questions that we were asked during this process is 'what does your average day look like'. The extremely varied work at endjin made this quite a tricky question to answer, so we expanded the question to be slightly broader - 'what does your average week look like?'
How to enable intra-business communication using user stories, BDD specs and a ubiquitous language

How to enable intra-business communication using user stories, BDD specs and a ubiquitous language

Carmel Eve

Endjin uses user stories, BDD specs, and a ubiquitous language to bridge the communication gap between stakeholders and tech teams.
How to deploy a Vue app to Azure Static Web Apps using Azure DevOps and YAML

How to deploy a Vue app to Azure Static Web Apps using Azure DevOps and YAML

Carmel Eve

Deploy a VueJS app on Azure Static Web Apps using a YAML-defined Azure DevOps pipeline with Microsoft's hosting solution for static web applications.
New LinkedIn Learning Course: AZ-204 - Developing Solutions for Microsoft Azure

New LinkedIn Learning Course: AZ-204 - Developing Solutions for Microsoft Azure

Carmel Eve

Carmel has recently released an exam tips course on preparing for the AZ-204 exam: Developing solutions for Microsoft Azure! The course gives an overview of the syllabus, some tips on what you'll need to know for each section, and some examples of common question types.
How to use Azure Synapse SQL Serverless to connect Data Lake and Power BI

How to use Azure Synapse SQL Serverless to connect Data Lake and Power BI

Carmel Eve

TL;DR - Using Azure Synapse SQL Serverless, you can query Azure Data Lake and populate Power BI reports across multiple workspaces.
How to use Power BI deployment pipelines to enable DevOps for analytics

How to use Power BI deployment pipelines to enable DevOps for analytics

Carmel Eve

Power BI deployment pipelines manage collaboration, change management, and testing of reports, enabling DevOps for analytics solutions.
Design patterns in C# - The Proxy Pattern

Design patterns in C# - The Proxy Pattern

Carmel Eve

Explore the proxy pattern in this blog post, a design pattern used for controlling access to underlying objects and remote server communication.
Design patterns in C# - The Facade Pattern

Design patterns in C# - The Facade Pattern

Carmel Eve

This blog is part of a series around design patterns. This post focuses on the facade pattern. The facade pattern provides an interface into a complex system, in order to simplify access to the functionality.
Design patterns in C# - The Decorator Pattern

Design patterns in C# - The Decorator Pattern

Carmel Eve

Investigate the decorator pattern in this blog post, a design pattern used to dynamically enhance object functionality.
How to update your Microsoft Authenticator App for a work/school account

How to update your Microsoft Authenticator App for a work/school account

Carmel Eve

This post quickly runs through the steps for setting up a new Microsoft Authenticator App for a work or school account.
Design patterns in C# - The Adapter Pattern

Design patterns in C# - The Adapter Pattern

Carmel Eve

Explore the adapter pattern in this design patterns series, enabling use of incompatible classes within your solution's interfaces/architecture.
Where are you going wrong when choosing to buy, not build?

Where are you going wrong when choosing to buy, not build?

Carmel Eve

Often when building software we need to outsource part of the solution to a third party. Common examples include authentication, payment, and email, but there are many others. When first designing a solution the decision around which provider to use can be difficult to tackle. At endjin we have developed a system for answering the question "which provider should I use?".
A simple pattern for using System.CommandLine with dependency injection

A simple pattern for using System.CommandLine with dependency injection

Carmel Eve

Explore building a command line tool with System.CommandLine packages, using dependency injection for quick and easy initialization.
How to fully initialize types in their constructor with C# nullable using the async factory pattern

How to fully initialize types in their constructor with C# nullable using the async factory pattern

Carmel Eve

Explore a pattern for async initialization, enabling readonly object construction & leveraging nullable references for fully instantiated classes.
How to prepare for Exam AZ-204: Developing Solutions for Microsoft Azure

How to prepare for Exam AZ-204: Developing Solutions for Microsoft Azure

Carmel Eve

Carmel recently passed the 'Az-204 - Developing Solutions for Microsoft Azure' exam. Here she shares how she went about preparing!
Quick tip – Removing totals from a matrix in Power BI

Quick tip – Removing totals from a matrix in Power BI

Carmel Eve

Here is a quick tip on how to remove column summarisation from a matrix in Power BI!
Quick tip – Updating the sort order of a column in Power BI (avoiding circular references)

Quick tip – Updating the sort order of a column in Power BI (avoiding circular references)

Carmel Eve

Here's a quick tip on how to alter the sort order of a column in Power BI!
Why you should apply for an apprenticeship at endjin...

Why you should apply for an apprenticeship at endjin...

Carmel Eve

At endjin we solve complex problems which cover a huge range of cloud services, data science techniques and industries. The work we do is massively varied and in this there is a huge opportunity. Hear about Carmel's experience in completing her apprenticeship here at endjin, and why you should consider our apprenticeship scheme!
Maintaining communication and relationships within a remote team

Maintaining communication and relationships within a remote team

Carmel Eve

With a lot of people all over the world suddenly finding themselves working remotely, I thought I’d share some thoughts on what I think is one of the most challenging parts of a company going fully remote: maintaining relationships.
How can I improve my data model in Power BI?

How can I improve my data model in Power BI?

Carmel Eve

Explore how to configure model properties in Power BI for enhanced discoverability and improved data visualisation support.
What should I do next? - How to choose accomplishable tasks

What should I do next? - How to choose accomplishable tasks

Carmel Eve

If, like me, you often find yourself unable to decide how to spend your time productively, it might be worth giving this post a read! Here Carmel runs through some of the things to consider when deciding which task to tackle next. These tasks can be anything from "send out finance report", to "call mum", to "decide where to go on holiday next year". We have a huge amount of options when deciding how to spend our time, so here are some strategies for whittling down that choice!
How does Azure Key Vault help me secure my data?

How does Azure Key Vault help me secure my data?

Carmel Eve

Azure Key Vault safeguards encryption keys & secrets for secure data access. It offers isolated storage, AD integration, RBAC, and access policies.
Learning DAX and Power BI – CALCULATE

Learning DAX and Power BI – CALCULATE

Carmel Eve

This is the final blog in a series about DAX and Power BI. This post focuses on the CALCULATE function, which is a unique function in DAX. The CALCULATE function has the ability to alter filter contexts, and therefore can be used to enable extremely powerful and complex processing. This post covers some of the most common scenarios for using CALCULATE, and some of the gotchas in the way in which these different features interact!
Data modelling with Power BI - Loading and shaping data

Data modelling with Power BI - Loading and shaping data

Carmel Eve

Explore data modelling in Power BI, including loading, shaping, and enhancing data. Learn key steps and practical examples.
Handling upheaval and navigating uncertain times

Handling upheaval and navigating uncertain times

Carmel Eve

I doubt that it's escaped anyone's notice that we have suddenly been thrown into a world which is pretty unrecognisable from that of even a few weeks ago. And I don't think any of us can claim to be managine it well all of the time, but in this post Carmel runs through some of the strategies and coping mechanisms which have helped her adjust.
Learning DAX and Power BI – Related Tables and Relationships

Learning DAX and Power BI – Related Tables and Relationships

Carmel Eve

This is the sixth blog in a series about DAX and Power BI. This post focuses on relationships and related tables. These relationships allow us to build up intricate and powerful models using a combination of sources and tables. The use of relationships in DAX powers many of the features around slicing and page filtering of reports.
Recording of Azure Oxford talk on combatting illegal fishing with Azure (for less than £10/month)

Recording of Azure Oxford talk on combatting illegal fishing with Azure (for less than £10/month)

Carmel Eve

Jess and Carmel recently gave a talk at Azure Oxford on Combatting illegal fishing with Machine Learning and Azure - for less than £10 / month. The recording of that talk is now available for viewing!The talk focuses on the recent work we completed with OceanMind. They run through how to construct a cloud-first architecture based on serverless and data analytics technologies and explore the important principles and challenges in designing this kind of solution. Finally, we see how the architecture we designed through this process not only provides all the benefits of the cloud (reliability, scalability, security), but because of the pay-as-you-go compute model, has a compute cost that we could barely believe!
Effectively managing mental capacity

Effectively managing mental capacity

Carmel Eve

We are currently living in extremely uncertain times. As we try to process these changes, many of us have found that we do not have the same mental capacity we once did. Some of that might be due to extra constraints on our time, but a lot of our brain-power is also spent trying to process the huge worldwide changes which are currently taking place. In this blog, Carmel talks about some techniques for managing that mental capacity, and how those apply in an ever-changing world.
Learning DAX and Power BI – Table Functions

Learning DAX and Power BI – Table Functions

Carmel Eve

This is the fifth blog in a series on DAX and Power BI. This post focuses on table functions. In DAX, table functions return a table which can then be used for future processing. This can be useful if, for example, you want to perform an operation over a filtered dataset. Table functions, like most functions in DAX, operate under the filter context in which they are applied.
Building a proximity detection pipeline

Building a proximity detection pipeline

Carmel Eve

Endjin's blog post details their project with OceanMind, using a serverless architecture and machine learning to detect illegal fishing.
Learning DAX and Power BI - Aggregators

Learning DAX and Power BI - Aggregators

Carmel Eve

This is the fourth blog in a series about DAX and Power BI. We have so far covered filter and row contexts, and the difference between calculated columns and measures. This post focuses on aggregators. We cover the limitations of the classic aggregators, and demonstrate the power of the iterative versions. We also highlight some of the less intuitive features around how these functions interact with both filter and row contexts.
Learning DAX and Power BI – Calculated Columns and Measures

Learning DAX and Power BI – Calculated Columns and Measures

Carmel Eve

Dive into DAX and Power BI in our blog. Learn about calculated columns, measures, and their use in complex visuals.
Optimising C# for a serverless environment

Optimising C# for a serverless environment

Carmel Eve

Tour our OceanMind project using Azure Functions for real-time marine telemetry processing. Learn optimization techniques for serverless environments.
An experimental approach to software development

An experimental approach to software development

Carmel Eve

Endjin applies scientific experimentation to software development for validated solutions, using hypotheses for confident designs.
Learning DAX and Power BI – Row Contexts

Learning DAX and Power BI – Row Contexts

Carmel Eve

Here is the second blog in a series around learning DAX and Power BI. This post focuses on row contexts, which are used when iterating over the rows of a table when, for example, evaluating a calculated column. Row contexts along with filter contexts underpin the basis of the DAX language. Once you understand this underlying theory it is purely a case of learning the syntax for the different operations which are built on top of it.
Learning DAX and Power BI - Filter Contexts

Learning DAX and Power BI - Filter Contexts

Carmel Eve

Explore the basics of DAX and Power BI in this series. This first post focuses on filter contexts, a key concept for effective DAX usage.
Five quick tips for public speaking

Five quick tips for public speaking

Carmel Eve

We all get nervous in the run up to a public speaking event. However, there are things we can do which help alleviate some of the pressure. Here are 5 quick tips around preparing for a talk!
Mental health and managing the challenges of remote working

Mental health and managing the challenges of remote working

Carmel Eve

Remote working has many benefits. It allows us a huge amount of freedom, especially around managing our personal and professional lives. But alongside these benefits it also brings challenges. When you combine these challenges with certain aspects of mental health it can sometimes be difficult to manage. However, there are also ways in which remote work can enable us to control our environments in a way that would be extremely difficult if working from a conventional office. We have been a fully remote company now for over two years, and in this post Carmel shares some of her experiences of managing mental health whilst remote working.
NDC London - A dive into responsible and inclusive technology

NDC London - A dive into responsible and inclusive technology

Carmel Eve

NDC London day 1 was mainly focused around the responsibility we all face when developing new technology. As developers we cannot absolve ourselves of the consequences of not considering diversity and inclusivity when designing our solutions.
Careers in software development - different paths into the industry

Careers in software development - different paths into the industry

Carmel Eve

There are many different paths into the tech industry, Carmel has been speaking at some local schools about joining the industry from a scientific background. In this post she discusses the crucial tools which science gives you which can help you succeed in tech!
Building a secure data solution using Azure Data Lake Store (Gen2)

Building a secure data solution using Azure Data Lake Store (Gen2)

Carmel Eve

In this blog we discuss building a secure data solution using Azure Data Lake. Data Lake has many features which enable fine grained security and data separation. It is also built on Azure Storage which enables us to take advantage of all of those features and means that ADLS is still a cost effective storage option!This post runs through some of the great features of ADLS and runs through an example of how we build our solutions using this technology!

Speaking at NDC London: Combatting illegal fishing with Machine Learning and Azure

Carmel Eve

In January 2020, Carmel is speaking about creating high performance geospatial algorithms in C# which can detect suspicious vessel activity, which is used to help alert law enforcement to illegal fishing. The input data is fed from Azure Data Lake Storage Gen 2, and converted into data projections optimised for high-performance computation. This code is then hosted in Azure Functions for cheap, consumption based processing.
How Azure DevTestLabs is helping me climb Everest

How Azure DevTestLabs is helping me climb Everest

Carmel Eve

Remote working allows us to work from anywhere we want. This brings a huge amount of flexibility in freedom, however we do need the help of a working laptop! When Carmel's laptop gave in just before a trip, she used Azure DevTestLabs to allow her to continue to work using a 10 year old Mac that probably couldn't wouldn't have been up to the task alone...
Increasing performance via low memory allocation in C#

Increasing performance via low memory allocation in C#

Carmel Eve

Explore techniques for high-performance, low-allocation code in Azure Functions using C#, including data streaming, list preallocation, and Span<T>.
Demystifying machine learning using neural networks

Demystifying machine learning using neural networks

Carmel Eve

Machine learning often seems like a black box. This post walks through what's actually happening under the covers, in an attempt to de-mystify the process!Neural networks are built up of neurons. In a shallow neural network we have an input layer, a "hidden" layer of neurons, and an output layer. For deep learning, there is simply more hidden layers which allows for combining neuron's inputs and outputs to build up a more detailed picture.If you have an interest in Machine Learning and what is really happening, definitely give this a read (WARNING: Some algebra ahead...)!
Design patterns in C# - The Composite Pattern

Design patterns in C# - The Composite Pattern

Carmel Eve

This blog is part of a series around design patterns. This post focuses on the composite pattern. The composite pattern is often used in situations where you want to me able to treat groups and individuals in the same way during processing.
Secure Azure Function-to-Function authentication without the need for credentials

Secure Azure Function-to-Function authentication without the need for credentials

Carmel Eve

Explore how to build secure solutions on Azure using Azure Functions and Managed Identities, eliminating the need for storing credentials.
Design patterns in C# - The Builder Pattern

Design patterns in C# - The Builder Pattern

Carmel Eve

Traverse the builder pattern in this design patterns series, simplifying complex object creation and separating construction from usage.
Reactive data processing and a huge wealth of learning - A year as an Apprentice II at endjin

Reactive data processing and a huge wealth of learning - A year as an Apprentice II at endjin

Carmel Eve

Here is a blog written by our apprentice Carmel after her second year of the apprenticeship. We think it demonstrates the huge variety of things we get to work on here at endjin, and highlights the best of the blogs that Carmel produced through during the year - of which there were a lot!If you think an apprenticeship with us is something which might interest you - send a CV through to hello@endjin.com!
Design Patterns in C# - Factory Method and Abstract Factory

Design Patterns in C# - Factory Method and Abstract Factory

Carmel Eve

Investigate the differences between factory method and abstract factory design patterns in this first blog of our series.
Using Databricks Notebooks to run an ETL process

Using Databricks Notebooks to run an ETL process

Carmel Eve

Explore data analysis & ETL with Databricks Notebooks on Azure. Utilize Spark's unified analytics engine for big data & ML, and integrate with ADF pipelines.
Incorporating software architecture into agile projects

Incorporating software architecture into agile projects

Carmel Eve

Software architecture and Agile project planning are often seen to be at odds. However, here at endjin we think that the way in which they intersect solves a lot of the common issues surrounding architecture. The key to successful architecture is constantly keeping the drivers in mind and having a tight communication loop as the architecture is implemented. These concepts are ones which are key to agile project management, and the combination of these two disciplines can be extremely powerful and successful when applied correctly.
Exploring Azure Data Factory - Mapping Data Flows

Exploring Azure Data Factory - Mapping Data Flows

Carmel Eve

Mapping Data Flows are a relatively new feature of ADF. They allow you to visually build up complex data transformation sequences. This can aid in the streamlining of data manipulation and ETL processes, without the need to write any code! This post gives a brief introduction to the technology, and what this could enable!
A code review with NDepend Part 2: The initial review

A code review with NDepend Part 2: The initial review

Carmel Eve

At endjin we have a high quality bar when it comes to our code. As part of this we carry out regular code reviews. One of the tools we have used for these code reviews is NDepend. This is the second in a blog series written as we carried out that process. This post focuses on the insight you can quickly gain just by glancing at the NDepend UI.
A code review with NDepend Part 1: Quality metrics

A code review with NDepend Part 1: Quality metrics

Carmel Eve

At endjin we have a high quality bar when it comes to our code. As part of this we carry out regular code reviews. One of the tools we have used for these code reviews is NDepend. This is the first in a blog series written as we carried out that process. This post runs through the different metrics used by NDepend, and the reasons that each of these can be an indication of code quality.
A beginner's guide to agile estimation and planning

A beginner's guide to agile estimation and planning

Carmel Eve

Discover agile estimation principles & planning methods for project success. Dive into uncertainty, valuable estimates & agile delivery processes.
11 cheers for binary (And 3 for hexadecimal)!

11 cheers for binary (And 3 for hexadecimal)!

Carmel Eve

Explore the basics of binary and hexadecimal numbers and their role in daily computing.
Rx operators deep dive Part 5 – Thank you for joining me on this journey

Rx operators deep dive Part 5 – Thank you for joining me on this journey

Carmel Eve

This is the final blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the JOIN operator.
Avoiding deployment locking errors by running Web and Functions Apps from packages

Avoiding deployment locking errors by running Web and Functions Apps from packages

Carmel Eve

Fix DLL locking errors in Azure Function deployment by using "deploy from package" option. This runs the function from a package file, resolving issues.
Rx operators deep dive Part 4: A window into scheduling in Rx

Rx operators deep dive Part 4: A window into scheduling in Rx

Carmel Eve

Fourth in a series, this blog post explores the inner workings of the Rx WINDOW operator for better Rx understanding.
Rx operators deep dive Part 3: Re-grouping our thoughts

Rx operators deep dive Part 3: Re-grouping our thoughts

Carmel Eve

This is the third blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the GROUP operator.
Managing applications using Azure AD, service principals and managed identities: A permissions story

Managing applications using Azure AD, service principals and managed identities: A permissions story

Carmel Eve

Explore Azure Active Directory's key concepts: AAD apps, service principles, managed identities, with setup examples.
Rx operators deep dive part 2: Slowly aggregating knowledge

Rx operators deep dive part 2: Slowly aggregating knowledge

Carmel Eve

This is the second blog in a series which delves into how the Rx operators work under the covers. This series aims to provide a greater understanding of Rx and its operators. This post focuses on the AGGREGATE operator.
Rx operators deep dive part 1: Where observables meet LINQ

Rx operators deep dive part 1: Where observables meet LINQ

Carmel Eve

Explore the workings of Rx operators in this series. This first post delves into the WHERE operator for a deeper Rx understanding.
Understanding Rx: Making the interfaces, subscribing and other Subject<T>s finally click

Understanding Rx: Making the interfaces, subscribing and other Subject<T>s finally click

Carmel Eve

Explore endjin's introduction to reactive data processing, covering Rx.NET's main classes and simplifying this complex .NET area for easy understanding.
Overflowing with dataflow part 2: TPL Dataflow

Overflowing with dataflow part 2: TPL Dataflow

Carmel Eve

Explore TPL dataflow in this second blog of our series. Learn how this .NET library simplifies parallel data processing with a pipeline model.
Overflowing with dataflow part 1: An overview

Overflowing with dataflow part 1: An overview

Carmel Eve

This is the first blog in a series about dataflow. The series focuses on TPL dataflow, but this post gives an overview of dataflow as a whole.The crucial thing to understand when using dataflow is that the data is in control. In most conventional programming languages, the programmer determines how and when the code will run. In dataflow, it is the data that drives how the program executes. The movement of data controls the flow of the program.
Women in technology: Driving positive change in the industry

Women in technology: Driving positive change in the industry

Carmel Eve

Anyone can be a role model. You don't have to be a veteran in the industry to inspire someone. There are constantly people coming through the pipeline behind you, and in that there is an opportunity to make a real difference.What can you do to drive positive change and help combat the gender imbalance in the tech industry?
Whose package is it anyway? Why it's important to minimise dependencies in your solutions...

Whose package is it anyway? Why it's important to minimise dependencies in your solutions...

Carmel Eve

This is a post about the importance of reducing your dependencies as much as possible when designing solutions.If as much as possible is under your own control, there is far less room for synchronization errors and update conflicts.
A tentative step into the worlds of asymmetric encryption and Blockchain

A tentative step into the worlds of asymmetric encryption and Blockchain

Carmel Eve

Here is a quick dive into encryption and blockchain. This post goes into the ideas behind hashing, and how these translate into encrypted messaging techniques. It also delves blockchain and how signing and versioning allow for consistent and immutable transactions. Definitely worth a read if you're interested in these concepts!
OneNote - helping me to find my feet in research

OneNote - helping me to find my feet in research

Carmel Eve

Everyone learns differently. In this post Carmel describes how OneNote can be used to aid and enhance research. As an avid note taker and blogger, she highlights how the ability to Ctrl-F into written text in OneNote has greatly improved her productivity!
Garbage collection, a memorandum on memory in C#

Garbage collection, a memorandum on memory in C#

Carmel Eve

Explore the process of .NET garbage collection and understand the behind-the-scenes of writing C# code in this insightful post.
From collection vans to collection interfaces - my first week back at endjin

From collection vans to collection interfaces - my first week back at endjin

Carmel Eve

Here is a post that Carmel wrote not long after she started back at endjin. Time has really flown since then, but it provides some great insight into how our apprenticeships work!If an apprenticeship and endjin sounds like something that might be of interest to you, send your CV over to hello@endjin.com!
My internship at endjin – New Proposition Development, Programming, and a very long list of acronyms

My internship at endjin – New Proposition Development, Programming, and a very long list of acronyms

Carmel Eve

During her two month internship we tried to expose her to as many different aspects of endjin as possible; from New Proposition Development, marketing, partner & business development activities, as well as our software engineering processes and the Microsoft Azure ecosystem.