Wednesday, 29 January 2020

Deepfake (Deep Fake AI)


What is Deep Fake ?

Deep Fake is a AI based technique to create convincing image , audio and video hoaxes . Here a person in an existing image or video is replaced with  others using Artificial Neural Network based machine learning techniques like auto encoders and generative adversarial networks(GANs).  
The content of Deep Fake is created by using two competing AI algorithms :
1. Generator : For Creating the Phoney multimedia content
2.Discriminator : To determine whether the content is real or artificial. 


Friday, 3 January 2020

The Programming Languages Alphabet

Source : https://opensourceforu.com/2020/01/the-programming-languages-alphabet/


There is a veritable alphabet soup of the starting letters of names of programming languages. The author sifts through this assortment to find the most significant programming language to represent each letter of the alphabet.
Very often, we restrict our discussions on programming languages to popular ones like Python, C, C++, Java, etc. We fail to acknowledge that there are literally thousands of programming languages out there. In this article, I try to highlight the abundance of options by listing them alphabetically. So we are going to have, ‘A for Ada, B for BASIC …’ and so on. While choosing a particular programming language, I have considered the factors of popularity, the existence of an open source compiler and historical significance. Remember that any tool that is Turing complete can be called a programming language, thus making even C++ Templates and C Preprocessor programming languages, broadly speaking.
A for Ada
For the first letter of the alphabet I have ALGOL, AWK, AppleScript and Ada as contenders. ALGOL is one of the earliest programming languages but it no longer is widely used professionally, while AppleScript is solely used with macOS. AWK is a text processing language which is losing its war with Perl, another text processing language.
Ada is a programming language that supports both imperative and object-oriented programming paradigms, with safety and security as the main concerns. GNAT is an open source compiler for Ada which is part of the GNU Compiler Collections (GCC). Ada has the support of a small but stable developer community. The programming language Ada is named after Ada Lovelace, the daughter of Lord Byron (famous English poet). Ada Lovelace is considered a pioneer in computer programming for her work with Charles Babbage while trying to develop his unfinished yet famous Analytical Engine. Even though I have selected Ada, do remember that assembly languages are very important in programming but it is not single programming language; rather, they are a family of programming languages.
B for BASIC
There are programming languages called B and BCPL which influenced the development of the C programming language, which makes them rather important. But for the letter B, I chose BASIC (Beginner’s All-purpose Symbolic Instruction Code). BASIC has influenced a lot of other programming languages like Visual Basic, VB.NET, etc. But the single largest contribution of BASIC is that for the first time people with no scientific background could start to program, by using it.
C for C
This is one letter where the number of influential programming languages is very high. There are programming languages like C++, C#, Clojure, COBOL, etc. But here the choice is obvious – it is none other than C, which was originally developed in 1972 by Dennis Ritchie at Bell Labs. Even after almost 50 years of existence, C is still widely used professionally as well as in academia. So, justifying the choice of C is unnecessary.
D for Dart
There is a programming language called D, heavily influenced by C++. But my choice is Dart, an open source, object-oriented programming language developed by Google, and released under the BSD license. Dart was featured as a promising programming language in an article in Open Source For You. Please visit https://opensourceforu.com/2019/03/yet-another-top-ten-list-of-popular-programming-languages/.
E for Erlang
Erlang is an open source programming language developed by Ericsson and is licensed under the Apache license 2.0. Erlang is a functional programming language. There are also other options like Eiffel and Elixir. Eiffel is an objected-oriented programming language, whereas Elixir is a functional programming language heavily influenced by Erlang itself. Since Erlang has recent stable releases, I have chosen it over Elixir. As an aside, there is an open source programming language called Ezhil, which uses the Tamil script for writing programs.
F for Fortran
There are programming languages called F, F#, FoxPro, etc, but Fortran is my choice for representing the letter F. It is the oldest programming language chosen in this article, yet it has had a stable release in the past one year. Fortran was originally used for scientific and numeric computing. GFortran is the Fortran compiler provided by GCC, making Fortran a truly open source programming language.
G for Go
Go (also called Golang) is developed by Google. It is a popular programming language that features in the top ten list of many rankings. Go is similar to C, but with added features for security and garbage collection. Go has multiple open source compilers with BSD licences. There is no other programming language starting with the letter G worth mentioning other than Groovy, which is an object-oriented programming language heavily influenced by Java.
H for Haskell
Haskell is a functional programming language that was developed in 1990. The Glasgow Haskell Compiler (GHC) is a popular open source compiler for Haskell released under the New BSD licence. Haskell figures relatively high in many rankings. The Hindawi Programming System is a collection of open source programming languages that use Hindi, Bengali and Gujarati scripts for writing programs.
I for Icon
There are hardly any significant programming languages starting with this letter. I have chosen Icon, a dynamic programming language influenced by SNOBOL, which is much older. But so far, this is the only letter in our programming languages alphabet the removal of which will not affect the programming world much.
J for Java
The letter J in our programming language alphabet is definitely reserved for Java. The quote, “You can love me or hate me but you can’t ignore me,” is absolutely true for Java. Appreciative or critical, no real programmer can ignore Java. I don’t think I need to justify my choice and so I rest my case. But JavaScript is also worth an honourable mention. JavaScript is an interpreted scripting language which is a permanent member in the Top Ten lists of most rankings.
K for Kotlin
Kotlin is a relatively new programming language. Its development started in 2011 but it is gaining popularity. Kotlin is a statically typed programming language that runs over the Java virtual machine, and is widely used for Android app development. Kotlin is released under the Apache licence. Since Korn shell is Turing complete, it is worth an honourable mention.
L for Lisp
An electrical engineer might have chosen LabVIEW, a system-design platform and development environment, for the letter L. But I think Lisp, being the original functional programming language, should represent the letter L. Lisp is one of the oldest surviving high level programming languages. But do remember that it is not a single programming language; instead, there are a number of dialects like Clojure, Racket, Scheme, etc, for Lisp. Lua, a multi-paradigm programming language, is also worth mentioning here.
M for MATLAB
The letter M is for Maple, Magma, MATLAB, Maxima and Mathematica — the programming languages and mathematical software used to support serious mathematics rather than, say, finding the sum of two small integers and displaying the result on a Web page. Even though Maxima is open source software, I have chosen MATLAB, a proprietary commercial software. I believe the widespread use of MATLAB justifies its selection. M is also the letter that reminds us about machine languages and all the pioneers who wrote programs on punched cards.
N for NASM
N is another letter in this sequence whose removal will not affect the programming community much. Netwide Assembler (NASM), an assembler and disassembler for the Intel x86 architecture, is my choice here. NASM is Turing complete; hence, it can be considered a programming language. It is released under the BSD licence.
O for Objective-C
Objective-C is an object-oriented programming language that has compilers implemented by both Clang and GCC. It is included as one of the Top Ten programming languages in the Open Source For You article mentioned earlier. Objective-C is supported by Apple for the development of macOS and iOS applications. Ocaml, a multi-paradigm programming language, and Octave, a programming language for numerical computations, are two runners-up for representing the letter O.
P for Python
P is another rich letter in our programming languages alphabet but yet again, the choice was simple — it is none other than Python. Python is an interpreted general-purpose programming language. In this era of artificial intelligence and machine learning, Python is the golden child in the family of programming languages. Applications in a wide variety of fields make Python absolutely important. But in this category, there are also other important programming languages worth mentioning. Pascal is an important procedural programming language developed in 1970. Perl is a general-purpose, interpreted, dynamic programming language often used for text processing. PHP is a general-purpose programming language most often used for Web development, while Prolog, a logic programming language associated with AI, is also worth mentioning.
Q for Q#
The choice for the letter Q is Q#, a programming language released by Microsoft for developing quantum algorithms. Q# is the newest programming language included in our list, with the first release coming in December 2017. It is influenced by both C# and F#. Recently, we have heard that Google achieved quantum supremacy and hence will make quantum computers a reality in the near future, hopefully. So, it is possible that Q# or similar programming languages will play a pivotal role in the programming world in the not-so-distant future. The other two programming languages in this category worth mentioning are QtScript and QBasic.
R for R
Choosing the language for the alphabet ‘R’ was also relatively easy. R is yet another Top Ten ranked programming language that features in almost all rankings. R is a programming language and free software environment for statistical computing. Since Big Data and data mining are very popular nowadays, the popularity of R seems to be rising. Ruby, an interpreted general-purpose programming language, and Rust, a multi-paradigm system programming language, are also worth mentioning in this category.
S for Swift
S is another rich letter in the programming languages alphabet but here again the choice was simple; it is Swift. To my surprise I found out that there is also a parallel scripting language called Swift but the one I’m referring to is a general-purpose, multi-paradigm, programming language developed by Apple Inc. This, too, is ranked among the Top Ten in most rankings. Currently, Swift is released under Apache License 2.0 making it an open source programming language. There are a number of other programming languages in this category that are worth mentioning. Scala is a general-purpose functional programming language. Scilab is a numerical computational package and numerical programming language. Scratch is a visual programming language for teaching children programming. SQL (Structured Query Language) is a programming language used for relational database management. Simula and Smalltalk may not be relevant today but they have influenced the development of programming languages like C++, Java, etc.
T for TypeScript
TypeScript is an open source programming language released under Apache License 2.0 and is developed by Microsoft. It has the syntax and all the features of JavaScript, with some additional features like static typing. TypeScript has been gaining popularity in recent years. In the Open Source For You article mentioned earlier, TypeScript has been included as a promising programming language. Tcl (Tool Command Language), an interpreted dynamic programming language is also worth a mention in this category.
U for Umple
This letter too doesn’t have much to offer. But for the sake of completion, Umple represents the letter U in our alphabet. Umple is an object-oriented programming language used for modelling with class diagrams and state diagrams. It was first released in 2008, with the latest stable release in 2018. But do remember that the UNIX shell being Turing complete qualifies as a programming language.
V for Verilog
Consider any decent programming language that has some followers and prefix the term with the word ‘visual’ and you will get a new programming language! I am not joking – we have Visual Basic, Visual Basic.NET, Visual C++, Visual FoxPro, and many more as proof. In spite of this vast choice, I prefer VHDL (Very High Speed Integrated Circuit Hardware Description Language) or Verilog, both hardware description languages. My description of hardware, often limited to the price, made the choice very difficult. A cursory glance over a few articles made me believe that Verilog leads the race between the two marginally and hence the choice. But I will be very happy to switch sides if somebody could convince me why VHDL is better than Verilog.
W for Wolfram Language
Wolfram language is yet another proprietary commercial programming language in our list. But I believe I am justified in my choice because the other programming languages in this category have hardly made any impact in the programming world. Wolfram Language is a multi-paradigm programming language developed by Wolfram Research, and is the programming language of the mathematical symbolic computation program Mathematica.
X for XOTcl
My ns-2 (network simulator-2) simulation days made me choose XOTcl from an otherwise insignificant list of programming languages. XOTcl is an object-oriented extension for the Tool Command Language (Tcl). XOTcl is used for topology generation in ns-2.
Y for Yorick
Y is the least promising letter in our programming languages alphabet. Yoix, a dynamic programming language and Yorick, an interpreted programming language designed for numeric and scientific computing, are the only contenders in this category. I have chosen Yorick over Yoix because its latest stable release was four years ago, compared to seven years for Yorick.
Z for Zsh
Z is another letter with no significant programming languages in the list. But since any tool that is Turing complete qualifies as a programming language, I am nominating Z Shell (Zsh). Z shell is an interactive login shell and a command interpreter for UNIX shell scripting. In the latest major release for Apple Macintosh computers, macOS Catalina has Zsh as the shell instead of Bash.
The selection of a particular programming language is based a lot on personal preferences of the author but efforts have been made to mention all the significant programming languages. To my knowledge there are programming languages named B, C, D, E, F, J, K, P, Q, R, S and T but many of them are old or obscure with no practical use. I will be happy if somebody could point out the programming languages I may have missed in this list. Careful analysis tells us that C, J, M, P, R and S are the most important letters in our programming languages alphabet. As a fun fact, there are programming languages named after animals (Pig, Python and Cobra), places (Java), famous people (Ada, Babbage, Bertrand, Orwell and Pascal), things (Boomerang, Dart and Ruby), etc. But apart from all this fun, our programming languages alphabet clearly tells us that the options are unlimited when it comes to building applications and a career.


emotional intelligence (EI)

Emotional intelligence (EI) is the area of cognitive ability that facilitates interpersonal behavior. The term emotional intelligence was popularized in 1995 by psychologist and behavioral science journalist Dr. Daniel Goleman in his book, Emotional Intelligence.


Dr. Goleman described emotional intelligence as a person's ability to manage his feelings so that those feelings are expressed appropriately and effectively. According to Goleman, emotional intelligence is the largest single predictor of success in the workplace.

Five components of emotional intelligence

In his book, Goleman presents five categories of emotional intelligence.
Self-awareness. A person has a healthy sense of emotional intelligence self-awareness if they understand their own strengths and weaknesses, as well as how their actions affect others. A person with emotional self-awareness is usually receptive to, and able to learn from, constructive criticism more than one who doesn't have emotional self-awareness.
Self-regulation. A person with a high emotional intelligence has the ability to exercise restraint and control when expressing their emotions.
Motivation. People with high emotional intelligence are self-motivated, resilient and driven by an inner ambition rather than being influenced by outside forces, such as money or prestige.
Empathy. An empathetic person has compassion and is able to connect with other people on an emotional level, helping them respond genuinely to other people's concerns.
Social skills. People who are emotionally intelligent are able to build trust with other people, and are able to quickly gain respect from the people they meet.

Emotional intelligence in the workplace

Employers consider employees' and job candidates' emotional intelligence when making human resource-related decisions.
For example, human resource staff and hiring managers often ask specific questions to determine emotional intelligence during the hiring process to decide which candidates will best fit in with the company culture.
They also consider emotional intelligence when determining leadership potential and when pay raises are being considered for employees. A person in a leadership position with high emotional intelligence could also be particularly skilled at motivating their teams and maintaining their overall job satisfaction.
Job candidates' listening skills and strong communication abilities have become highly sought after across industries, particularly for those seeking leadership positions. For example, soft skills for potential information technology executives, such as CIOs, have become important assets in recent years. Those in technology-centric leadership positions are asked to present to boards and communicate with other departments, as IT has become inherent to the overall success of modern, digitized companies.
In addition to listening and communicating well, several other traits consistent with high emotional intelligence are sought after by employers in the modern, globalized economy. Being able to adapt to rapidly changing work environments, to work well in teams and to self-manage are characteristics companies are looking for in an emotionally intelligent employee that will thrive in a business environment.

How to measure or test emotional intelligence

Dr. Goleman and other social scientists have promoted the concept of an emotional intelligence quotient (EQ) test to serve as a counterpart to more traditional intelligence quotient (IQ) tests. While a traditional IQ test seeks to evaluate an individual's ability to learn new information, an emotional intelligence test seeks to evaluate an individual's capacity to deal successfully with others. To that end, EQ test questions focus on assessing soft skills, such as self-awareness, social awareness, relationship management and empathy.
    Although Goleman's theories have been influential, they have not gone without criticism. Several of his peers have claimed that, among other things, Dr. Goleman's research has not been sufficiently rigorous.     Research has also found that emotionally intelligent people can use their skills for personal gain. A research team led by University College London professor Martin Kilduff, for example, found that emotional intelligence helps people disguise their real emotions to benefit their own agenda. Another study led by the University of Toronto psychologist Stéphane Côté found that people with high emotional intelligence used their skills to manipulate others in the workplace.
    Most critics agree, however, that the concept of emotional intelligence is a valid one because human intellect is complex, and it's simply not possible for one type of emotional intelligence test to provide an accurate assessment of a person's ability to be successful.

Activation function in Neural network

Back Propagation in Neural Network

Explained In A Minute: Neural Networks

Machine Learning for Flappy Bird using Neural Network & Genetic Algorithm

Neural Networks Explained - Machine Learning Tutorial for Beginners