It’s been a long time since I wrote a post. Here I am to share my experience with my chat application. So, let’s start with why I started learning programming.
Why?
Since I was young, I’ve always liked math and solving problems. When I was in 11th grade, my math teacher told me there were problems that require a computer to solve. I was so curious: what problems exactly? What do you mean by using a computer? He didn’t know exactly how it worked, but he showed me an example problem:
find the answer of sum of 2 numbers
Input:
1 2
Output:
3
I was like, “What? What do you mean? It’s obviously 3. Why do we need to use a computer for this? Isn’t that obvious?” I couldn’t understand the concept of input and output. That’s how I started to learn programming. It was fascinating, and I asked my teacher for some books to learn how to write code. I loved competitive programming from that point on and spent hours trying to solve problems. It was so fun.
When I was in my first year at university, I met my current teacher. I was so lucky to have teachers like him. I started learning engineering since then. Of course, I began with HTML, CSS, and some JavaScript, building interactive pages and using the canvas to create interesting things. Then I started learning about backend development and began studying Golang, web servers, and databases like MySQL. Learning was fun, but it wasn’t as exciting as solving problems. I learned a lot and built many things, but what I built wasn’t that complex. At some point, I really missed solving problems, but in real life, there are systems, tools, libraries, and frameworks that can do everything if you know how to use them. It became repetitive, and I got bored. I hadn’t worked on real-time applications yet, so I decided to create a chat application.
Beginning
I had a vision, but how could I build this? What language and database should I choose? What will it look like? Should I build everything from scratch? There were so many questions, and I discussed this idea with my teacher. He recommended using Erlang or Elixir. I read the documentation and started building my backend in Elixir because it can handle lots of concurrent processes. Everything was working fine, but at the same time, I had work and school, so my development process slowed down. In the beginning, it was fun, but as I progressed, I couldn’t keep my code clean due to my unfamiliarity with the language, and I started to get stressed. One day, I had the feeling that there were already many chat applications. Why do I need to build another one? The current ones are good enough, right? I had tried WebSockets and Elixir to some extent, so I questioned whether it was worth spending more time on it. That’s when I stopped. At that point, I had just a test Elixir project and one HTML page.
Idea
I couldn’t completely let go of the chat application idea. One day, I thought about an anonymous chat application, and I realized it could be fun and people might be interested in using it. I developed the idea further around the concept of anonymity, and that’s when I felt I had a fresh idea that would work. I decided to continue developing my chat application. The concept felt new, and I had a strong feeling it would be successful. I continued with Elixir, but my development process was slow due to work and school. I was eager to build my idea and show it to people, so I decided to switch to Golang for the backend since it’s the language I am most familiar with.
Conclusion
In the end, building my chat application has been a long journey full of ups and downs. From the initial curiosity about programming to the challenges I faced during development, it has been an exciting process. I’m glad I didn’t give up, and now I’m more motivated than ever to finish and share my project with others. I hope it can provide something new and fun for people to enjoy. I will write more about development process in the future.