In DevOps, they say once you have to complete a task more than once manually, it’s time to automate the process. One of the tasks we do in AWS is duplicate environments for Dev, QA, Staging, and Production. So it’s time to create some templates and automate the process with Terraform and Jenkins. This will allow us to implement push-button creation of our infrastructure as needed, on demand, with thoroughly tested code that is predictable, efficient, and reliable.
First, we need to decide how we are going to separate environments in AWS. In my experience, the best way to do so is to use different VPCs for each special use case: Read More
Machine learning, a branch of artificial intelligence, is a method of data analysis that automates analytical model building. While artificial intelligence covers the broad concept that machines should be able to perform what humans consider “intelligent” tasks, machine learning is based on the idea that machines should be able to learn and adapt through experience.
The introduction of new computing technologies has evolved our understanding of machine learning since its inception. One of these technologies, Python, has emerged as a clear frontrunner as far as a machine learning language. Many data scientists and developers have agreed that Python has made machine learning faster and simpler than ever before, giving it a noticeable advantage over its competitors.
In 2007 Robert Griesemer, Rob Pike, and Ken Thompson created a compiled and statically typed language called “Go.” This new language was meant to resolve problems they regularly experienced with languages they were using at Google. Here is a list of the pain points this group sought to address:
- Slow builds
- Uncontrolled dependencies
- Different subsets of the language used by programmers to solve the same problem
- Hard to read and/or poorly documented code
- Duplication of effort
- High update costs
- Version skew
- Difficulties in writing automatic tools
- Cross-language builds
Today’s companies routinely leverage IT products to conduct their business. Many of them empower their IT departments to maintain the computing environments as well as the software and services that are used throughout the company. As virtualization and cloud technologies continue to grow, automating the deployment and environment setup has become even more challenging and important.
There is a wide variety of software products which need to be treated differently for production, development, testing and other environments. Migration of the entire infrastructure from one cloud provider to another often requires a lot of work. This is because there are many complex tasks related to the migration of a whole infrastructure. In addition, the increased load placed on these products requires an expansion in the number of service instances that are managed by the same load balancer. Read More
Automated testing is a commonly used practice. It saves you from boring routine and detects problems while you are developing your product. One of the tools which can help you with this is Jenkins, cross-platform, continuous integration and continuous delivery application with rich plugin ecosystem.
To show how to use Jenkins for automation testing for rails I’ve created test rails app and put it on github and created a server on Ubuntu, which I will refer to by the URL http://jenkins.example.com. First thing we need to do is to install Jenkins and Git packages on our server.
As the Ruby on Rails community becomes increasingly mature, additional time is spent optimizing different aspects of the program rather than creating a completely new web application. This means performance and memory consumption start to play a significant role in its day-to-day development. So now we have much more instantaneous communication, lots of API calls and open connections needs to be processed. This evolution is apparent from the way Rails 5 was developed. ActionCable and API mode for Rails are selling features of Rails 5 due to the program’s advances over time. But what happens if you still encounter problems with performance and concurrency? Luckily, Golang has the capacity to address some of these issues in certain circumstances.
To be clear, however, this article isn’t designed as a complete guide to explain Golang’s most complex facets. Instead, it presents similarities between the two major frameworks of Golang and Ruby. Therefore, the purpose is to compare Ruby on Rails versus Beego. In the process, the objective is to discover familiar ways to perform functions in Go if you already have some experience using Ruby. Read More
It is important to collect aggregated statistics so that management can analyze the data and make well-informed decisions. Sphere was retained by a client in the recruiting industry who, among other things, needed to collect the following data:
- Total shifts posted
- Total hours posted
- Total shifts worked
- Total hours worked
- Average length of shifts
- Average shifts per job
Your team has decided on Go after months of months of developing modules and roadmapping for a large project, but since there are three external dependencies in C/C++, your entire project will now have to be done in C/C++. What does this mean? Now, at least half of your development time will be spent correcting memory accesses bugs and invalid cast errors — and not many developers can afford to allocate this time. What can be done to expedite this process?
When trying new, modern frameworks, developers often face problems like poor official documentation and a lack of real-world examples. A guide that explains using the framework according to best practices/approaches may also be absent. In this article, I provide an overview of Ampersand.js, a more or less modern framework, that could be a solution to many such problems. I encourage those who interact with the client side to try Ampersand. It is well-equipped and developer-friendly, so some of its approaches can be helpful when improving existing frameworks or creating your own.
What is Ampersand, and how does it work?
Ampersand can be seen as a successor or an improved version of Backbone. If you are familiar with Backbone, you will find many similar components. The creators of this product, &yet, describe Ampersand as a “non-frameworky framework.” This means you are able to assemble the framework from the components they provide. The creators also describe Ampersand as “highly modular” and “loosely coupled.” If you don’t need a certain component, you just don’t use it. In other words, you can use Ampersand as the main UI framework for your web application, or for only one part or module, like the wizard. Read More
Many articles describe the interaction between Node.js and Elasticsearch, but they often do not clearly explain how this interaction was achieved. To fill this gap, this article describes test-driven, step-by-step development of a simple RESTful API into an Elasticsearch in Node.js.
My main intention is to show Node.js developers how a RESTful API might be written using a TDD approach. Applying TDD practices makes the process much faster and results in a less error-prone API. Moreover, the whole application architecture becomes testable and therefore simpler and cleaner.
This article is divided into three main sections, with subsections and numbered steps to facilitate ease of use: Read More