My experience of Tinkerhub's Learning from Home Program
Tags: python, tinkerhub, flask, experience
Published: 2020-05-06 14:36:22

I was thinking how to start this blog and I thought let's start it from beginning how I get to know about **[Tinkerhub](https://tinkerhub.org/)** in first place. The actual thing is I also do not remember. But possibly I got to know about this in some Programming Community on Telegram. I saw it was a free and mentored program, and there were various courses like UI-UX, Web Development, Flutter, Python Beyond Basics, Basic Python. Usually, nobody do a free program like that and that too with mentors to guide. And there were so much to learn. So I quickly filled the form for 3 courses- UI-UX, Web Development, and Python Beyond Basics.

![Application mail screenshot](https://dev-to-uploads.s3.amazonaws.com/i/y3s73ah2hc1bv6q8tjbi.png)

So, here the real journey starts. Basically I have been doing python programming for 1.5+ years. I have practice Python OOPs concepts also. But I studied them from a student perspective. Now, for my application to be get selected for their program, they had a **Task** I had to finish. 

![Selection procedure screenshot](https://dev-to-uploads.s3.amazonaws.com/i/iscvahp7z8kw42oaaw1w.png)

What was special about this program?? It seems a basic program. But I just studied OOPs concepts. Never implemented them for some task before except my Minor Project. So it helped me with actually make a class, make its methods when only have a rough idea of what should they do. I explored for date time modules in python and what not to get this Course. In the end, I submitted a basic OOPs program and I felt *fun* and *happy*. In the past months, I never felt much happy coding but it felt like I was needed to code. But now I did it just for fun and to get this Course. This was a turning point of my coding journey. A person is getting interest just before they have been doing course only. Here is the code I submitted : https://github.com/thesparkvision/tinker_task/blob/master/task.py

![Application got selected screenshot](https://dev-to-uploads.s3.amazonaws.com/i/v0l47t03ig9ui33uhrwu.png)

Then, my application got selected. And it made me happy that this was the first time I have applied somewhere and did some task and I got selected. What was next? I installed Slack first time in my smartphone, learnt how to use that, joined up their channel for updates. It was fun to learn some app which is used in industry also for remote communication. After that, I have been constantly having one thing or other on that app (sounds like some data chain is there which is bringing me again and again to use Slack just like happens in Digital Targeted Ads)

First day, we had a general introduction session where everyone introduced themselves and mentors explained us what we are going to learn in this **Python Beyond Basics** Program. We setup our system. Earlier, I used to do my coding on Sublime, notepad or Python IDLE. I faced issues as a beginner with Pycharm, so hesitated to use it. Now, I saw the power of VSCode, since then using it. It has a pretty UI, going to be my friend in my Flutter journey:) I learnt using a debugger also on this only. I used to do manual debugging previously.

Day Two, we were introduced with the basics of web development with diagrams and stuff by our mentor. An awesome explanation. Then we moved towards making our first Flask app which is , you guessed right, a "Hello World" app. It was fun to see that some python code is returning some HTML text to be shown on a web page. Experienced how a client server model is working.

Day Three, we learnt more about decorators. Have read about them, but didn't know where they are used practically. Saw that and also learnt how to use templates. Used forms for filling data and sending to other page. The question one beginner in a programming language face is where this basic syntax will be useful. Used for loops and if else constructs to render content on the web page and felt good. It is only when we practically use things, we understand the important they were. Made me again confident that basics are important. Also learnt how to segment my code in pieces and modules so to make it easy for maintenance and for understanding.

Day Four, we learnt about databases and how to make Models and how to perform queries on data. They also shared a very useful blog which had a lot related with Flask. It was a good blog for learning more about databases.

Due to some issues, we had no more live sessions, but some videos were uploaded on Youtube to follow. And those 4 days had motivated us to learn Flask. We had our basics clear, we know how to find what we need to solve the problems, which is a most crucial in development. If you face some problem in implementing or doing something, find it how to do it and apply or integrate it with the code you currently have. What we say a duct-tape programmer, those who know how to fix stuff using any tool they get.

After some days, we were assigned some mentor and were asked to fill a form for making a project under the mentor's guidance by what we have learnt so far. We filled the form. We were given instructions on how to proceed like divide daily tasks of what you will do and try to follow along. Make System Flow diagrams so you and others can better vizualize what you are building and how different sections connect. Drawing diagrams with personal motivation was something new. (Yet I made a bad system flow diagram). Here I have included its pic :D

![System Flow Diagram](https://dev-to-uploads.s3.amazonaws.com/i/t8k3bsfikj28mdbyvh9q.png)

Then , slowly I started working on the project. I decided to make a Todo List App, nothing much fancier or unique. So I had an end goal. Now, question was how will I achieve this? First, I went over to Youtube and learnt some more stuff related with Flask. Earlier, I didn't do before this program because I didn't have an end goal in mind but now the urge to learn made me do it.

I made a home page. My web designing concepts were not so good. But I learnt for this project, how to make a header, how to make a footer, how to center my content. Then, I linked this page to my To-Do page. I learnt how to use DRY(Do Not Repeat) Principle. DRY Principle says that we should not repeat code again and again. Now, I had my header and footer ready and I wanted to use it in all my webpages just like normal sites do. So Flask provided Ninja template and including and extending templates to achieve this. Voila, I learnt something cool.

Then, I used classes and Models of Flask to design my database and migrate the SQL queries to SQLite. This was something new I did with classes and with a database. This was good. Then I had to make interface so I can add To-Do list from my web page in database and reflect them on web page. I learnt how to render data from database on web page using for loops and jinja syntax. Then, I created some form fields to take data and learnt through some tutorial how to get and post data. This was fun learning. Earlier, I only learnt them as theory.
I added update and delete fields. Did a bit of more styling and my project was ready. A basic web application using Flask. But it taught me about database, web technology concepts, experimentation with front end , back end and databases. 

I uploaded it to using git to my Github Profile, learnt about gunicorn server and making a Procfile and about webpack. I deployed my webpage to Heroku platform. This was my first live web app on some platform and able to see my application from any device I desire with a URL feels very nice. Here is the link for it http://todomasterapp.herokuapp.com/

Though it was small project, it was fun and development should be fun. Because of some other learning stuff, I didn't ask for help from mentors but I got regular calls and mails from Tinkerhub team asking about my project. They were very supportive in helping and solving queries.

This program made me more motivated towards web development. I used what I had learnt to participate in PAN India Online Hackathon. I always desired to participate in hackathon but felt I never had skills to do so. But this program and my learning made me confident and I succeeded in making a small project for the hackathon. I gained a very important lesson that we can almost learn anything we desire and project based learning is one of the best way to learn stuff. The more functionality you add to an application, the more you find out how the applications we use daily work and that is amazing.

Since then, I have been part of their community on Telegram and regularly some or other cool stuff I always find there. The community is very supportive. I am really thankful to [Tinkerhub](https://tinkerhub.org/) for bringing such an awesome course which helped not only me but many more students to learn and grow as a developer.

Thanks for reading :)