Azure Functions vs AWS Lambda vs Google Cloud Functions – JavaScript Scaling Face Off

I had a lot of interesting conversations and feedback following my recent post on scaling a serverless .NET application with Azure Functions and AWS Lambda. A common request was to also include Google Cloud Functions and a common comment was that the runtimes were not the same for .NET Core on AWS Lambda and .NET [...]
Read more

How to Automate your Email Testing

A key part of any identity process involves the sending of emails for things like account verification, forgotten password and security updates. Testing these can present several challenges as there are usually 3rd party services involved (you're unlikely to be including a custom SMTP server and mailbox with your project!) In this first part of [...]
Read more

C# Cloud Application Architecture – Commanding via a Mediator (Part 4)

In the last post we added validation to our solution. This time we’re going to clean up our command handlers so that they are focused more on business / domain concerns, and we’ll be pulling out the infrastructural concerns. After that we’ll add some telemetry to the system to further reinforce some of the benefits of the [...]
Read more

Azure Functions v2 Preview Performance Issues (.NET Core / Standard)

I’ve been spending a little time building out a serverless web application as a small holiday project and as this is just a side project I’ve taken the opportunity to try out the new .NET Core based v2 runtime for Azure Functions and the new tooling and support in Visual Studio 2017. As soon as [...]
Read more

C# Cloud Application Architecture – Commanding via a Mediator (Part 3)

The source code for this post can be found on GitHub: https://github.com/JamesRandall/CommandMessagePatternTutorial/tree/master/Part3 Click here for part 1 In the previous post we simplified our controllers by having them accept commands directly and configured ASP.Net Core so that consumers of our API couldn’t insert data into sensitive properties. However, we’ve not yet set up any validation so, for [...]
Read more

Global Media & Entertainment Hackathon: 40 hackers, 2 days, 1 winner

Hackathons can be great fun, a chance to get creative and to learn new skills. It had been several years since I’d had the opportunity to attend one, so I was excited when I was asked to attend Global Media & Entertainment’s in January. With the focus for the two days around big data, we [...]
Read more

Life as a Developer: The Joys of Learning

One of the joys of working as a developer is the opportunity it presents to continually learn and improve. Whether you choose to specialize and go deep into a topic or set of technologies or work more broadly as a generalist, things are always moving on and there's also scope for refining one’s knowledge of [...]
Read more

Azure Functions – Queue Trigger Scaling (Part 1)

I’m a big fan of the serverless compute model (known as Azure Functions on the Azure platform), but in some ways its greatest strength is also its weakness: the serverless model essentially asks you to run small units of code inside a fully managed environment on a pay-for-what-you-need basis, that in theory will scale infinitely in response [...]
Read more

Dealing with Dynamic Data (almost) without Reflection

Often you need to manipulate a data structure without knowing it's shape at compile time i.e. when authoring classes that expose generic interfaces or dealing with data described by runtime metadata (database schema, JSON files etc.). For example, consider a method that is designed to generate a hashcode from the public properties of an arbitrary [...]
Read more

Functional Programming with Ramda

Immutable. Stateless. Declarative. Pure. Compositions. Functions. These are just a few things that come to one's mind when thinking about functional programming. In this post, I’m going to delve a bit deeper into the functional world and specifically, explore the awesomeness of currying and function compositions. Currying Currying is a way to partially apply arguments [...]
Read more

Amido DevOps Academy

Rhys Bushnell talks about his experience of the Amido DevOps Academy. Interested in a career in DevOps? Check out our join us page for a full list of vacancies.
Read more

Azure Functions vs. AWS Lambda – Scaling Face Off

I’ve been spending a lot of time with the Azure Functions – Microsoft’s implementation of a serverless platform. The idea behind serverless appeals to me massively and seems like the natural next evolution of compute on the cloud with scaling and pricing being, so the premise goes, fully dynamic and consumption based. The use of [...]
Read more

Understanding Hashing Algorithms

Once upon a time there was an IT Industry who collectively developed the practice of storing passwords in plain text in database servers locked away in server rooms and data centres. Every day these usernames and passwords were synchronised between databases to provide a single-sign on capability and an assurance that IT Failure wouldn't be the result [...]
Read more

100th Employee: Q&A with Ross Aubrey-Smith

We sat down with our 100th employee to see how his life has changed since achieving such a prestigious accolade. Amido: Hi Ross, firstly congratulations on reaching the dizzying heights of 100th Employee here at Amido. Now, I have to ask, how did you do it? Ross: …Hard work, determination and patience. Amido is growing rapidly so timing [...]
Read more

Deploying Lambda Functions

AWS Lambda is a ‘serverless’ compute service that runs your code in response to an event. The principal benefit of using such a service is that it automatically manages the compute resources required to complete the function, allowing greater scalability and performance. However, using Lambda functions also reduces costs, as you are only charged when [...]
Read more

C# Cloud Application Architecture: Commanding via a Mediator (Part 2)

Click here for part 1  In the last post we’d converted our traditional layered architecture into one that instead organised itself around business domains and made use of command and mediator patterns to promote a more loosely coupled approach. However, things were still very much a work-in-progress with our controllers still scruffy and our command [...]
Read more

C# Cloud Application Architecture: Commanding via a Mediator (Part 1)

Check out Part 2 here When designing cloud based systems we often think about the benefits of loosely coupling systems, for example through queues and pub/sub mechanisms, but ultimately fall back on more traditional, layered patterns for the application architecture. My aim over a series of posts is to show how combining the Command pattern [...]
Read more

Haller Foundation Hackathon

Last month, as part of the Amido Corporate Social Responsibility programme, we partnered with the Haller Foundation, a charity dedicated to helping Kenyan communities and ecosystems thrive. The resulting hackathon saw Amido employees split into teams with two hours to pull together, and then pitch to a panel of Haller judges, a proposal for a [...]
Read more

One to Watch: Turning the Microscope on Google’s Position in the Cloud Industry

For years the Google Cloud Platform has been considered one of the Big Three cloud computing offerings, whilst at the same time viewed as the laggard, the third-best option behind Amazon Web Services (AWS) and Microsoft. Despite this, Google has been working tirelessly over the past 18 months to position itself as the more open [...]
Read more

AI & the Forthcoming Automotive Revolution

As seen published on ITPro Portal. At WebSummit 2017 there was a recurring theme — self-driving cars. Almost every talk I went to — whether at Centre Stage, SaaS Monster or AutoTech — mentioned self-driving cars in one way or another. The benefits of self-driving cars are enormous: Increased safety: There will be reduced vehicles [...]
Read more