“Decorators” in Python

One of most powerful and advanced features of “Object-Oriented Programming” in python, is “Decorators”. But before you dive in to the decorator’s topic, you need to know somethings in advance. For C++ and Java programmers, functions inside of functions is weird and unfamiliar, but python supports creating functions inside of functions and a function can have an argument which is a function itself! Please don’t mess it up with recursion. In recursion (which is supported by C++ and java as well), same function is called inside of definition of function, but in python you can define a new function inside a function (like a wrapper function), and return of your function could be a function. This is so beautiful feature and makes a great tool for professional programmers to write codes.

Continue reading ““Decorators” in Python”

“MODERN PHYSICS” vs “CLASSICAL PHYSICS”!

Classical physics is well known because of works of Newton in “Mechanics” and famous Maxwell equations of “electromagnetism” and also Kepler’s laws of “Planetary Motion”. These works all had done before 20th century, starting by Kepler’s famous laws in 17th century. There is a stage between classical physics and modern physics which is not completely belong neither to classical physics and nor to modern physics. This stage is “Statistical Mechanics” and represents new definition for temperature and rearranges the “Thermodynamics Laws” by statistical point of view. These works mainly had done by “Boltzmann” and Maxwell and Others.

Continue reading ““MODERN PHYSICS” vs “CLASSICAL PHYSICS”!”

How to become an “Electrical Engineer” without going to university?!!

Nowadays, by vast development in internet use and internet speed worldwide, online platforms are growing exponentially. E-learning is part of this growth which makes learning, very easy and efficient. I remember when I was student 15 years ago, there was no famous e-learning platform among students and there were just some video tutorials in some special topics in DVDs or CDs and we could buy them and learn a topic. For other topics, we had to just read books or e-books, but as today, you can find lots of video tutorials in almost any topic in online platforms like Coursera, Udemy, Lynda and etc. In my native language (Farsi), there also are some powerful online platform which provide e-learning services and I am pretty sure that in other languages, online platforms do exist.

Continue reading “How to become an “Electrical Engineer” without going to university?!!”

How “Open Source Software” Developers take advantage of their works?!

This always is a question that developers or freelancers who work in “free” and “open source projects”, how take advantage from their works. Below, I mention couple of sources that they could make money.

1- First of all, in recent years, freelancing websites are growing fast and freelancers could take projects from there and make some money. Imagine that couple of freelancers claimed to do a project. You think who will win the competition and take the project??!! Of course project owners prefer to out-source projects to someone who has a portfolio with some open source project.

Continue reading “How “Open Source Software” Developers take advantage of their works?!”

What is “DevOps”?

As my strategy in previous articles, I try to explain any topic in the simplest way. So, let’s start with an example. You heard a lot about automated systems in factories. For example a juice producing factory which produce tens or hundreds million juice a day, can’t hire couple thousands of people to make this juices and packaging them. Off course they need an automation system in factory to do this repetitive daily jobs for them.

Now, imagine you are building a software which its users are couple hundred or couple thousand person. For this purpose, maybe couple of developer can make it happen by collaborating with each other. But imagine you are developing a software which its users are couple million and sometime billion persons worldwide (like Microsoft office or adobe Photoshop or even operating systems like windows and etc) and also couple hundred developer work on this project to build the software. Does the previous traditional methods work in this scenario??!! Maybe yes, but in very slowest way.

Continue reading “What is “DevOps”?”

What is “Computer Vision”?

The word “Computer Vision” or “Machine Vision”, refers to when a computer or machine can see a thing almost as a human see. The computer vision is different from CC Cameras (Close-Circuit Camera), because CC Camera just streams the objects to Monitor, but in computer vision, computer (by some algorithms) can interpret the objects in stream and for example can detect faces or humans or animals in pictures or videos or even in online video streams. First technologies for computer vision, appeared in early 2000’s. The OpenCV almost was the first popular tool for computer vision which created by “Intel” Corporation, in 2000. The first Algorithms for object detection was the “Viola Jones Algorithm” which invented in 2001 by Paul Viola and Michael Jones. This algorithm is based on “Haar like features” and it estimates any important feature of an object by a Haar like shape and if an object in a picture or video, has all of this Haar like features, then that is our desired object. A sliding window with specified size (which is customized by programmer), starts from top left of image or video and it moves to right after each step and then to down after end of the row. Each window that has our desired object will be covered by a colored rectangle in image or video. “Haar like features” and “Sliding Window” are shown in below pictures.

Continue reading “What is “Computer Vision”?”

What is “Deep Learning”?

After talking about “Machine Learning” in my previous article, this time I want to talk about “Deep Learning” which is a hot topic in AI world in recent years. Deep learning is a subset of Neural Networks and Neural Network itself is a subset of Machine Learning. In below diagram, you can find how this topics are related to each other.

Continue reading “What is “Deep Learning”?”

What is “Machine Learning”?

Maybe you heard a lot the word “Machine Learning” in news and articles in recent years and wonder to know what it exactly is. Machine learning is a subset of “Artificial Intelligence” and it refers to the ways a machine can learn something. Before talking about machine learning, it is good to think about, “How a human learns”? Imagine you are walking in a street and you see a lot of stores and shopping centers and etc. Next time, because you learned this street has lots of stores, you go there for shopping. If you didn’t walk in this street and nobody told you about this street, have you any idea this street has stores or not?! That’s exactly the way we learn: by providing related info about a subject somehow. If we want a machine to learn something, we should provide a lot of related info to machine and expect the machine to predict the new thing which is related to info we already provided to machine.

Continue reading “What is “Machine Learning”?”

What is Big Data?

The word “Big Data”, is almost self-explanatory and easily can be inferred it is related to a huge amount of data. But, it usually applies when we are talking in IT industry and more specifically in web technologies. The most famous users of “big data” technologies, can be guessed easily. That’s right: The search engines like Google and Bing. It is good to know that almost there are just this 2 search engines and other famous websites which have search engine (like yahoo.com or msn.com or etc), just use one of these two search engines. In this article, I want to talk about commercial technologies which used in “Big Data” industry.

Continue reading “What is Big Data?”

A Comparison between 8 Most Popular Programming Languages

According to most of statics from reliable sources, we can name 8 most popular programming languages, as below:

Python, JavaScript, C++, C#, Java, Ruby, PhP and Objective C

There are some more programming languages like “Swift”, which is mostly designed for iOS mobile applications and is popular well, but at this point, I don’t talk about it.

Continue reading “A Comparison between 8 Most Popular Programming Languages”