# #Day1: Qt is the chosen one!

Today I will start my journey with **#100daysofcode** challenge with [Qt](https://www.qt.io)!

![marvin-meyer-SYTO3xs06fU-unsplash.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1587143366399/OB23Xsmlf.jpeg)

Yes, I Am already in Qt but I will use this opportunity to refresh and learn more and document my journey to help others to learn Qt plus I will use it to improve my English writing!

![passionfit.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1587144024290/JLOC_5ILX.jpeg)

If you are new to learn programming languages, of course, you will find hundreds of recommended programming languages / Frameworks and tools to start with. My Advice just avoids all the programming languages holy wars and starts to choose the language which fits for your work/passion/interest and whatever gonna help you complete the required job!

No One should force you to choose but you can get to know why people using such a tool or language you may have the same reasons or goals.

**So let us start why I have chosen Qt!**

## Why Qt?

First of all, I did not study IT/Programming or computer science in general, I just started programming as a hobby to solve my issues and automate my Linux setup. 

![thinkoutofbox.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1587143759450/643PQ-eit.jpeg)

When I started using Linux the first time in 2006 started with [ubnutu](https://ubuntu.com), I could not find any Video Converter to convert my [Real Media Videos](http://www.real.com) from Windows to Linux, while of course [ffmpeg](https://www.ffmpeg.org) was there to help but in the terminal. So I started working on building a GUI Application for FFMPEG called [divx converter](https://code.google.com/archive/p/foxoman/wikis/DivXConverter.wiki) using [python](https://www.python.org) which was my first programming language to start with.

Later I shift to use [Linux Mint](https://www.linuxmint.com), And one of the things I created was the [APTSourcesManager](https://code.google.com/archive/p/foxoman/wikis/APTSourcesManager.wiki) using also python.

But later while using Linux at that time [rpm](https://en.wikipedia.org/wiki/RPM_Package_Manager) package was the most used package manager for a lot of commercial packages so I made a [Package Converter](http://code.google.com/p/foxoman/wiki/PackageConverter) to convert rpm to [debain Package](https://wiki.debian.org/deb) used in ubuntu and Linux mint, I used a new framework called [Real Basic](https://en.wikipedia.org/wiki/Xojo) which was Free in Linux at that time and I got the benefits of full Framework tools to use. And I have developed a few [other Applications](https://code.google.com/archive/p/foxoman/) with both Python and real-basic.

Later Real Basic changed the brand and not free anymore and python as it's too easy I just got tired to set the full development environment and choose the IDE and other tools, that's where I start looking for something new.

### What do I need in my new Programming Language / Framework?
- Full Framework has all the basic tools and modules like the IDE.
- Multi-Platform Support and that time mean the three desktop OS. ie: Linux, Windows and Mac OS.
- Low Level where I can go deep and help me to get to system tools and functions when needed.
- Free / Open Source where I do not have to fall to the same issue I had with REALbasic.
- Famous and widely used and good documentation.
- GUI and console application support.

**And here  I found Qt and start to learn it and use it as my primary DEV Framework Why?**
- Qt is a full framework for GUI / Network / Database / Graphics and so on.
- Qt is a multi-platform where it supports all Desktop OS's and Embedded and Mobile and soon the web!
- Qt is the C++ framework and adds more macros and modules which make C++ easy and enjoyable and that's what I will explain tomorrow.
- Qt is Free / Open Source and Protected by [Open Governance](https://wiki.qt.io/Qt_Project_Open_Governance) and is being used by KDE and a lot of open source applications.
- Qt is [Widely used by Many Big Companies](https://en.wikipedia.org/wiki/Category:Software_that_uses_Qt) and It has the best documentation and many [books](https://wiki.qt.io/Books).
- Qt Support Console Apps and GUI Apps using two Great Toolkits for Desktops and Mobiles!

***To understand the full history of Qt and what is the difference between it and C++ and how it developed please read those resources:***
- https://rtime.felk.cvut.cz/osp/prednasky/gui/the-qt-story/

- https://en.wikipedia.org/wiki/Qt_(software)

- https://www.kdab.com/qt-range-based-for-loops-and-structured-bindings/

We will be talking about those in detail in the coming days.
And by tomorrow I will start sharing my journey with Qt.

---
[![bymecoffe.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png)](https://www.buymeacoffee.com/foxoman)
 ***Thank you for your support!***
