Building a set of tools for managing a hosting platform

At Ragnarson we have unique experience in building Platform as a Service infrastructures for applications. For more than one year, I have worked on a private solution for a big player from Asia. We made a platform using several tools and services. Here is the list of some of them:

  • Workflow (previously Deis) for managing applications,
  • Amazon Web Services as instances provider and file storage,
  • Kubernetes as the scheduler for Workflow,
  • PostgreSQL, Redis and ElasticSearch for storing and caching data,
  • Cloudflare as a DNS provider,
  • Chef to make an infrastructure configuration repeatable and testable,
  • DataDog for metrics,
  • Kibana and Logstash as a logs aggregator,
  • Jabber for exchanging messages
Continue reading

Test the things that matter

Testing your application is a crucial thing to ensure that everything is working as expected. It gives you a quick feedback if the new feature can be shipped and you didn’t introduce any regression. It’s pretty much an integral part of development. If you like the TDD technique it means that you write your tests even before writing the actual code. But you have to remember that your tests are also an important part of your codebase and you have to take care of them. They should be easy to understand and modify in the future. It’s also important to isolate your tests as much as possible and check things that really matter. Let’s look at some example.

Continue reading

JavaScript Generators


ECMAScript 2015(ES6) brings a lot of new great features and overall language improvements. Among them we will find Generators which seems to be one of the most exciting and enjoyable JS extensions. The primary and the most important thing about them is ability to pause and resume them at a desired moment. Implementation standard by itself allows us to use it in two ways. We can think of them as data producers (iterators) and data consumers (observers). Combination of those two allow us to turn them also into coroutines to handle more sophisticated tasks. How does all this work and in which situations we can use generators to make our code more readable and maintainable?

Continue reading

Database Views in Rails with Scenic

This article describes how database views can be a solution for an application with complex relationships and how Scenic gem simplifies the task of implementing those views in your Rails application.

Continue reading

Blockchains: A brief introduction

This post begins a series about the blockchain technology wherein I will try to answer the common questions like what it is, how it works and where blockchains are used. However, I will not go into technical details, I will only focus on a general overview.

Continue reading

Being productive is not productive. Being content is productive

Have a productive day!

That was the way that one of our clients used to finish daily stand-up calls.

From my point of view, that was one of the worst wishes you could ever receive.

You may ask why?

Because productivity is not a core value for humans beings.

Continue reading

How product management can help developers to work in the flow state (and be productive as fuck)

From When involvement rhymes with enjoyment article we know that there are 7 factors to achieve the flow state. This state is ultimate effective when we are fully engaged in the activity.

Today, we focus on which of the factors can be activated by having a good product management. And how this activation can be achieved.

The main goals for the project management are getting sure that:

Continue reading

Code The Flow - How To Write Code In More Productive And Fun Way

Spend less than 2 minutes to discover three simple tricks that will help you to be in the coding flow! Write the code in the more effective way. Code with better quality. Be more satisfied with the time spent on programming.

Continue reading

Introduction to fragment caching in Rails

You’ve probably read or heard a lot that the two most difficult concepts in computer science are naming things and cache invalidation. The quote has appeared numerous times in books, blogs, and other programming sources in one form or another. While the only remedies for coming up with names are practicing a lot, being clear in our intentions or having a sudden epiphany (none of which are quick and simple), Rails tries to help us with the caching part as much as possible. Caching can significantly improve web application performance. This requires little additional code, especially if we have a large number of complex partial rendering.

Continue reading

Validation outside ActiveModel

On the latest Euruko Ruby Conference (Bulgaria, Sofia, 2016) I had a lightning talk about a different approach to data verification. Today, I want to share and explain more of the good stuff in validation.

In a Ruby on Rails application, we use validation...

Continue reading