It’s our annual tradition that we go to the biggest Ruby conference in Poland - wroc_love.rb. This year it took place from 17th to 19th March. It’s a really good thing to attend programming conferences for couple of reasons and here are my thoughts about it.
We don't have many infrastructure related posts here. We have a few full-time DevOps, it's a part of our normal offer. But, we're busy most of the time. When an opportunity to write a blog post emerged, I knew I've had to write about a thing which changed our workflow. During last two years, there were few ideas which helped us providing better and more reliable services - one of them is infrastructure integration testing.
"Intelligence is a very valuable thing, innit, my friend? And usually it comes far too fucking late."
This time is different. Intelligence comes in the right time. In the previous episode, we learned how is “our” API working. It is time to code the scraper that will use this API to get the data we want. Unfortunately, the API provider probably doesn't want us to get this data. He will ban us as soon as he will notice our unwelcome activities. Good news is that we will be smart from the beginning and prevent being noticed and banned :)
“Everyone's a whore, Grace. We just sell different parts of ourselves”
Life is not always nice, simple and easy. Sometimes is more complex. Sometimes you are its lawful citizen. Sometimes you break the rules and do some dirty, shady things. Sometimes you are a copper. Sometimes you are a scoundrel. One day you are writing an API and taking care of its protection. Another day you are receiving the task to use someone else API without permission. It is not a thing you should do, but in startups game sometimes you have to do whatever it takes. It is possible to do that if the API is protected by basic auth. I will help you to do it right and won’t be caught.
Maximizing your software development runway on available budget
Last year Ragnarson cooperated with the Archangel Summit on preparing the Archangel Contest. We also sponsored one of the prizes - software development services for the best submitted business idea. Now we are working with the winners on moving their application to the next level. We will share some of the details in the near future.
No matter what kind of online business you run, you also collect some data. To be honest we collect and store more and more data nowadays. The problem is that almost no one understands collected data and it cannot be used to make better business decisions.
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
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.
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?
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.