With the upcoming release of .NET 5 — the release which unifies the .NET runtimes — Microsoft recently announced the features that will be included in C# 9. With the final Preview version of C# 9 being announced today, it’s not far off.
In this article, we’ll take a look at the new features in C# 9, and how they can be used to improve your code. We’ll focus on the major features first, and discuss some of the smaller companion features towards the end. …
Over the past few years, C# has established itself as one of the mainstay languages in modern software development. In Stack Overflow’s 2019 Developer Survey, it ranked as the 7th most popular language among both hobby and professional programmers.
With prominent technologies such as ASP.NET Core and Entity Framework gaining traction in the .NET ecosystem, the language has seen a slight shift towards web and cloud native development. Combined with the continuing stream of improvements to its runtime, C# has firmly established itself as a solid mainstay language to write virtually any application in.
You’d almost forget that only a handful of years ago, C# was primarily used to write desktop or workstation applications, it was tightly coupled to the Windows platform, and had to inter-operate with many of its legacy Win32 components. …
Today, we’re taking a look at a software architectural pattern that has been around for a very long time, but for one reason or another, it isn’t implemented very frequently. Event Sourcing did see a surge in popularity when Microservice architectures became popular, but it never really turned out to be the revolutionary new way to build software many claimed at the time.
There are a number of reasons why it didn’t become a main stay in software architecture, and in this article, we’ll go over some of the strong aspects of Event Sourcing, as well as some of its downsides. …
Kubernetes is rapidly gaining traction as the de facto standard for running large containerized workloads in production. Kubernetes’ takes a different approach to creating and maintaining application components than what we’re used to. Instead of manually configuring our servers to, for example, handle networking and storage, Kubernetes abstracts them in its concepts.
For instance, if we want to expose an application to the internet, we could do so by creating a service. The service could then hook up to a cloud load balancer, which would direct external traffic to a pod within our cluster.
All of these components are defined as YAML files called manifests. For a single application deployment, you’ll usually end up with a handful of manifest files that describe how your application should run within a Kubernetes cluster. …
Over the past few years, Docker has become an immensely popular way of building, shipping, and running applications. Long gone are the days of having to rely on server configuration and other external factors. Just build your application for Docker once — and run it anywhere!
While this is a tremendous leap forward in the way we develop software, it does introduce a handful of new challenges. For starters, networking between Docker containers and hosts is nontrivial. It’s vastly different from the traditional networking methods we’re used to, and it requires a certain degree of skill to get it right.
Storage is another challenge. By default, Docker volumes are bound to their host. …
Chances are, if you’re developing RESTful APIs, you’ve heard of the OpenAPI specification (formerly known as Swagger) before. The OpenAPI Specification defines a standard interface to describe an API, regardless of the language it was written in. This specification can then be used to automatically create documentation based on conventions, or to automatically generate clients for your services.
Modern application landscapes often comprise of many independent services. Each of these services have one or more responsibilities, and have an interface to expose functionality to the outside world. In the case of RESTful services, this functionality is exposed over HTTP. …
Software Developers come in all shapes and sizes. Some have a lot of experience, while others make up for their lack of experience in creativity or sheer perseverance. While the dated and over-used “Rockstar Developer” may not exist, it’s evident that not all developers are created equal.
What exactly constitutes a “great” developer is extremely elusive. It’s not just one thing — it’s a combination of factors, and they may even differ depending on the team or organisation they’re working for. …
Whenever you browse vacancies for software engineers, there’s almost always one universal skill a potential candidate should master. That skill is “Scrum”. Regardless of whether Scrum is actually a skill in the same way carpenting or writing code is, I’ve always found it interesting that the vast majority of companies have made Scrum their de-facto way of working.
The benefits of working agile — which almost always means some implementation of Scrum — are obvious from a managerial perspective. …
When it comes to running production software, you’ll hardly ever find yourself in a situation where you know too much about how your application is performing. More often than not, the opposite is true, and we don’t nearly have enough information available about our application’s performance in the wild.
Fortunately, there are a variety of free, open source tools available that provide time series databases and allow us to accrue and store all sorts of metrics. While individual metrics at an instant in time may not mean much on their own, having access to metrics over an extended period of time allows for in-depth trend analysis. …
When I started my career as a software engineer almost ten years ago, I made a lot of mistakes. Mistakes are great, because you can learn from them. You also make fewer mistakes in the future, so in a way, mistakes are like compound interest — the more of them you make, the more you’ll know in the long run.
I remember landing my first job. I had some experience working on projects of varying size in my own time, both commercially and open source. …
About