In the previous post, I described what a cluster is and how to setup a RabbitMQ cluster on Raspberry Pi with a few Zero W’s. I’ve built a 5 node cluster, with one master and 4 followers. But this is not enough, I’d like my cluster to be accessible from a single location, it doesn’t really matter which node my applications connect to, since I would work only with HA or Quorum queues. For the latter, a new blog post is coming up where I’ll go through exhaustive details on these queues, their pros, cons and usage examples.
Continue readingHow to build a RabbitMQ cluster on Raspberry Pi
In this blog post I will show you how to build and configure a 5-node Raspberry Pi cluster and use RabbitMQ’s clustering capabilities on the above to scale the message broker horizontally.

.NET Core and RabbitMQ part 2 – Communication via AMQP
In part 1 I demonstrated how to create a simple consumer and producer using ASP.NET Core Hosted Services. In this part, I will cover everything that happens under the wraps, the communication between the client and the server, the connection, the message publishing and consuming.

.NET Core and RabbitMQ
Having a system which is composed by distributed applications is a great idea, but a way to communicate with each other is required. A very popular architecture is the so called MDA or Message Driven Architecture, where a system is composed from autonomous components that communicate with each other via messages. The part which facilitates communication is the message broker, effectively decoupling applications, which don’t communicate directly, rather they publish messages to the message broker and the latter is responsible to forward them to interested parties, i.e. other applications.
A message broker that is particularly powerful and interesting is RabbitMQ, one of the most popular open source tools for that job, used worldwide by large enterprises to small startups.
In this post, I’m going to explore RabbitMQ’s basics, by creating a simple RabbitMQ producer and consumer in .NET Core with C#. Then, I will take discussion to how AMQP works at a low-level, using the code example demonstrated.

Babel F# pipeline operator
Introduction
Writing readable and declarative code in JavaScript, how nice it would be! 😆
I know, readable and declarative don’t go in the same sentence when talking about JavaScript, but should it be always like this? The community has been looking for ways to improve these problems with the language for years.
Since Babel 7.0 there have been a few proposals implemented that lean towards the readable and declarative JavaScript goal. I’m sure you have heard about the pipeline operator, but if you haven’t then it’s fine, this post will guide you through. This operator is syntactic sugar with the intention to make our code really sweet (pun intended). In this post I’m going to discuss one of the competing proposals, the F# variant.

To box (and unbox)? Or better not to?
Introduction
Working with types sometimes can be very tricky for a developer, regardless of the employed programming language. Surely, many professionals have a story or two to share on this. Types can be tricky beasts and it’s not uncommon to be accompanied with few surprises and often sinister quirks which can cause all kinds of trouble. In this post, I want to discuss about boxing & unboxing value types, the performance penalty of this technique and ways to avoid this altogether when applicable.

Learning data structures – Stack in depth in C#
What is a stack and how it works? What is an Abstract data type and how it’s related with the stack? In this post we’ll explore the stack data structure, I’ll go through the theory behind, explain why stacks are important programming tools, create a custom implementation of a stack with an array from scratch and finally, go through some interesting examples. By the end of this post I do hope that you’ll have a very good understanding of how a stack works under the hood and how you can use it to tackle day-to-day programming problems.

Build a secure Angular client using ASP.NET Core and OAuth
What is the resource owner password credentials grant? How can I secure my Angular client using OAuth and JWT bearer tokens? In this post I will focus on the resource owner password credentials grant, a different kind of credential flow supported by the OAuth protocol, and how it can be used to secure certain resources on an Angular application. Similarly to previous post, I will create the authorization server from scratch, then the resource server, a simple ASP.NET Core RESTful API, and finally the Angular 6 application, with all the bits and pieces required to prevent unauthorized access.

How the pomodoro technique has changed the way I work
For many years I thought that working hard was the way to go. Just make some TO-DO lists, pick work items in order, carry the task on and move to the next. This was my style and I thought this was the proper way. However this proved to be not that great plan, as I had a hard time tracking my progress, maintain focus on tasks at hand, while burnouts occurred more often than usual. On top of that, health issues risen to make things worse, degrading my focus even more. There were times that I was at terrible shape and my performance at work and at personal time decreased, spanning for periods of 3-4 weeks. So working that hard was not the way to go, apparently. Until I found out about the Pomodoro technique.
This is my story about the Pomodoro technique and how it helped me.

ASP.NET Core API authentication using JWT bearer tokens
What is OAuth 2.0 and how its flows can be applied for securing my applications? What does a token do and how it is useful in securing API’s? Is there any way to implement all these nice and easy in ASP.NET Core? In this post I will cover these topics, by first discussing about why token based security is so successful in security scenarios, and the OAuth protocol play in this. We’ll see more closely one of OAuth flows, the client credentials flow and implement it to secure an ASP.NET Web API application.