Monday, March 16, 2015

9 Facebook Features That You May Not Have Heard Of!

 Social networking giant, Facebook, has over billion of users worldwide. The site is being used for more than just chatting. Facebook has amazing apps such as Facebook chat, work, publishing tools that user can explore in many ways to gain fame and also connect with number of people who share same interest. Facebook policies are easy to understand too. Today we have listed top nine features of Facebook that you may be unaware of!




1. Audio Clips: 

Facebook has recently launched a new feature in Messenger app that automatically transcribe any audio file as voice recording and lets users listen to these audio clips. Users can even send voice recording by tapping the microphone icon in messenger. The tool listens to full audio clip and transcribes text version of audio message in short form.

2. FB@Work: 

Facebook at Work lets you create work account of Facebook. Users with work account can use Facebook tools to interact with co-workers. Users can customize the things that he wants to share with Work account. Employers can create separate login credentials for employees. Work accounts are visible only to workers of respective organisation. 

3. Warning: 

Facebook has started filtering videos that are shared with Facebook. The company has started blocking shocking and upsetting video clips from News Feed of users less than 18 years old. Facebook has started adding warning dialogue box on such videos. The company introduced this addition in November last year. Users can click on warning labels to start playing the video.

4. Photos: 

When a Facebook user posts photo using iOS or Android app, the pictures are automatically enhanced. The tool tweaks clarity, lighting and shadow of photos. The app edits the color filter of image as well. Those who don’t like auto enhancement, they can always toggle photo lighting option to edit the image.

5. Thanks: 

Facebook has introduced Thanks as an experimental feature. You can create Thanks video to express gratitude towards a friend. To say thanks, you need to choose a friend and edit photos and posts that were shared between two of you. Facebook also generates the preview of video, you can customize video with different theme too.

6. Facebook Publishing Tool: 

Those who want to promote posts on Facebook, the company has launched a new set of tools for publishing. Promoters get greater ability to target posts and promote content using these publishing tools. Publishing tools use Facebook’s data mine to create areas like locations, celebrities and sorts team to add to posts. Company has created this tool to encourage news publishers.

7. Mutual Friends Warning: 

If you send friend request to some unknown person who doesn't have any mutual friend with you, Facebook sends a warning dialogue box. A user should have at least 1 mutual friend before he/she can send a friend request. A user can confirm the warning and still send friend request but, if the receiver declines the request then user cannot send friend request to same person for 11-14 days.

8. Facebook App Rooms: 

Facebook has just released app rooms. This new app lets users connect with other people all over the world. You can participate in these rooms for discussions. You can invite your friends in the discussions. You can use different username and be part of discussions. Facebook room invitations can be sent through private invitation or by sending screenshot of discussion.

9. Facebook Save Feature: 

Save is a pretty neat feature of Facebook. It is similar to Pocket app. Whenever you see someone’s shared link in your news feed but if you are not free to read it at that time, you can add this link to read-it-later using Save feature. You can access your saved links from “Saved” on left-hand column. You can organize saved links in categories. The feature is limited to Facebook mobile apps. 






Courtesy:- Efytyms

Java ME 8 and the Internet of Things

Embedded systems are computer systems embedded into complete devices, whose dedicated functions reside within a larger mechanical or electrical system. Typically used in both industrial and consumer applications, embedded systems are entering the limelight with the Internet of Things (IoT). For developers just getting started with IoT, this article is a guide for learning more about the technologies that comprise Oracle's IoT platform: Java ME 8, Java ME Embedded, Java SE Embedded, and Java Embedded Suite.
In 1991, Mark Weiser, then head of Xerox's Palo Alto Research Center (PARC), attempted to capture the coming age of ubiquitous computing. Noting that "[t]he most profound technologies are those that disappear," Weiser described the various thought and technical experiments conducted by his colleagues at PARC, as they sought a new way of thinking about computers as embedded systems. Their vision, which might have seemed as fantastic as a hovercraft in 1991, is quickly becoming more commonplace today:
Sal awakens: she smells coffee. A few minutes ago her alarm clock, alerted by her restless rolling before waking, had quietly asked, "Coffee?," and she had mumbled, "Yes." "Yes" and "no" are the only words it knows [...]
At breakfast Sal reads the news. She still prefers the paper form, as do most people. She spots an interesting quote from a columnist in the business section. She wipes her pen over the newspaper's name, date, section, and page number and then circles the quote. The pen sends a message to the paper, which transmits the quote to her office [...]
Once Sal arrives at work, the foreview (in her car) helps her to quickly find a parking spot. As she walks into the building the machines in her office prepare to log her in ...
The embedded devices in Weiser's workday morning scenario use sensors to track a human user's interactions, and wireless connectivity to orchestrate a response: Sal's bed, alarm clock, and coffee maker are all connected to ensure that her first cup of coffee is underway before she rolls out of bed. For Weiser and his colleagues, this was calm computing; today we might call it the Internet of Things (IoT).

IoT overview

If there is one defining characteristic of IoT, it is interoperability, or the coordination of multiple devices. As observed in the above scenario, IoT uses sensors to collect data (in that case about Sal's interactions in her environment) and wireless connectivity to orchestrate a response. IoT is built on a confluence of technologies, including new and old hardware platforms, big data, cloud computing, and machine-to-machine (M2M) computing. APIs are the necessary glue, bringing all of these moving parts together.
Most importantly for Java developers, Java is key to many of the emerging IoT technologies already, and Oracle has committed to making Java a leading platform (if not the platform) for IoT. Java ME 8 breathes new life into Java's small device technology, extending it with a differentiated line of embedded Java platforms.
The next sections will introduce the technologies that comprise Oracle's IoT platform; follow the links to learn more about Java ME, Java ME 8, and the three embedded frameworks: Java ME Embedded, Java SE Embedded, and Java Embedded Suite.

Java ME

Java Micro Edition was originally intended to address the constraints associated with building applications for small devices. Based on Java SE, Java ME (or J2ME, as we knew it in 1999) was the platform for Java applications running on small devices with limited memory, display, and power capacity. Today it is used to develop embedded systems, ranging from industrial controls to mobile phones (especially feature phones), to set-top boxes and Blu-ray players.
Developers working in Java ME can choose from multiple configurations, profiles, and optional packages:
  • configuration provides the most basic set of libraries and virtual machine capabilities for a broad range of devices.
  • profile is a set of APIs that support a narrower range of devices.
  • An optional package is a set of technology-specific APIs. The Wireless Messaging API is one example. Check out Oracle's optional package primer to learn more about optional packages.

Configurations and profiles

In time two configurations have emerged: Connected Limited Device Configuration (CLDC) is the configuration for small devices, and Connected Device Configuration (CDC) is the configuration for more capable mobile devices such as smartphones and set-top boxes.
Java ME profiles sit on top of configurations, defining higher-level APIs of use to particular applications. Mobile Information Device Profile (MIDP), for instance, sits on top of CLDC and provides user interface, networking, and persistent storage APIs. Applications that run in a CLDC/MIDP environment (such as games) are known asMIDlets.
For CDC, there are three profiles, Foundation, Personal Basis, and Personal:
  • The Foundation Profile is a set of Java APIs tuned for low-footprint devices that have limited resources and don't need a graphical user interface (GUI).
  • The Personal Basis Profile is a superset of the Foundation Profile APIs and supports devices with lightweight GUI requirements. This profile comes with a framework for building lightweight GUI components and supports some Abstract Window Toolkit (AWT) classes.
  • The Personal Profile extends the Personal Basis Profile with a GUI toolkit based on the AWT. It provides a complete Java ME application environment with full AWT support and is intended for higher-end devices like PDAs, set-top boxes, game consoles, and so on.
Applications that run in a CDC/Foundation/Personal Basis/Personal environment (such as Blu-ray movie menus) are known as Xlets.

Java ME 8

In late 2012, Oracle embarked on an ambitious project to deliver a major update of the Java ME platform standard. Two Java Specification Requests (JSRs) were designed to meet current market requirements for embedded devices and prepare Java ME for future Java platform specifications: JSR 360 (CLDC 8), an evolutionary update to CLDC 1.1.1, would bring the virtual machine, Java language, and libraries up to date with Java SE 8. JSR 361 (Java ME Embedded Profile/MEEP 8) would updateInformation Module Profile - Next Generation (IMP-NG).

CLDC 8 and MEEP 8

CLDC 8 is based on JSR 139 (CLDC 1.1) and aligns the core Java ME virtual machine, language support, libraries, and other features with Java SE 8:
  • The virtual machine has been updated to comply with version 2 of the JVM specification.
  • Newer Java SE language features such as generics, assertions, annotations, and try-with-resources are now supported.
  • New libraries such as Collections, NIO subset, and Logging API subset are now supported.
  • A consolidated and enhanced Generic Connection Framework for multi-protocol I/O is supported.
MEEP 8 updates the original IMP-NG specification to provide a powerful and flexible application environment for small embedded Java platforms. The specification builds on CLDC 8 with the following features:
  • A new, lightweight component and services model
  • Shared libraries
  • Multi-application concurrency, inter-application communication, and event system
  • Application management
  • API optionality to address low-footprint use cases
MEEP 8 gives embedded application developers a modern application environment that facilitates developing and deploying embedded solutions that are modular, robust, sophisticated solutions that have been optimized for a wide range of use cases and devices.

Java Embedded

Java Embedded is an outgrowth of Java ME and Java SE, a suite of three platforms that specifically target embedded devices. Each of these products delivers a very specialized and optimized Java virtual machine and provides the means to update the installed software and services (for instance by using OSGi). Below I describe Java ME Embedded, Java SE Embedded, and the Java Embedded Suite.

Java ME Embedded

Java ME Embedded actually consists of two versions: Java ME Embedded and Java ME Embedded Client.
Java ME Embedded is a Java ME CLDC implementation that provides a robust and flexible application platform with dedicated embedded functionality for always-on, headless (meaning no graphics/user interface), and connected devices. System designers and developers can use Java ME Embedded to create sophisticated, small embedded solutions that leverage the benefits of the Java language, runtime, and ecosystem while meeting tight system resource targets. Oracle Java ME Embedded can be used by devices with less than one megabyte of memory.
Java ME Embedded Client is a Java ME CDC implementation that has been scaled down to fit the limitations of resource-constrained devices and optimized for low-to-mid-range embedded systems. Although this product offers a small footprint, it still provides most of the Java language and runtime features that Java developers know and are accustomed to with Java SE. Java ME Embedded Client can be used by devices with less than 10 megabytes of memory and no graphics.

Java SE Embedded

Java SE Embedded is a full-featured implementation of the Java SE platform that's been optimized for embedded systems. Version 8, the current latest release of this platform, includes the following features:
  • New Java SE 8 language features to improve developer productivity
  • Compact profiles and tools to create customized, space-optimized virtual machines
  • 50% better performance than previous versions thanks to Java SE 8
  • Great-looking GUI applications with GPU-accelerated JavaFX
  • Tools for detailed runtime monitoring and after-the-fact incident analysis
Note that Java SE Embedded 8 can be used by devices with a minimum of 11 megabytes of storage. Download Java SE Embedded 8 for ARM, Power Architecture, and x86 platforms.

Java Embedded Suite

Java Embedded Suite is the final offering in the Java Embedded family. This suite of tools adds enterprise-type features to the Java SE Embedded runtime, enabling applications to do the following:
  • Store data in a Java DB relational database.
  • Host GlassFish servlet-based Web applications, for example, to give secure remote access to device data and operations.
  • Host and access RESTful Web services with Oracle's Jersey implementation of the JAX-RS specification.
Essentially, Java Embedded Suite combines Java SE Embedded 7 (which provides a runtime for Java applications) with Java DB (which provides a database to store local content securely), GlassFish for Embedded Suite (which provides an application server for Web pages), Jersey Web Services Framework (for hosting and accessing Web services), and Event Processing for Java Embedded (which handles real-time event processing, and which is an optional component).
Download Java Embedded Suite for ARM or x86.

Conclusion

Oracle has positioned Java ME and related technologies to meet the challenges of developing for embedded devices, with IoT as its ultimate goal. This article presented a short primer on Java ME and then introduced you to Oracle's Java ME 8, Java ME Embedded, Java SE Embedded, and Java Embedded Suite products.
For programming tutorials and best practices that will help get you started with IoT fundamentals, visit the Java MEMIDP, and Embedded Java programming pages on JavaWorld. To learn more about Oracle's strategy for IoT and Java's place in this strategy, check out the various articles, videos, white papers, and brochures on theOracle Internet of Things information page.


This story, "Java ME 8 and the Internet of Things" was originally published by javaWorld.

Next up for Node.js: Going mobile

Node.js, known as a popular server-side JavaScript implementation, could become more prominent in the mobile space. 


The platform needs to expand its horizons in mobile, according to Node.js maintainer Burt Belder. "It's an identity question," Belder said when interviewed after his HTML5DevConf presentation on Node.js this week in San Francisco. "The question is more like, do you want to be a server-side-only thing, or do you want to do world domination?"
Although Google's Android platform interoperates with Node.js to some degree now, users are reporting bugs and saying it doesn't work, said Belder, who added that the Android implementation is not maintained as part of the core server-side Node.js. He remains undaunted, saying Node.js could even end up ported to Apple's iOS mobile OS. "Supporting all devices adds a lot of value to the platform," he noted.
Tools provider Nubisa is focused on this, with its JXCore multithreaded Node.js distribution serving as the underpinnings of the Nubisa native mobile application development platform. Node.js also works on the Raspberry Pi development board, Belder noted.
But a key proponent of PHP, popular in server-side Web development, questioned the worth of Node.js on mobile devices. "I don't see the benefit of moving Node.js to the client side," Andi Gutmans, CEO of PHP tools vendor Zend Technologies, said in an email. "You have client-side JavaScript, which is tailored for client-side logic. Node.js is really an adaptation of JavaScript to the server side, and I don't think there's much value for it on the client side -- unless I am missing something."
Belder claims that the core Node.js platform will move to a multithreaded model. "The language, JavaScript, it's not possible to run it on multiple threads," he noted. However, multiple JavaScript VMs can be run in one Node.js process. "Your program loads multiple times within the same application. But it lets us internally do much more efficient things, for example, dispatch incoming connections to different workers."
Node.js has been the subject of forking talk recently. Joyent, the steward of Node.js announced its advisory board intended to provide more community input and satisfy developers unhappy with Node.js's evolution process. "In the past year or so, the community has been increasingly unhappy about a very slow release schedule," Belder said, but a major forking would result in "two parallel efforts that try to build the same product."
This story, "Next up for Node.js: Going mobile" was originally published by InfoWorld.

Java vs. Node.js: An epic battle for developer mind share

In the history of computing, 1995 was a crazy time. First Java appeared, then close on its heels came JavaScript. The names made them seem like conjoined twins newly detached, but they couldn't be more different. One of them compiled and statically typed; the other interpreted and dynamically typed. That's only the beginning of the technical differences between these two wildly distinct languages that have since shifted onto a collision course of sorts, thanks to Node.js.


If you’re old enough to have been around back then, you might remember Java’s early, epic peak. It left the labs, and its hype meter pinned. Everyone saw it as a revolution that would stop at nothing less than a total takeover of computing. That prediction ended up being only partially correct. Today, Java dominates Android phones, enterprise computing, and some embedded worlds like Blu-ray disks.
For all its success, though, Java never established much traction on the desktop or in the browser. People touted the power of applets and Java-based tools, but gunk always glitched up these combinations. Servers became Java’s sweet spot.
Meanwhile, what programmers initially mistook as the dumb twin has come into its own. Sure, JavaScript tagged along for a few years as HTML and the Web pulled a Borg on the world. But that changed with AJAX. Suddenly, the dumb twin had power.
Then Node.js was spawned, turning developers’ heads with its speed. Not only was JavaScript faster on the server than anyone had expected, but it was often faster than Java and other options. Its steady diet of small, quick, endless requests for data have since made Node.js more common, as Web pages have grown more dynamic.
While it may have been unthinkable 20 years ago, the quasi-twins are now locked in a battle for control of the programming world. On one side are the deep foundations of solid engineering and architecture. On the other side are simplicity and ubiquity. Will the old-school compiler-driven world of Java hold its ground, or will the speed and flexibility of Node.js help JavaScript continue to gobble up everything in its path?

Where Java wins: Rock-solid foundation

I can hear the developers laughing. Some may even be dying of heart failure. Yes, Java has glitches and bugs, but relatively speaking, it's the Rock of Gibraltar. The same faith in Node.js is many years off. In fact, it may be decades before the JavaScript crew writes nearly as many regression tests as Sun/Oracle developed to test the Java Virtual Machine. When you boot up a JVM, you get 20 years of experience from a solid curator determined to dominate the enterprise server. When you start up JavaScript, you get the work of an often cantankerous coalition that sometimes wants to collaborate and sometimes wants to use the JavaScript standard to launch passive-aggressive attacks.

Where Node wins: Ubiquity

Thanks to Node.js, JavaScript finds a home on the server and in the browser. Code you write for one will more than likely run the same way on both. Nothing is guaranteed in life, but this is as close as it gets in the computer business. It's much easier to stick with JavaScript for both sides of the client/server divide than it is to write something once in Java and again in JavaScript, which you would likely need to do if you decided to move business logic you wrote in Java for the server to the browser. Or maybe the boss will insist that the logic you built for the browser be moved to the server. In either direction, Node.js and JavaScript make it much easier to migrate code.

Where Java wins: Better IDEs

Java developers have Eclipse, NetBeans, or IntelliJ, three top-notch tools that are well-integrated with debuggers, decompilers, and servers. Each has years of development, dedicated users, and solid ecosystems filled with plug-ins.
Meanwhile, most Node.js developers type words into the command line and code into their favorite text editor. Some use Eclipse or Visual Studio, both of which support Node.js. Of course, the surge of interest in Node.js means new tools are arriving, some of which, like IBM’s Node-RED offer intriguing approaches, but they're still a long way from being as complete as Eclipse. WebStorm, for instance, is a solid commercial tool from JetBrains, linking in many command-line build tools.
Of course, if you're looking for an IDE that edits and juggles tools, the new tools that support Node.js are good enough. But if you ask your IDE to let you edit while you operate on the running source code like a heart surgeon slices open a chest, well, Java tools are much more powerful. It's all there, and it's all local.

Where Node wins: Build process simplified by using same language

Complicated build tools like Ant and Maven have revolutionized Java programming. But there's only one issue. You write the specification in XML, a data format that wasn't designed to support programming logic. Sure, it's relatively easy to express branching with nested tags, but there's still something annoying about switching gears from Java to XML merely to build something.

Where Java wins: Remote debugging

Java boasts incredible tools for monitoring clusters of machines. There are deep hooks into the JVM and elaborate profiling tools to help identify bottlenecks and failures. The Java enterprise stack runs some of the most sophisticated servers on the planet, and the companies that use those servers have demanded the very best in telemetry. All of these monitoring and debugging tools are quite mature and ready for you to deploy.

Where Node wins: Database queries

Queries for some of the newer databases, like CouchDB, are written in JavaScript. Mixing Node.js and CouchDB requires no gear-shifting, let alone any need to remember syntax differences.
Meanwhile, many Java developers use SQL. Even when they use the Java DB (formerly Derby), a database written in Java for Java developers, they write their queries in SQL. You would think they would simply call Java methods, but you’d be wrong. You have to write your database code in SQL, then let Derby parse the SQL. It's a nice language, but it's completely different and many development teams need different people to write SQL and Java.

Where Java wins: Libraries

There is a huge collection of libraries available in Java, and they offer some of the most serious work around. Text indexing tools like Lucene and computer vision toolkits like OpenCV are two examples of great open source projects that are ready to be the foundation of a serious project. There are plenty of libraries written in JavaScript and some of them are amazing, but the depth and quality of the Java code base is superior.

Where Node wins: JSON

When databases spit out answers, Java goes to elaborate lengths to turn the results into Java objects. Developers will argue for hours about POJO mappings, Hibernate, and other tools. Configuring them can take hours or even days. Eventually, the Java code gets Java objects after all of the conversion.
Many Web services and databases return data in JSON, a natural part of JavaScript. The format is now so common and useful that many Java developers use the JSON formats, so a number of good JSON parsers are available as Java libraries as well. But JSON is part of the foundation of JavaScript. You don't need libraries. It's all there and ready to go.

Where Java wins: Solid engineering

It's a bit hard to quantify, but many of the complex packages for serious scientific work are written in Java because Java has strong mathematical foundations. Sun spent a long time sweating the details of the utility classes and it shows. There are BigIntegers, elaborate IO routines, and complex Date code with implementations of both Gregorian and Julian calendars.
JavaScript is fine for simple tasks, but there’s plenty of confusion in the guts. One easy way to see this is in JavaScript’s three different results for functions that don't have answers: undefinedNaN, and null. Which is right? Well, each has its role -- one of which is to drive programmers nuts trying to keep them straight. Issues about the weirder corners of the language rarely cause problems for simple form work, but they don't feel like a good foundation for complex mathematical and type work.

Where Node wins: Speed

People love to praise the speed of Node.js. The data comes in and the answers come out like lightning. Node.js doesn't mess around with setting up separate threads with all of the locking headaches. There's no overhead to slow down anything. You write simple code and Node.js takes the right step as quickly as possible.
This praise comes with a caveat. Your Node.js code better be simple and it better work correctly. If it deadlocks, the entire server could lock up. Operating system developers have pulled their hair out creating safety nets that can withstand programming mistakes, but Node.js throws away these nets.

Where Java wins: Threads

Fast code is great, but it's usually more important that it be correct. Here is where Java’s extra features make sense.
Java's Web servers are multithreaded. Creating multiple threads may take time and memory, but it pays off. If one thread deadlocks, the others continue. If one thread requires longer computation, the other threads aren’t starved for attention (usually).
If one Node.js request runs too slowly, everything slows down. There's only one thread in Node.js, and it will get to your event when it's good and ready. It may look superfast, but underneath it uses the same architecture as a one-window post office in the week before Christmas.
There have been decades of work devoted to building smart operating systems that can juggle many different processes at the same time. Why go back in time to the ’60s when computers could handle only one thread?

Where Node wins: Momentum

Yes, all of our grandparents' lessons about thrift are true. Waste not; want not. It can be painful to watch Silicon Valley’s foolish devotion to the “new” and “disruptive,” but sometimes cleaning out the cruft makes the most sense. Yes, Java can keep up, but there's old code everywhere. Sure, Java has new IO routines, but it also has old IO routines. Plenty of applet and util classes can get in the way.

Where both win: Cross-compiling from one to the other

The debate whether to use Java or Node.js on your servers can and will go on for years. As opposed to most debates, however, we can have it both ways. Java can be cross-compiled into JavaScript. Google does this frequently with Google Web Toolkit, and some of its most popular websites have Java code running in them -- Java that was translated into JavaScript.
There's a path in the other direction, too. JavaScript engines like Rhino run JavaScript inside your Java application where you can link to it. If you're really ambitious, you can link in Google’s V8 engine.
Voilà. All of the code can link to each other harmoniously and you don't need to choose.
This story, "Java vs. Node.js: An epic battle for developer mind share" was originally published by InfoWorld.

10 Programming Languages That You Must Know

  Job segment for programmers is growing with every passing day. According to a survey done by US Bureau of Labour Statistics, the sector has grown by 8 per cent in last seven years. The average income of programmer has become $300 per hour. If you are aiming to get a job as a programmer or a software engineer, you need to develop overall knowledge of certain programming languages. Today, we have listed top 10 programming languages that you must know in order to get a better IT job.
IT jobs, programmer, programming job, software job, java, javascript, C#, PHP, C++, Python, C, SQL, Ruby, R, objective C, top 10 programming languages.



1. Java

Java is one of the most popular programming languages. Java is widely used for modern enterprise backend. Java and frameworks are based on Java are widely used for variety of applications. Java is also used for the development of native Android apps for smartphones and tablets.

2. JavaScript

Every modern website uses JavaScript for the front-end development. It is a go-to language which can be manipulated to create interactivity of your site, or build user interface for smartphone apps. You can leverage from number of available JavaScript frameworks for the development.

3. C#

C# is one of the oldest and most fundamental programming language. It is primary language for all products on Microsoft technologies platform. If you are building modern web apps using Azure or .NET apps for Windows devices, C# is the most basic language that you must know.

4. PHP

PHP is widely used for back-end programming of websites and databases. PHP powers majority of today’s data driven websites. It is the foundation of most powerful content management systems like WordPress and Drupal. You can use these PHP based tools to extend your site to make it more powerful. In today’s world, you must know PHP to get job as programmer.

5. C++

C++ is similar to C. It is low level programming language. Knowledge of C++ is very important when it comes to connecting your application directly to hardware to get most out of processing power. C++ is user preferred choice for developing powerful desktop software, hardware accelerated games and memory intensive apps.

6. Python

Python is most robust web programming language. You can use Python for web apps, user interfaces, data analysis and statistics. You can use number of Python frameworks to develop web related products in Python. It is a key tool for data scientists to shift through giant size of data sets for any industry.

7. C

The reason that C is still popular and used is because it is small, fast and powerful. C comes very handy while building software for embedded systems and kernels. The knowledge of C is very important because you can use all resources of C in development of app or software that requires hardware support.

8. SQL

SQL is used as backend database for website, web apps and other database related software products. SQL gives ability to find exact information you want in fast and reliable way. You can easily query and extract meaning information from large and complex database using SQL.

9. Ruby

Ruby and Ruby on Rails are two amazing frameworks to develop web app in efficient way. You can use Ruby language to develop prototype of idea for web app in fastest way. Ruby is used in development of tons of popular web apps around the world. The language has straight forward approach and it is very easy to learn.

10. R

R is the fundamental language of Big Data. With the increasing size of Big Data, R is most essential language for data analysts. R is the most important language that you must learn for statistical analysis of nearly every field of interest. 

We all will be coders: Don't fear the future of software development

Software development is unrecognizable from what it was 20 years ago, and in 10 years it will be completely different again. Soon all new hires, regardless of their role, will know how to code, and as we all know, robots are capable of increasingly complex functions that threaten jobs in previously unheard of ways.


But, against this doom-and-gloom outlook, I'm here to tell you software developers everywhere: don't worry. Our craft and our jobs are going to be OK. Here's why.
First, a bit of background: the U.K. has introduced coding into the national school curriculum, the first G20 country to take this step. This means that in 10 years, all school graduates in the U.K. will know how to code. In the U.S., organizations like Code.Org are trying to encourage the same results through programs like the Hour of Code. I believe that more and more countries will adopt these programs, which will forever change the software development industry.
The fact that, in the future, all new hires will know how to code, is important. But does this mean they will all be software developers? Of course not. What this means is that the user of the future will be more educated in software technologies, and thus will expect (or demand) more from the software they use everyday at home or at work.
The user of the future will demand customization, and they will increasingly be able to do the customization themselves. This isn't just about changing the color of a button or the font of the text. I'm talking about adding new fields to a form, validations, changing or adding new workflow routing rules, or even integrating with other applications. The coding knowledge of the future generation will be mostly used to code configuration of the software applications of the future, as opposed to the development of new software applications by everyone.
If an application is not customizable, future users will quickly look for alternatives, or for hacks that may compromise the integrity and security of an app that is too rigidly built.
Fellow software developers, if we want our craft to flourish we need to provide the future generation with applications that will benefit from a user that knows how to code. Why should adding a new field to a form in a business application involve so much custom code and database changes? Why can't a user just add a new field without having to involve IT or change a business rule without the need of BPEL? Why can't a user decide how to validate a field? After all, the user usually knows more about the business needs and requirements than the software developer.   
This is an opportunity for the development of new frameworks and tools that allow software developers to easily incorporate customization into their applications. The most successful applications of the future will be the ones that offer configuration and customization to its users. There will be no market for rigid applications.
Software developers: the software development industry will not die because everyone knows how to code. A lot of people know how to cook and I don't see the restaurant industry disappearing anytime soon.
What will happen is that the next generation of users will be the most demanding in the history of software. Regular users will now understand how software applications are built and will demand a quality user experience, and customization that have never been expected before.
The user reality of the future will demand a new breed of software developer: one that can design to the requirements of the uber user, the user that can code.
This story, "We all will be coders: Don't fear the future of software development" was originally published by InfoWorld.