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.


Ionic 3 – Fast mobile development

TL;DR


Ionic is a web-based framework for Angular to develop cross-platform mobile apps. Because of its component base and quick development speed it allows us to enter the app market without the hassle of training/hiring new personnel for it. If you want to know more about Ionic

Mobile development


Why should we make apps?

  • Users are shifting towards apps.
  • It’s a hot topic and will remain so.
  • All major companies have at least one themselves.
  • It increases your company stack value an overall quality.

Is it worth?

Heck yeah! If all the reasons above don’t convince you to start coding apps, just take a look at what statistics have to say about it.

How much time do you need?

Traditional mobile building consumes a lot of resources. Overall coding this kind of technologies requires time. Finding a good native developer for a platform is hard, having one dev for each platform is expensive.


So… How can my company sell this stack? you may ask.

 

Ionic Framework

What is it?

Ionic is a complete open-source SDK for hybrid mobile app development. The Ionic framework wraps the Angular5 framework with HTML5+SASS and uses Cordova to access native device functions. Ionic offers great possibilities to build hybrid apps which not only look awesome but also behave as natural as a native app and rely on one shared code base. And if you are scared with JavaScript, it’s not as bad as you might think.

The Platform provides a set of Angular5 directives (custom HTML elements) for its own components, making it as easy to use the widgets as writing a line of HTML code. Angular and Ionic complement each other perfectly because it uses the same folder structure as any angular project. The ionic framework was built thinking of this technology. But according to their blog, the v4 version of it will support ANY STACK vue.js, react, vanilla, whatever you want.

Angular: The main framework to code ionic apps so far.

Cordova: A framework for wrapping all the project and build the app itself.

Why should we use it?

  • Your regular UI guy can handle all of this (Angular knowledge required).
  • Code once deploy for every system (iOS, Android, Windows OS).
  • It’s lightning speed fast to develop.
  • It has native capabilities thanks to the awesome community and project devs.
  • You can use NPM to get whatever package you need, or export one yourself.

Have we ever coded with it?

Yes, we have. And it is an awesome experience. Our devs quickly got the hang of it and we built some apps. Unfortunately, we can’t publish examples of them because they were for companies internal use.

Let’s code… shall we?

Getting started

If you want to follow the tutorial from the source. If you don’t have them: NPM and NodeJs (This package includes a npm version).

Ionic CLI

The source, this tooling enables us to generate our components easier and in order to structure our code better:

Some templates Ionic provides for us.

If you know angular these command lines won’t scare you much. If you don’t, do not worry. They are intuitive once you start coding.

Rule of thumb

  • Almost everything is a page! Each view you’ll need in the app use needs a PAGE.
  • Please be DRY (don’t repeat yourself) use COMPONENT.
  • If you need a custom string modifier or a stuff like that, use PIPE

Find native functionalities

Ionic devs and its community gives us a large number of native libraries. With all of these functions, you are able to build some extraordinary things. That was impossible to build for this kind of web-based app.

Some of the useful ones:

  • Camera
  • Facebook
  • Splash art
  • Toast
  • SMS
  • Push notifications
  • NFC
  • Geolocation
  • Network use

Which components are prebuild? 

You’ll LOVE their component list. It has a preview render of each element, for us that was a huge win. Their doc on how to use them is also quite good, go check it out.

Build the app

Building it’s as easy as typing this lines.

Conclusion

Being able to produce Apps is a must for current software companies. Not because it is “just a trend”, but a requirement for clients themselves.  If you wanna get your company into the leading technologies train… this is a good way to start.


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!

 


Automate your UI testing

Intro

QA is a necessary step in every software life cycle. We guaranteed the correct functionality of any requested feature as a whole (integrity, speed, functionality, acceptance…). But as you may know, this is an expensive and dull task to do. That’s where automation comes in to save the day.

Automate!

What do you mean by this?

Easy, just delegate the task to a script. Automation at its core is simple, we set a non-human entity do something for us. In this case, test UI interfaces and follow workflow. 

Which tasks should I delegate?

  • Filling forms.
  • Check responses.
  • Watch for unexpected errors.
  • Whatever you want to.

 

How do I implement it?

You could use several testing tools. Selenium, PhantomJS, Ranorex, Inter…
Or you could rock the new era with Puppeteer.

Puppeteer

Puppeteer Logo

What is this puppet-thingy?

Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium.

What can I do?

Most things that you can do manually in the browser can be done using Puppeteer! Here are a few examples to get you started:

  • Generate screenshots and PDFs of pages.
  • Crawl a SPA and generate pre-rendered content (i.e. “SSR”).
  • Scrape content from websites.
  • Automate form submission, UI testing, keyboard input, etc. Create an up-to-date, automated testing environment. Run your tests directly in the latest version of Chrome using the latest JavaScript and browser features.
  • Capture a timeline trace of your site to help diagnose performance issues.

 

Why not Selenium or PhantomJs?

Puppeteer works only with Chromium or Chrome. However, many teams only run unit tests with a single browser (e.g. PhantomJS). In non-testing use cases, Puppeteer provides a powerful but simple API because it’s only targeting one browser that enables you to rapidly develop automation scripts.

Syntax

Installation

$ yarn add puppeteer
$ npm i puppeteer

Hello World!

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page    = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({
     path: 'example.png'
  });
  await browser.close();
})();

Selectors

const $selector = ‘css_selector’;

const selector = ‘value’;

await page.type( $selector , selector); // Types

await page.click( $selector , options ); // Clicks

await page.select( $selector, selector); // DropDown

Page

await page.content(); // Html of page

await page.cookie(); // name,value,domain,expires...

Request

await request.failure().errortext; // Human readable error

await request.headers(); // HTTP request´s headers

Response

await response.failure().errortext; // Human readable error

await response.status();  // Response code

await response.json();  // Fuck yaass...

Our implementation

Pixel’s Hive

The Art Portal gives our clients a way to manage their designs orders with the ability to see the entire process from start to finish. In addition, they can see reports, statistics, invoices and all other types of notifications. We offer integration with our Client’s Portals using an API, making the communication in real time, and improving the delivery of our client’s orders!
For Clients without their own portal, we offer our software as a service (SaaS)!

So far

  • Login: Automate the endlessly tedious task of filling user and password.
  • Order: We offer different UI for each type of work. Every one of them has different required inputs.
  • Purchase: Tired of typing random credit card numbers? Fixed that with puppeteer.

Demo

Where is the catch?

Chrome only

This framework ‘s only meant to be used with chromium browser. No cross-browser compatibility

Audio & Video

Puppeteer does not support licensed formats such as AAC or H.264. But it is possible to use a Chrome version instead of Chromium.

Mobile limit

Puppeteer does not support HTTP Live Streaming HLS (mobile feature only).

Conclusion

If you aren’t doing QA you are missing in a critical area of software development. If you are doing but not automated, you surely losing precious human QA testing time. Bottom line start automating it’s great! 

if(!QA) {
  console.log('You are missing a critical area of software development');
}
if (QA && !automate) {
  console.log('You are losing precious human QA testing time');
}
if (QA) {
 console.log('Congratulations, you are on the right track! :)');
}

 


React – JS Library for User Interfaces

 

 

React is an open-source Javascript library to build user interfaces. It is maintained by Facebook, Instagram and an entire developers community.

React is not a Javascript framework, and that’s why it might be so confusing to understand. It’s emerging from an ecosystem full of frameworks, even while it allows you just to create views. If you need to integrate other functions like API calls, you will need to make use of other libraries.

 

 

React’s secret to get a high performance is that it implements a Virtual DOM that instead of rendering the entire DOM with every change (that is what is normally done), it makes the changes inside a copy made in-memory and then uses an algorithm to compare the properties of that copy with the ones in the current DOM to apply changes just over the parts that varied from the original. This may sound like a lot of work, but it is really more efficient than the traditional method. For instance if you have a list with two thousand elements in an interface and ten of them changes, it is faster and easier to modify and reload those attributes than rendering the whole component list.

 

 

React’s promote  one-way data flow, this is a mayor point in their architecture. They prefer this approach rather than the typical two-way flow present in modern frameworks. This makes it easier to expect and detect errors in large applications where information flow end up been too complex.

 

Why should we use React?

  • It works great for teams, strongly enforcing UI and workflow patterns.
  • UI code is readable and maintainable.
  • UI with components is the future of web development.

 

Summary

React is a fully mature library it can be effortlessly be implemented on a variety of projects. It allows your team to perform an organize agile development, using a maintainable architecture focusing on great performance.

Although React doesn’t have the ultimate recipe to make a complex web application, the several components and tools that are build for React does. They will allow you to find a capable solution to do anything we would’ve done with other monolithic framework.

 

So… why are you not using it yet?