Tag: programming

The Most Valuable Programming Languages to Learn for IoT

With more objects becoming ‘smart’ and with more products being able to communicate with users with the help of Internet, it is becoming increasingly clear that programming for things is a new reality. Internet of Things, or IoT as it is popularly known, is spurring a new set of demands and targets for programmers. Developers are often left mystified about the nature of programming that is required for IoT and also the languages that are specifically required to program IoT applications. In the coming future, more objects and products will be connected to the internet to make interaction with users and data seamless and easy. With this in mind, it makes sense to look at some of the most important and useful programming languages that may help developers to develop applications and software for smart objects. What we need to remember is that while Internet of Things is a reality, it is still in a nascent stage. Most objects do not have the processing capacity that regular computers do. The computers or chips that are installed in these objects are quite basic, and they need very basic programming skills. What is C? C is a structured and procedural programming language widely used by programmers. C was originally developed by Dennis Ritchie between 1969 and 1973 at Bell Labs. It was first used to develop UNIX operating system. Today, it is used for developing operating system, compiler, network devices, assemblers, application software like database/ spreadsheets; computer and mobile games etc. Why C for IoT? Many IoT devices are embedded and have limitations like low computing power, low RAM and storage. Most embedded operating systems like Contiki, mbed, TinyOS etc support C.  C is highly efficient and you can tweak every part of the code to get the best performance out from an underpowered device. Therefore, it remains the first choice for constrained IoT devices and can be used to write the lowest layer of software, the layer closest to the hardware. It is simpler to complete complex tasks in C.  Moreover, many popular programming languages use C syntax. Finding developers with extensive experience in C is easy. The only limitation of C is its inadequate support to Graphical User Interface.  Nonetheless, its proximity to machine language makes it impressively fast.   Difficulty level C is a basic programming language and has been a reference point for many other languages. It is easy to learn, can create efficient programs, handle low-level activities and can be compiled on a variety of computer platforms.   C++ What is C++? C++ is an enhanced version of C language typically used for object-oriented programming.  It was designed to run large-scale applications, a limitation in C. C++ is widely used in embedded systems, GUI based applications, web browsers, operating systems with application across industries like healthcare, finance, defense etc. Why C++ for IoT? If IoT devices are expected to do complex tasks, C++ is chosen over C.  C++ comes with added abilities like data abstraction, classes and objects. C++ creates compact and faster runtime code. Line of code can be compiled into a couple of instructions leading to high runtime speeds and low energy consumption and is therefore suitable for writing IoT and embedded system code. According to C++ developer, Bjarne Stroustrup, there is still no other language that makes it better than C++ when it comes to specialized hardware to be used for Internet of Things. C++ is designed to handle both hardware and complexity simultaneously. It has apparent advantage of running seamlessly with systems with a few hundred kilobytes of memory. And there are not many languages that can work within such a framework. Difficulty level C++ is a relatively complex language to learn because it is designed to accomplish big and complex tasks. It may take years to master it. If you transition from learning C to C++, adaptability is faster.   Java What is Java? Java is a powerful programming language that enforces object-oriented programming model. It was developed by Sun Microsystems on the same lines as C/ C++, however it is simpler to run than C++. It can used to create applications run on single computer or distributed among servers. Java has wide-ranging applications including development of Android apps, server-side apps, Java web applications, software tools, trading applications, J2ME apps, big data technologies etc. Why Java for IoT? Java codes are portable and it is easy to move them to the smallest devices with the help of Java Virtual Machine. There is a lot of focus on Java SE Embedded today where classes can be eliminated leading to computing resource savings. Consequently, all communication goes through the network. Apart from that, Java has in-built capabilities like hardware support libraries thereby requiring bare minimum hardware dependency. Therefore, it is easy to control a device with a Java-written code. Java has huge potential for consumer IoT as well as industrial IoT.  It is not surprising that many experts consider Java to be the best language for IoT devices.   Difficulty level Java is one of the easiest languages to learn and is good for beginners. Once you understand its syntax, packages and frameworks, it is swift to learn.   Python What is Python? Python is a high level, object-oriented programming language. A general purpose language, Python works perfectly for backend web development, data analysis, artificial intelligence and scientific computing.  Developers also use it to build productivity tools, games and desktop apps. It is one of the fastest growing languages for embedded computing.   Why Python for IoT? Python is well-known for its writability, error reduction and readability. It is easily decipherable and its design is in line with today’s agile environment. With embedded algorithms becoming complex with the use of neural network and other heavily-involved processes, Python is just the right language for IoT projects.   Python can easily aggregate data coming from microcontrollers like Adruino, pass on commands, and display/log results in IoT projects. It is being used to interface with high-performance

Read More »
If Facebook Is Biased, Can We Trust Social Media At All?

If Facebook Is Biased, Can We Trust Social Media At All?

A few months ago, there was an uproar across the world when it was revealed that Facebook’s trending topics had a liberal slant. Former employees of Facebook admitted that sometimes they consciously suppressed conservative topics and ideas. This led to a backlash and an inquiry, for which Facebook responded by saying that most of the trends were neutral because they were chosen by an algorithm. That is quite true and we could possibly believe that. Facebook’s ad business runs on algorithms and it does not stand to benefit anything from suppressing topics or ideas from various political entities. On the other hand, questions need to be raised about algorithms themselves, and their place in our society. Algorithms are increasingly influencing what we read, what music we listen to, and how we choose things that we want to buy. In fact, more than the companies, it is the algorithms that they develop, which have control over suppressing or releasing information or trends. It is not possible to say whether they are developed to be biased or not. In fact, the chances are very high that an algorithm can have an in-built bias. On the other hand, algorithms are designed by programmers who do not understand the ramifications of what the algorithms will do. In other words, the real bias arises from the viewer or user, who sees what is displayed by the algorithm, and how he or she chooses to see it. [php snippet=1] What an algorithm does? When you listen to Apple Music, you might have noticed how it fetches certain genres of music, based on what you listened. Similarly, Facebook ads are shown depending on what you might have liked or said on Facebook. Facebook Trends on the other hand, depend on your location, and also on the algorithm which might see what’s worthy of being shown. It has been taught to deliver content that might be viral, argument-provoking, catchy and entertaining. This does not mean news and analysis that is not catchy or viral is not important. Here lies the problem with algorithms and all the artificial intelligence as we know them today. While inherently an algorithm is not biased, the way a programmer develops it may make it bring biased results. This is clearly the case with Facebook Trends. Coders and algorithms aren’t the problem Do we blame the developers of Facebook Trends then? Not at all. They only write codes. What we need to understand is, algorithms are not biased, and social media is not inherently flawed. What is flawed is the way we approach social media. Choosing other sources of information is also a good thing to do. If not that, one can always take the information we find on the internet with a pinch of salt. At least, it is not clear that Facebook isn’t biased, and we do not have to start distrusting social media. We just need to understand that certain qualities of content will likely be picked up by algorithms. Our constant endeavor must be to search for these qualities and use them while publishing content.

Read More »
Indian Programmers Need Nurturing, Not Arbitrary Judgments

Indian Programmers Need Nurturing, Not Arbitrary Judgments

A few weeks ago, Snapdeal cheerfully declared that “right programmers are rare in India” and the tech world went abuzz about how right or wrong that statement was. Javed Anwar, in an article published on the India Today, a leading Indian magazine, came to certain arbitrary conclusions that many faculty members in India with great CVs did not know even the basics of what they were teaching and that they also lacked insight about the implications of plagiarizing research. The author concluded that Snapdeal had to look for people from outside and that “that is the only way for it to grow”. How much of these conclusions are valid and how many of these claims are without biases and prejudices? If we scratched the surface, it is quite evident that a single company’s decision to recruit programmers from abroad does not say anything about the actual situation in hand. To begin with, some of the largest and most important companies of the world have recruited Indian programmers. For example, Zoho built its entire product team from the scratch in India. Whether in India or in the U.S. or just about any country in the world, what is truly important is nurturing talent where it is found, taking corporate culture seriously and shouldering industry responsibility. These factors can be religiously followed by companies who are in the game for long haul, as we do at Indus Net Technologies. Existing problems and possible solutions It is an often repeated attempt at humor that Indians first become engineers, and then proceed further toward planning their futures and careers. This is mostly because of affordable education because of which more people can access higher education even if they do not have passion for certain subjects. Moreover, software engineering has always been the surest ticket out of poverty, as The Atlantic magazine noted way back in October, 2013. In an insightful article titled “Behind the ‘Bad Indian Coder’”, The Atlantic discussed what is now being discussed post-Snapdeal fiasco – that Indian education system has failed its citizens. It is not the Indian programmers that lack skills but the way they are taught that makes them think in slightly different ways than their western counterparts. This includes rote-learning, lack of researching and Gestalt skills & an inability to be innovative even while they possess the talent. While overhauling Indian education system is going to take time, what really needs to be understood is that the responsibility of nurturing talent falls squarely upon Indian service providers. Indian IT companies that recruit these poorly paid programmers are often in a hurry to churn out codes rather than encourage real talent to grow from within organically. What really happens at the end of the day is, Indian programmers are fired by their Indian employers if they do not meet or achieve targets. Consequently, there is no real room for innovation or nurturing talent. The companies that really excel in India are those that actually take time to nurture their employees and sort of provide a second education. Indian companies that realize the problems are focusing more on polishing and nurturing their existing employees, instead of forcing them to produce code, just as they were forced to produce homework in school. Thankfully, companies that nurture talent, speak for themselves and their employees are in demand internationally, whether they are Indian or not. What do we do at Indus Net Technologies to nurture talent? If companies feel there is a dearth of quality programmers, it is often their own responsibility to train their employees and nurture existing talents. At Indus Net, we nurture skilled resources and use that as a differentiator from the persistent noise in the industry. With more than 550 talented employees in two distinct units, we are able to focus on encouraging each individual to achieve a sort of self-actualization in their professional field. Among the two groups, one focuses on SMBs and the other on the enterprise grade projects. We follow a protocol when it comes to quality bench-marking. This process involves training new recruits and allowing them to form internal teams & build something on their own, under the leadership and guidance of a seasoned project manager. The project manager ensures that skilled resources are individually trained and nurtured before they interact or start working on client projects. The process includes cross-cultural sensitization, technical skills, focus on innovation and creativity & honing one’s existing skills and talents. Indus Net Labs is one of our unique ways to encourage our employees to spend 20% of their time creating something on their own. This is inspired by Google’s similar projects. Some of the products that resulted from Indus Net Labs initiative are SocialFire (a WhatsApp for businesses and organizations), Mobileafs (a digital publishing solution) and InfraFix (an eGovernance and maintenance solution). Let us not be prejudiced and biased To say that Indian programmers are not talented is a prejudiced and biased way of looking at things, to the point of sounding colonial. What really is ailing today’s programmers is lack of opportunities to innovate and nurture their own talent. This can be made possible by following our example of allowing individuality, creativity and ideas to be nurtured. While there are certain cultural problems that seem to portray Indian programmers in an unfavorable light, the onus remains on companies to hire and nurture promising IT talent. With a keen sense of technology and already-existing English skills, Indian programmers can be groomed into world class professionals, just like we have been doing for several years at Indus Net Technologies.

Read More »

Introduction to Android OS

Until Android gained the wide spectrum of mobile consumers it has today, Apple’s iOS and BlackBerry OS were the major operating systems used to run Smartphones. In early 2012, one could safely conclude that Android has not only moved ahead of BlackBerry, but is also more widely used than iOS devices. Thus, app developers have a lot to gain if they learned how to develop applications for Android devices. Introducing Android Environment to App Developers Android is based on Linux V2.6 kernel and is a complete OS ecosystem. While initially it was meant to be a low-cost OS for smartphones and flip-phone devices, it has grown into a mobile OS juggernaut that has practically gobbled a huge market share. Android offers rich functional support and a full range of computing services which allow devices that run on Android to do much more than stripped down-versions of mobile operating systems. Android Can Play Both Ways: Consumer and Enterprise-centric Devices Android has the capacity to please both consumers who like to play and enterprise users who need a lot of work done efficiently and securely. The first smartphone to run on Android was G1, manufactured by HTC with T-Mobile serving as the carrier. The Android platform is much more complicated than iOS and features layered environment built upon Linux kernel. Android’s UI subsystem features windows, views and widgets for displaying drop-down lists, edit boxes etc. Faster Connectivity and Rich Graphics Android phones offer excellent connectivity options and there already are many Android-running smartphones that support LTE-4G networks. Thanks to the built in 2D and 3D graphics, playing video games and running media-rich applications are easier, when compared to other platforms which rely on text more than graphics. What One Needs to Know Before Development Developing Android applications requires knowledge of Java along with other software skills. Android applications run within the Dalvik Virtual Machine. Activities are begun when a user launches an application from the home screen or app launcher, thanks to the visible UI. Android also checks for updates and monitors your network as part of its services. Android can handle multi-tasking and switch between applications with relative ease. In order to develop Android applications one would need to download the Android SDK and the Eclipse IDE. One can use Linux, Windows or Mac computers to develop applications. Android Is Versatile Some of the advantages of the Android platforms are room for customization, rich features, security and ability to debug easily, and a complex and layered environment that allows innovation in development of applications. Android also runs on non-mobile household devices like ovens, Air-conditioners and even refrigerators for which applications can be developed. These Android apps can be used to control a device and the way it functions with the help of touchscreens. Android is increasingly being used on such household devices and when these devices connect to the Internet over Wi-Fi, they offer increased interaction and customizability. What Is Unique about Android OS While Android is Google’s flagship OS and is well received by enterprises and consumers, it lacks the simplicity, minimalist and intuitiveness offered by iOS 5. Nevertheless, being an open source OS, it is easier for developers to design applications for the Android ecosystem than for BlackBerry OS or for iOS. The very fact that an Android application which has just been developed cannot be reviewed by specialists leaves room for errors. Nevertheless, by sticking to well-accepted protocols and by adapting stringent quality controls, Android applications can prove to be more interactive and feature-rich than apps that run on other OS. Developing for Android Smartphones and Tablets As more people begun to replace their tablets, laptops and even desktops with smartphones, it becomes increasingly important for developers to have a presence on all the important mobile operating systems. Moreover, the tablet market is growing too, and applications designed for smartphones should be able to run on tablets as well. Android tablets have begun to carve out a niche for themselves, and many enterprise users have begun to use them too. Thus, app developers must keep both smartphones and tablets in mind. Thus, the future looks bright for Android developers as the market share of Android devices will only increase. Note: Indus Net Technologies Mobile Development team works on Android. If you want to develop an app from scratch or port an existing iOS or BlackBerry app to Android platform to take advantage of its explosive growth, drop us an email to info@indusnet.co.in or visit http://www.indusnet.co.in/mobile/

Read More »
MENU
CONTACT US

Let’s connect!

Loading form…

Almost there!

Download the report

    Privacy Policy.