This is my first time writing a blog post. So It'll be good if I started with my story.
Note: I'm not a good blogger yet. Please share your ideas on how can I improve
I'm a student when I'm writing this. My first experience with programming was awesome - I actually found programming accidently. All of the thanks go to my school's ICT society. I first learned HTML and Java from that place. My curiosity increased with the new things I can do with the things I learned there. So I followed some online tutorials in addition to learn more.
There I found a platform called 'Sololearn' where many developers around the world connected together for learnig, coding, helping and playing. My experience with that community was awesome. I participated for many coding challenges there and improved my skills and reputation gradually. With the help of the app and community I learned many new languages such as JS, HTML, CSS, C#, C++, Ruby, Python, Swift, Kotlin, R etc.
There are lots of stories for each new thing I learned. First I wanted to become a ML guy. I committed several weeks for just learning the math basics, but all vanished off as my parents wanted me to do study other things. As a result, I decided to code again as usual.
One day I found about git and github in sololearn. I was not interested in that much, but I used it because many recommended using it. Using them I've done many useful projects, for example
- Morse Code Converter
- Farming Game
- Mars Rover Simulator
I was coding for a new project called 'TFM My Tribe' - a tribe management app for a game called transformice. As a result I addicted to play games again. Bug this changed many things in my life. With the experience I gained from previous projects and VCS, I become more active in Github!
I discovered many projects and studied them. Their project structure was so different than mine. Why are they making it too complex when things could be done more simply? My curiosity increased; so I studied them deeply. Well - nothing found specially.
While I'm blindly searching for new unknown things, somebody hosted an AMA in sololearn. That's how I hard about CI/CD pipelines. I did more research on them.
After about 2 months, I found something common in all repositories in github. It's the 'build status' badge. I wondered what is that. Again after many experiments, I found tht, it was the thing we call CI.
I also wanted to include a nice-looking 'build' badge in my repos. So I decided to find one in Github marketplace. My first choice was to use Azure Pipelines. It was good though I couldn't understand it completely.
The first project I intergrated CI was my tribe manager. Actually there was no workflows defined, but I got the nice-looking badge I was searching for 😄
After a few days I realized Azure is slow to load and hard to catch up. Alongside many were using Travis CI - just another CI tool. So I moved from Azure to that slowly.
At the same time I created a new project called 'Colorlab-JS'. Hopefully, that project improved me a lot. That was the project I introduced testing frameworks to myself. I wrote some tests with
mocha and added them to run with the CI - this was the first time I used the CI more productively.
While I was progressing, Github introduced Github actions - another CI tool. I wanted everything under one place. So I quickly switched to actions. It was easier and thought me lots of the YAML syntx used in workflows.
After a week of hard work, I automated all the tests and deployments. At that time I found another pretty badge in popular repos - the coverage badge. Coverage is the best tool I met because it states how good are our tests. silly I didn't understood this earlier. Creating coverage reports were not as easy as I thought before. I wasted a whole week without proper guidance. Hopefully, I managed to create coverage reports with 'Istanbul' and uploaded them to 'codecov'. I scored more than 75% in my first run. It was fun! But with the time, I had to abandon 'Colorlab' project. Although it gave rise to a new hope vested with tfm. As I started to log into tfm again, I wanted to develop modules again for it as I did before. My friend Overjoy (Jacub - real name) gave me an idea for a module. That was the birth of the TFM Clicker game. With a little help of him I released the 1st version of my module and got traffic faster and many stars in Github. I learned project management a lot from that projectt.
My next idea was to add linecharts to the clicker to create stock market environment. Within 2-3 days I developed and released 'LineChart-TFM' for that purpose. I did a great task with CI in that project. All the things related with minifying and docs were automated by CI.
At that time, Overjoy was developing another project and he need a good timer library. So I developed and released a better timer library within a week with a good use of CI.
Eventhough I'm using my CI, I felt that I'm not using it for some mandatory tasks. That was testing and coverage reports. I cannot use TFM API out of tfm. So I decided to create a new environment for tfm modulese for development and testing. I named that project 'Module-API-TFM'. I could use the CI for many things in that project including testing and uploading coverage reports. I haven't done anything with docs yet, but I'm working on it currently. That means the story ends
Thanks a lot for reading my first blog post. Include your ideas and suggestion below