Bright Inventions

How to deploy a service to Amazon Elastic Container Service with CloudFormation?

Containers are becoming the standard way of deploying software. Every cloud vendor now offers one or multiple ways to run containers on their platform. Most of our clients uses AWS to host their SaaS solution. As part of a new development for one of our clients we have decided to move away from Elastic Beanstalk and embrace containers. Amazon Elastic Container Service is an orchestration service that supports Docker containers and is generally available for over a year. Given our small development team it seemed like the best choice since it takes away most of the cluster management headaches. In this post I will describe how we deploy a container to ECS using CloudFormation.

What would Paulo Coelho say

Who would not like to be successful and manage their time wisely to have it for everything and for everyone? We all would. But to do that we should focus on our life for a bit longer than few seconds and think which elements of it make us less effective, and in consequence less happy. We should focus on recovering.

Your first chart in Android App with CSV parser

If you ever needed to add a chart to your Android app you certainly heard about MPAndroidChart by PhilJay. If not, consider using this powerful library. Let me show you how easy it is to start!

Implementing in-app language change

Android resolves language- and culture-specific resources based on the system locale setting. This is a desired behavior that makes perfect sense. Despite it’s officially not encouraged you may still need to write an app that allows the user to change its language without leaving it. In this article I will show you one of the possible ways to implement such feature.

In-memory database tests with Querydsl

Writing tests is an important skill of a software engineer. I used to write lots of very focused, narrow unit tests. However, I often found such tests to hinder refactoring and barely help in catching regressions. Whether such issues were caused by my poor design choices or are intrinsic to unit tests is not the focus of this post. However, the fact is that nowadays I tend to write more coarse-grained, integration style tests. There is one downside to such approach: speed. For instance, using Hibernate with a full fledged database is relatively slow compared to using a fake repository implementation. Today I write about abstracting the database access using Querydsl in a way that aids testing.

From React to React-Redux in a few steps

In this post I’m going to focus on connecting React components with Redux. If you are just starting out with React + Redux or you have already worked with these before, but want to make this concept a bit clearer then feel invited to read this post till the end ;)

Downtime

If we keep track of our daily schedule really thoroughly, we might be shocked how much time we waste in five to fifteen-minute breaks. I am saying “waste” not by accident here since we are often wasting our time during breaks instead of recharging batteries. The good news is that brief mental breaks taken in a reasonable way still help us re-focus, regain motivation and reevaluate goals.

Working with Chrome Extensions

Chrome Extensions can make your life easier whenever you want to add a new feature to the Chrome Browser. Working with extensions is quite easy. It’s just the good old JavaScript code and not much more. There are however few things worth taking into consideration while working with the extensions.

Microbenchmarking on Android

Since Kotlin becomes more and more popular, especially amongst Android developers (and it’s officially supported by Google), some people decided to compare its runtime performance with Java. After reading a few articles I wanted to test it myself and now I’m ready to share some of my observations and experiences.

How to use different Google configuration on each build configuration

If you have ever used Google Sign-In, Firebase, or Google Analytics for iOS, you should be familiar with a GoogleService-Info.plist configuration file. Using property list files instead of setting every required property manually in code is convenient, especially while using more than one Google service at once and the configuration grows. But have you ever wondered how this can be adjusted to multiple environments?