Academia Exponencial

Banner Academia

TL;DR

Argentina is currently investing in all sorts of new technologies from the recycling of food all the way up to a global satellite network. As a company, we contribute to the cause co-organizing an event and most importantly developing the solutions for the future.

The goal of Academia Exponencial is enlightening youth minds to advocate their lives to science, whereas been IT industries or renewable energies. The sky’s the limit and this experience proves it.

Intro

We believe Argentinian people bring a lot to the table in several scenarios. Our creativity is outstanding and our resilience looked upon all over the globe. I’m writing this post to spread the word about our progress. And mostly to give you a glance of the already tangible future in our hands.

Drones are agriculture BFF’s

This was a recurrent topic all along the 3 days. We live in an agricultural country, and the drone industry has too much to offer to look another way. As we mentioned before there are a lot of companies that work on microtechnologies improving the growth of crops.

With the help of drones is possible to spray pesticide, synthetic nutrients, and more with extreme precision; Avoiding flooding the fields with this chemical substances. Not only that, we can even measure which areas growth with the most efficiency, and which ones need more attention.

With the help of satellites, we can even identify larger portions of fields with precision. As you may see. Drones are definitely agriculture best friend.

Humanity says NO to fossil energy, green ones are here to stay!

It may not be yet a generally accepted idea… but fossil energy is dying. This overly used & abused fuel material is not only getting depleted but also killing our environment. Let me brighten things a little bit… over the years companies and countries got mother’s earth message, with this I mean even the Arabs Emirates are investing in green energies. I double the bet… they are the most interested in this not-so-new technology.

In Argentina, even tho we still have a lot of dependency on fossil fuels. We have people giving their best to push this change forward, locally and internationally speaking. The most remarkable case is VOLTU, a company going head-to-head with TESLA MOTORS on the making of electric motorcycles. On the production level we are implementing several solar panel farms all over the country (Santa Fe, Mendoza, Salta, San Luis, Neuquén y Misiones) In this states consumers are able to produce power, store, use it and sell it back to the grid.

 Mix Reality, the next step in human life.

We live in an era where the line between fiction and reality is getting thinner with each second. Technology is dropping jaws all over the globe, one of the most shocking ones is the possibility of exploring the world with a different point of view… Picture this, you are a traveler and have no idea what surrounds you. You pull up a device, point towards a near building. A virtual guide pop-up from your device and gives you a tour of all the place. It could even re-construct some ruins that are lying in front of you.

As futuristic as it sounds, this is already happening in the world… Imagine the possibilities this kind of technology enables us to do. Your imagination is the only limit.

Robots will change the work environment, not destroy it.

Far are we from the times where robots where picture as metal boxes with blinking lights and beep-boop sounds. With the cutting-edge advances in AI (artificial intelligence) robots are able to establish a regular human conversation, follow instructions from top to bottom without errors and much more.

With all of this in mind, we should start training people on how to be employable in this new era. Even tho several jobs will be fully automated, a hundred new ones will be created to supply incoming demands. Argentina has some companies that are focusing on automation of industries.

Our mind is getting closer to be decoded

What Am about to tell you, will seem to be taken out from a science fiction book. But is actually a very real situation. Nowadays we have discovered plenty of how our brains work, how it stores memory, how we react to things, how we blackout thoughts. All these studies have culminated in the translation of those cerebral waves into data… THIS IS HUGE… It means we can observe human generated waves and understand what information is it.

Let me give you some examples to make you understand the implications of this. Sensors can detect cerebral waves and interpret those waves. Wifi thought transmission wifi Facial recognition is primary With a thought we can reconstruct a face

We have our own Argentine made satellite network.

That’s right, what you read is a reality. We are part of the new space race, satellite race… Argentina has at least two companies dedicated to this topic. One has a focus on agricultural care, the other one aspires to be a real-life search engine for objects (ships, buildings, crops fields, military bases).

So we could ask queries such as… How many cars are on the highway today? How many fishing ships were sailing on the coast yesterday? How many buildings were constructed in the rural area km 8 last year?

This networks will consist of a series of 233 satellites orbiting the earth. This will allow to accurately have pictures of the whole globe up to a view area of 2m at any time.

  • Emiliano Karigeman – Satellogic

The blockchain is more than cryptocurrency, it can even aid democracy.

People think that blockchain is just a cryptocurrency. But they couldn’t be furthest from wrong. Actually, this is just a storage pattern… a democratic database.

How does it work you may ask?

Easy, just imagine a classroom in which every student has a notebook. The teacher asks their students to write down the test grades from the whole class (even themselves). Now, everybody has the same information. A notebook will be “true” if it whole content matches with the half +1 of the class notebooks.

All “operations” are made sequentially, this means they are stacked one over another.

  • To add a record everyone has to write down the new data.
  • Delete data is not possible in this system. It compromises the integrity of the stack.
  • All previous data is unable to be altered, just new one can be added.

This pattern is secure because of its transparency. Everything is “visible” to everyone, all operations are recorded in everyone’s base. This concept can be implemented in a variety of system such as the electoral process, certification of documents, public finances and salaries transactions. Everything can be converted to this process, but not everything is worth been converted.

Passion is key!

As I mention above, we Argentinan, have a lot offer. One thing all speakers had in common is their passion about what they do. In this category, we can see a variety of examples, from a girl succeeding in her professional (0 to hero) all the way to PUMAS’s technical director speeches

Conclusion

Our future can be bright if we go in the right direction. Whichever road will go, technology will play a big part in it. Having this in mind, we better embrace the changes. Luckily we Argentineans are known for our sense of adaptability, and even better, we already have people working in all of this fields at the moment. As we have seen in this article, we are making ground-breaking discoveries and implementing them.


Sails.js – Beginning with Node.js

Intro

I want to share our experience with this framework. First, I will begin telling you why we decided to start using Node.js and which are its pros and cons. Then, we’re gonna talk about Sails.js. Specifically, its history, how it works and which are the fundamental characteristics that convinced us to use it.

 

Why use Node.js?

Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js’ package ecosystem, npm, is the largest one talking about open source libraries around the world.

To start talking about its operation, I will begin exposing the traditional web service techniques, where each request generates a new subprocess while taking memory from the system and does not take the next one until it finishes processing it:

Node operates in a single thread, without using I/O call blocking. This feature allows you to simultaneously accept thousands of requests (working parallely):

(*) font: Toptal

Pros:

  • It can run on several servers.
  • It allows you to use the same language in both client and server side (JavaScript).
  • Easy to learn. It allows to create highly scalable applications.
  • Ideal to create applications with a high traffic of users and events.
  • It is the best deal in the market for real-time applications (chats, games, etc.)
  • Very good package management thanks to NPM.
  • Great community.

 

What is Sails.js?

The web framework of your dreams…

Sails is one of the most popular MVC frameworsk for Node.js, designed to emulate the familiar MVC pattern used by most frameworks like Ruby on Rails, but with support for the requirements of modern apps: data-driven APIs with a scalable, service-oriented architecture. Sails uses Express to handle HTTP requests, and wraps socket.io to manage WebSockets. So, if your app ever needs to get really low-level, you can access both raw Express or socket.io objects.

As its definition says, it’s a 100% JavaScript MVC framework integrated by default with Waterline as ORM. I’ve researched about this ORM and found some criticisms into different forums, but we did not have any issue in any moment. What you get is an easy wat yo handle any database. Thanks to the magic of NPM (which is another advantage), you’re able to view connections configuration file for your database and all the stuff you need for the overall project. We have worked with relational databases, such as MySQL, and non-relational databases, such as MongoDB, and we didn’t spend more than two minutes in order to configure them.

Sails has a very powerful client called Blueprints which allows you to auto-generate REST APIs. This API lets you search, paginate, sort, filter, create, destroy, update, and associate entities. Since these blueprint actions are built on the same underlying technology as they are, they work with Websockets and any supported database out of the box. The downside on this item is that it does not generate RESTful APIs.

On its visual layer, Sails is compatible with any front-end strategy; whether with Angular, Backbone, iOS / ObjC, Android / Java, Windows Phone, or something else not invented yet. Plus it’s easy to serve up the same API to be consumed by another web service or developers’ community.

Learn more about Sails’s features

Let’s see some code

/ /Install Sails
npm install sails -g
// Create your app
sails new test-project

// Generate api/models/Foo.js and api/controllers/FooController.js
sails generate api <foo>

// Generate api/models/Foo.js
sails generate model <foo> [attribute1:type1, attribute2:type2 ... ]

// Generate api/controllers/FooController.js
sails generate controller <foo> [action1, action2, ...]
 

Model example:

// api/models/User.js 
module.exports = { 
  attributes: { 
    name: { 
      type: 'string' 
    }, 
    enrolledIn: { 
      collection: 'Course', via: 'students' 
    } 
  }}:

Docs about Models

Controller example:

module.exports  =  { 
  hi: function (req, res) { 
    return res.send('Hi there!'); }, 
  bye: function (req, res) { 
    return res.redirect('http://www.sayonara.com'); 
  } 
};

Docs about Controllers

To get more information about the principal concepts about Sails, check this link.

Conclusion

Node.js is a worldwide trend today. It has a large community with potential growth. Everyone who has ever worked with JavaScript will be familiar.

About Sails, it groups every characteristic that we were looking for. It’s an MVC framework, with a powerful client that allows you to auto-generate REST APIs in a very simple way. It has a very fast and smooth learning curve unlike other Node frameworks such as Loopback, Meteor and Express. In a few minutes you will have a backend running with a super adaptive view. It is a tool that requires almost no time to be brought to live and has remarkable growth. To close up this documentation, Sails has solved all the problems that have been presented to us. Really nice!

My recommendation would be to research about which Node framework fits better with your specific needs. That was what led us to Sails and it was really a step forward!

 


New identity for Endeev

After a whole year of changes and growth, our company logo needed a refresh.

We decided to simplify our logo, still using our representative sans-serif typeface, but making it look a lot more modern and playful.

 

 

We added positive tracking, making the wordmark more distinct, easier to read and good looking on small screens and sizes.

The new wordmark has been colored with the current company colors, black, teal green and light blue. The colors are softer than they used to be, but they maintain the chromatic range.

Two twisted letters (double e) accessorized the whole look and feel.

The angle of the slanted “e’s” was added to grant fun to the company identity. At Endeev we want to transform our name into a verb. Spread our culture to our clients and pairs, presenting ourselves as an unconventional company, a brand that people think of as being playful/cool/fun/creative.

Our new logotype is set in a custom, geometric sans-serif typeface, maintaining the multi-colored playfulness and adding the rotated ‘e’s’ — a reminder that we’ll always be a bit unconventional.


Running Stress Test on AWS Elastic Beanstalk

 

In the field of App development, Cloud Services are blooming. Nowadays, the vast majority of developments are carried out in production environments. They run on independent and scalable services that maximize the network resource use and enhance the performance of our App.

AWS Amazon is the leading giant of Cloud Service’s market, they continuously release innovative tools and resources to maximize the use of it.
Here I will briefly explain to you our experience working with Elastic Beanstalk service (EB) mainly pointing to the Stress Test process. This is an indispensable task to ensure the correct functionality of the production environment, also its scaling availability according to the traffic and/or the behavior of users.

What is Elastic Beanstalk

Among the many services offered by AWS we found Elastic Beanstalk (EB), this is a service that allows a quick deploy and management of the applications in AWS Cloud without worrying about the infrastructure that runs those applications. This service reduces management complexity without restricting choice or control. You simply upload some application, and Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring. Elastic Beanstalk uses highly reliable and scalable services.

It is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

In the background, EB works with EC2 instances connecting with other services automatically, like load balancers, databases, autoscaling, etc. This service has an intuitive wizard to initialize your APP and deploy code to EB. There is an Application Version’s page that let you administrate versions of deployments as well as perform rollbacks.
When building a deploy version you’ll need to keep in mind how to:

  • update the instances
  • install necessary package
  • configure your system
  • update all necessary resource into the instance.

This is possible through the execution of some scripts under the hidden folder “.ebextensions”. That way, you’ll have complete control over the update and deploys. Later on, the autoscaling will grow without further problems.

  • To know more about .ebextensions and deployment scripts, go to ebextension documentation.
  • To learn more about the AWS Elastic Beanstalk you can go to EB.

Here there’s a small flowchart about the deployment process:

Structure Of Our Environment

Now let me quickly describe our production environment deployed on EB.

This is an App for a company who wants to administrate their sales, orders, production, and accounting. To ensure the proper functioning of this system we need a robust structure. It will have several internal services running:

  • a Rest API service
  • special storage
  • fast delivery of files, images, and data

The structure includes backend EC2 instances behind a load balancer with autoscaling, connected to a Database, to a Queue service and S3. The frontend is and APP working with Angular, and it is running over a CDN service directly.

This diagram shows the diagram of our environment:

About Locust.io

As a Team we have selected Locust.io system to make Stress Test. We choose it because this tool is straight forward and it packs big power capabilities with low resources consumption.

Locust is an easy-to-use, distributed, user’s loading testing tool. It is intended for load-testing websites (or other systems) and figuring out how many concurrent users a system can handle. Locust is completely event-based, and therefore it’s possible to support thousands of concurrent users on a single machine. In contrast to many other event-based apps, it doesn’t use callbacks. Instead, it uses light-weight processes, through gevent.

In order to start using it, there is an easy command “pip install locustio”. After this, you have to make basic configuration and start building your python script to the test process.
This is a simple example of the script where you visit the site, sign in as a user and browse some pages. The script tries to simulate the behavior of a user in different ways. You can set different weights to every @task so Locust can use it dynamically and execute different orders per user, giving you a certain real work environment.

With this simple example you can build a fair test, simulating a real scenario of the use of your app from hundreds or thousands of users. We have installed it on Debian running on t2.medium EC2 instance. Finally, executing the locust.io on the EC2 server, we can access the frontend page where we can launch the test and check the progress.
This screen is an example of frontend Locust.io program, running the tests:

As you can see in the picture Locust show a variety of information. In resume, you’ll have a clear image of the amount of users watching your site, the requests per second (RPS), the percent of failures and overall request executed. The grid shows how many pages or calls were made on every row, the type of call (GET, POST, PATCH, PUT, DEL), the number of requests and how many fails. Also, it shows the times of executions, this gives you an idea about how fast or slow is working the system and every call.

When you start the test, Locust asks for two values. The first one is the overall amount of users you want working on the site, the second one is Hatch rate (the value of users that Locust will launch per second). We advise starting with low values at first and progressively increment them. When the stress is running, you can edit these values and continue with no pauses.

Running Stress Test

I will explain shortly the process off making a Stress Test using Locust and running it over our AWS EB environment. Firstly, we need to make a plan about how we’ll execute all the process. In general, it should have the following steps:

1. Preparation of the EB environment: To make a Stress Test you’ll need your APP been able to respond Locust’s calls, this means that any user can use it. In order to do this, a basic request responding deployed version of your App is needed. It’s better if your APP is closed to production.

2. Setup the Locust Script: You have to think what you want to test, what calls you can execute. Think and make a plan about the possible flow of your calls have in mind that any user can execute and then try to write them into the scripts.

3. Prepare a Sheet with the plan of Stress test execution: You always need to organize the work, and it is good to build a plan of the configuration values that you will use in the Stress test. Here I show you an example of such sheets that we have used.

4. Prepare all Page or reports that you need to check during the execution: Before the start Stress Test, try to get open all pages with the information that let you follow the behavior of your environment running. In our case we have used AWS Cloudwatch service, Locust report, Top resume from Linux, Inspector of Chrome and later processing logs of EB if it is necessary.

Here you can see an example sheet, a test plan, and the information gathered on every report or site.

Finally, I link a video about the execution of one of our test: