Posted on

Development tools and Platforms for IoT

IoT Development tools and Platform

IoT Development Tools

 

To get started, you will need a platform for the product development. There are lot of IDE available for IoT. But the most used IDE are Arduino IDE (by Arduino Open-Souce Community) and Eclipse IoT.

 

Arduino

 

arduino_official_Logo__

It is an Open-source prototyping platform, Arduino is based on easy-to-use hardware and software. Arduino is a hardware specification for interactive electronics and a set of software which includes an IDE and the Arduino programming language. It also contains few basic examples to get started.

 

Eclipse IoT

 

iot_eclipse

 

Eclipse IoT provides the technology needed to build IoT Devices, Gateways, and Cloud Platforms. Eclipse IoT is an ecosystem of companies and individuals collaborating to establish an Internet of Things based on open technologies. This collaboration helps to completely focus on the development, promotion and adoption of open source IoT technology. Many of our members provide a wide range of projects and services built on top of Eclipse IoT technology.

 

IoT Hardware Platforms

 

Intel® Galileo Board

 

IntelGalileoGen2

 

It is a fully open-source hardware and designed specifically for developers, students, educators, and DIY electronics enthusiasts, the Intel® Galileo Gen 2 board is Arduino* is certified with a software environment for advanced computing functionality.

 

Arduino UNO

Arduino-Uno-TH-1front

Arduino UNO is the most popular board to get started with Electronics and Coding. In most cases, you can use this board even without the need of Bread Board.

 

Arduino Nano

 

Arduino_Nano_V3.0

 

Arduino Nano is a breadboard-friendly board based on the ATmega328 with nearly the same functionality of Arduino Duemilanove, the Arduino Nano can be powered via the Mini-B USB connection.

 

Arduino Pro Mini

Arduino_Pro_Mini_(2)

For applications where space is a major issue, this board comes to quick rescue. Available in 3.3 V and 5 V versions, powered by ATmega328, Arduino Pro Mini is for semi-permanent installation in objects or exhibitions. The board comes without pre-mounted headers, allowing the use of or direct soldering of wires.

 

Operating System

 

Raspbian

 

Screenshot_54

 

There are distributions for the Raspberry Pi aimed at IoT, but the quickly maturing Raspbian is still the best. It’s the most popular and one of the most widely used IoT platforms. Developers can rely on numerous projects and tutorials for help.

 

IoT Platforms

 

AWS

 

AmazonWebservices_Logo.svg

 

AWS is a subsidiary of Amazon.com and provides on-demand cloud computing platforms to individuals, companies and governments, on a paid subscription basis with a free-tier option available for 12 months.

AWS is a subsidiary of Amazon.com and provides on-demand cloud computing platforms.AWS IoT cloud platform to connect devices in a seamless and secure manner and interacit with cloud applications and other devices. With the ability to support billions of devices and trillions of messages, AWS can process and route messages to AWS endpoints and devices securely.

 

IBM Watson

 

IBM_Watson

 

Watson is an IBM supercomputer that combines artificial intelligence (AI) and sophisticated analytical software as a “question answering” machine.With IBM Watson, you can enable cognitive computing features in your app using Language, Vision, Speech and Data APIs. This API makes it simple for developers and offers a host of different services. With Watson’s featured APIs, you can build chatbots understanding natural language and deploy on messaging platforms and websites, on any device. You can also rapidly build cognitive search and content analytics engine.

 

Azure

Windows_Azure_logo

 

Microsoft Azure is a cloud computing service created by Microsoft for building, testing, deploying, and managing applications and services through a global network of Microsoft-managed data centers.

With Azure, you can integrate your existing devices and systems with IoT solutions specially designed for your business thus helping get insights to transform your business. Azure provides flexibility in connecting devices and operating system that is already being used by you. Azure’s common pre-configured solutions help accelerate IoT projects and stay ahead of the competition.

 

 

Posted on

5 reasons why nodeJs is so popular

Node.js_logo

Node.js outshines other web applications by replacing websockets with revolutionary push technology. You would ask, what is so unique about it? Well, we finally have cutting-edge web applications with two-way, real-time connections where both the server and client can build communication, allowing them to exchange valuable data. Now this is in stark contrast to our conventional web response paradigm where only the client initiates communication

Node.js server technology is used to create and run a wide variety of web applications, and is quite similar to what Ruby On Rails, Spring Framework and ASP.NET does. It leverages JavaScript as the main language, which is a lightweight built-in web server and has a plethora of Plugins managed via the Node Package Manager (NPM), allowing you to custom-build your applications to meet your needs. It may sound like any other good web technology, but it has certain features that make it a popular choice among developers to build a wide spectrum of web applications.

Here are the top 5 reasons why nodeJs is so popular nowadays:

1. Node.js is superfast

Node.js is primarily a JavaScript runtime that is powered by V8, developed by Google for use in Chrome. V8 has the ability to compile and execute JavaScript at lightning fast speed, mainly because it compiles JavaScript into a native machine code. In addition to this, Node.js has a magical event loop, which is a single thread performing all I/O operations in an asynchronous manner. In Node.js, when an application has to perform I/O operation, it sends asynchronous tasks and callback action to the event loop, and then continues to perform the rest of the program. On completion of sync operation, the event loop automatically returns to the task to execute callback. This is much unlike traditional looping, which consumes a lot of memory and is exceptionally difficult to execute. Thus, reading/writing to file system, network connections, and to the database is executed very fast in Node. It allows developers to build fast and highly scalable network applications that are capable of handling bulk amounts of simultaneous connections having high throughput.

2. High Performance

PayPal uses Node.js, and has reported doubling the number of requests per-second and reducing the response time by 35%. On the other hand, Wal Mart, the retail giant had a superb experience with Node.js in 2013, when they put all their mobile-based traffic via Node.js on Black Friday, the busiest shopping time of the year. Amazingly, on Black Friday, Wal Mart servers did not go over a mere 1% CPU utilization and yet they deploy with 200,000,000 users online. LinkedIn, the global networking site, moved from Ruby to Node to handle their mobile traffic, and reduced the number of servers to 30 to 3, i.e. almost 90% reduction. The new system was up to 20 times faster. All these figures clearly indicate performance capability of Node.js.

3. JavaScript Everywhere

One of the biggest reasons why Node.js is so popular is because it uses JavaScript as its main language to build web applications. And to be honest, JavaScript is now the only choice to develop web applications in the browser. What more! A new and robust framework is introduced quite frequently to woo developers. With Node.js, JavaScript has literally revolutionized on the server. The language is common to most web developers, and is certainly driving the world today. And according to experts, the trend will not fade away soon.

Since JavaScript is a language that most developers know or have used at some point of time, the transition from another web technology to Node.js is a breeze. This makes it a preferred choice among web developers.

4. It is Lightweight

Typically, Node.js uses a basic event-driven architecture. This means everything executed on it, including every single operation and call, is a series of asynchronous callback. This enables Node to run on a single thread as unlike other web technologies where a new thread is spawned for every client request. This not only makes it light-in-weight, but also forms the foundation of Node’s non-blocking I/O feature.

5. It is Easy to Modify and Maintain

Traditionally built applications become less adaptive and rigid over time as new requirements are fed. Eventually, they start creaking under the stress they were not built for. However, developing new services using Node.js is comparatively easier. With Node, a bunch of small applications is built instead of a single, large application. This allows making changes or adding a new functionality with much ease, without having to make changes deep inside the code-base.

pexels-photo

 

Posted on

5 good AngularJs framework you must know about

 

AngularJS is one of the most popular and open-source web application framework maintained by Google and a community of individual developers and corporations to address many of the challenges encountered in developing single-page applications.

If you are already familiar to AngularJS and want to turn on some real magic but don’t know the enough resources to spruce up the coding, don’t worry, some developers have adapted a few front-end frameworks to work and support AngularJS. These Frameworks come with some of useful tools and components that help developers to build innovative web applications quickly and easily.

 

AngularJS_logo.svg

 

Below we have gathered 5 Best AngularJS Frameworks you can use for developing your web-applications without much hassle.

 

1. AngularUI Bootstrap

 

Angular UI Bootstrap is built on top of the front-end framework called Bootstrap. The framework contains a set of native AngularJS directives based on Bootstrap HTML and CSS components. Angular UI Bootstrap offers several directives, such as carousel, alert, date picker, dropdown, time picker, buttons and more.

 

2. Ionic

 

Ionic is a powerful front-end framework optimized for AngularJS for developing mobile applications. The framework uses AngularJS directives to support mobile components, tools and gestures made up of HTML5 and CSS3, thus offering rich user interfaces (UIs). Built with SAAS, Ionic offers a free and open-source software development kit (SDK) as well as a library of UI components for designing interactive, hybrid applications for touch devices.

 

3. Mobile Angular UI

 

Mobile Angular UI is a user interface (UI) framework for designing HTML5 mobile applications. It is optimized for AngularJS and Bootstrap and supports powerful libraries like fastclick.js and overthrow.js. The framework offers essential mobile components, such as sidebars, overlays, switches, scrollable areas and more. With Mobile Angular UI, you can design a responsive, mobile user-interface as well as convert desktop web applications to mobile applications.

 

4. LumX
 
7399778412_0de724ac40_z

 

LumX is a fully-responsive front-end framework based on Google material design guidelines and optimized for AngularJS. LumX is built with SAAS, Neat and Bourbon providing customizable application design for smooth functionality and cool features.

 

5. Supersonic
 

Supersonic is a robust user interface framework (UI) for developing hybrid mobile applications. The framework integrates with any REST API (Application Programming Interface) and allows data interaction/modification in the backend. With Supersonic, one can design API-connected mobile applications for iOS and Android.

 

Posted on

Reasons to Be Excited by the ‘Internet of Things’

communication-1927697_640

The Internet has already brought hundreds of millions of people together and created connections that were never before possible — but this is just the beginning. The Internet of Things (IoT) is coming, and life as we know it will be transformed.

IoT will connect practically every object to the Internet, like Coffee Maker, Burglar System, Car Garage Doors, even monitoring pets. These will collect data send it to the cloud. In other words, everything will be “smart.”

The implications of IoT are huge: The entire planet will become a unified, brain-like system. It sounds like a far-off, futuristic concept, but IoT is imminent, and entrepreneurs should be excited. Here’s why:

 

1. Everything will be measured and Tracked.

IoT means that everything from Home appliances, to construction equipment, to vehicles and buildings will transmit data and communicate with other objects or people. That means it is possible for everything to be measured and tracked at all times. Using Cloud-based apps and tools we can analyze, Monitor and Control everything. It is used to take better decisions and improvise outcomes.

Big data has already made waves in nearly every industry. Imagine every device collecting a huge amount of data for smart analysis.

 

2. Real-Time usage of Metrics.

IoT creates a massive amount of data that can be analyzed and used to take better decisions. For instance, imagine Google maps that collect data and analyze it in real-time to provide live traffic Updates.

With IoT, information is turned into action at an unprecedented speed. Not only will technology respond to data but will predict problems and take actions too. Constant monitoring can detect major issues and prevent them before it happens.
3. Actionable data will be shared.

All the data that IoT delivers will be shared among co-workers, stakeholders and other parties. For example, think how Google maps allow individuals to collect traffic data and share it with other users for providing an alternate route to avoid Congestion in traffic.
4. Industries will become interconnected.

The more communication among machines — the more connected they are — the more connected everyone will be to each other. Data won’t be siloed into one particular industry. It will be used across businesses and industries, fueling innovation.

For example, data from smart cars can help improve traffic, which can help to develop and improve smart cities, which can make energy use more efficient, and so on. The possibilities will be endless when machines, industries and people can connect and inspire improvements.

Posted on

The key differences between Python 2.x and Python 3.x with examples

Free-clip-art-thinkingMany novice Python users are wondering with which version of Python they should start. My answer to this question is usually something along the lines “just go with the version your favourite tutorial was written in, and check out the differences later on.”

But what if you are starting a new project and have the choice to pick? I would say there is currently no “right” or “wrong” as long as both Python 2.7.x and Python 3.x support the libraries that you are planning to use. However, it is worthwhile to have a look at the major differences between those two most popular versions of Python to avoid common pitfalls when writing the code for either one of them, or if you are planning to port your project. After looking at the differences if you are still not able to decide then this post might help.

What are the differences?

Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012, 3.4 in 2014, 3.5 in 2015, and 3.6 in 2016. This means that all recent standard library improvements, for example, are only available by default in Python 3.x.

Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than in the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.

Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, “range()” returns a memory efficient iterable, not a list as in 2.x).

The What’s New in Python 3.0 document provides a good overview of the major language changes and likely sources of incompatibility with existing Python 2.x code. Nick Coghlan (one of the CPython core developers) has also created a relatively extensive FAQ regarding the transition.

However, the broader Python ecosystem has amassed a significant amount of quality software over the years. The downside of breaking backwards compatibility in 3.x is that some of that software (especially in-house software in companies) still doesn’t work on 3.x yet.

Some syntax differences :-

Division operator

If we are porting our code or executing the python 3.x code in python 2.x, it can be dangerous if integer division changes go unnoticed (since it doesn’t raise any error). It is preferred to use the floating value (like 7.0/5 or 7/5.0) to get the expected result when porting our code.

print 7 / 5
print -7 / 5   
 
'''
Output in Python 2.x
1
-2
Output in Python 3.x :
1.4
-1.4
 
'''

print function
This is the most well known change. In this the print function in Python 2.x is replaced by print() function in Python 3.x,i.e, to print in Python 3.x an extra pair of parenthesis is required.

print 'Hello, Geeks'      # Python 3.x doesn't support
print('Hope You like these facts')
 
'''
Output in Python 2.x :
Hello, Geeks
Hope You like these facts
 
Output in Python 3.x :
File "a.py", line 1
    print 'Hello, Geeks'
                       ^
SyntaxError: invalid syntax
 
'''

As we can see, if we use parenthesis in python 2.x then there is no issue but if we don’t use parenthesis in python 3.x, we get SyntaxError.

Unicode
In Python 2, implicit str type is ASCII. But in Python 3.x implicit str type is Unicode.

print(type('default string '))
print(type(b'string with b '))
 
'''
Output in Python 2.x (Bytes is same as str)
<type 'str'>
<type 'str'>
 
Output in Python 3.x (Bytes and str are different)
<class 'str'>
<class 'bytes'>
'''

Python 2.x also supports Unicode

print(type('default string '))
print(type(u'string with b '))
 
'''
Output in Python 2.x (Unicode and str are different)
<type 'str'>
<type 'unicode'>
 
Output in Python 3.x (Unicode and str are same)
<class 'str'>
<class 'str'>
'''

xrange
xrange() of Python 2.x doesn’t exist in Python 3.x. In Python 2.x, range returns a list i.e. range(3) returns [0, 1, 2] while xrange returns a xrange object i. e., xrange(3) returns iterator object which work similar to Java iterator and generates number when needed.
If we need to iterate over the same sequence multiple times, we prefer range() as range provides a static list. xrange() reconstructs the sequence every time. xrange() doesn’t support slices and other list methods. The advantage of xrange() is, it saves memory when task is to iterate over a large range.

In Python 3.x, the range function now does what xrange does in Python 2.x, so to keep our code portable, we might want to stick to using range instead. So Python 3.x’s range function is xrange from Python 2.x.

for x in xrange(1, 5):
    print(x),
 
for x in range(1, 5):
    print(x),
 
'''
Output in Python 2.x
1 2 3 4 1 2 3 4
 
Output in Python 3.x
NameError: name 'xrange' is not defined
'''

Error Handling

try:
    trying_to_check_error
except NameError, err:
    print err, 'Error Caused'   # Would not work in Python 3.x
 
'''
Output in Python 2.x:
name 'trying_to_check_error' is not defined Error Caused
 
Output in Python 3.x :
File "a.py", line 3
    except NameError, err:
                    ^
SyntaxError: invalid syntax
'''
try:
     trying_to_check_error
except NameError as err: # 'as' is needed in Python 3.x
     print (err, 'Error Caused')
 
'''
Output in Python 2.x:
(NameError("name 'trying_to_check_error' is not defined",), 'Error Caused')
 
Output in Python 3.x :
name 'trying_to_check_error' is not defined Error Caused
'''

_future_module
This is basically not a difference between two version, but useful thing to mention here. The idea of __future__ module is to help in migration. We can use Python 3.x
If we are planning Python 3.x support in our 2.x code,we can ise_future_ imports it in our code.

For example, in below Python 2.x code, we use Python 3.x’s integer division behavior using __future__ module

# In below python 2.x code, division works
# same as Python 3.x because we use  __future__
from __future__ import division
 
print 7 / 5
print -7 / 5
''' output
1.4
-1.4
'''