Who am I?
Hello everyone! My name is Suhas Dissanayake, and I was born and raised in the beautiful island of Sri Lanka. Today, I want to share with you, a short story about me and how I started doing programming as a hobby. This is not a biography about me, I'm writing this article as an inspiration for anyone who'd like to start doing programming as a hobby.
The Spark of Curiosity
It all started in 2017, when I got a chance to visit a tech exhibition where I saw this cool piece of hardware called an Arduino. People were using that to do all sorts of different stuff, from making model traffic light systems to path finding robots. After returning home, I started watching YouTube videos and reading Instructables articles, which made me interested in making some Arduino projects myself.
Later that year, when the time came for me to decide a present for my birthday, all I could think was an Arduino. So, as you may have already guessed it, I got an arduino for my birthday. I still remember the excitement— the way I spent hours making LEDs blink, making robot arms out of ice cream sticks and cardboard and making line following robot cars. Arduino was my gateway into the world of programming. And since then programming became my hobby.
From arduino to Apps
As I delved deeper into arduino programming, I discovered this new software, an IDE called Processing. The interface was very similar to arduino. In fact the developers of Arduino leveraged the user-friendly design of the Processing IDE when creating their own software. And the language used by Processing was the same used by arduino.
With my current experience in Arduino language, it wasn't so long that I started making software with Processing. The best thing about Processing was the excitement that it brought. Unlike other programming languages that use a CLI to for input and output, Processing used a graphical user interface. Which made it really exiting for me as a new programmer. drawing colors, gradients, shapes and images on the screen was a really fun experience, specially because I could show my creations to everyone in my family without any hesitation.
Initially, I was interested in creating software using Processing to control my arduino circuits, or display their output in a visual format. For example, I could create a slider in Processing and use it to adjust the brightness of an LED, or change the angle of a robot arm.
Possibilities of Processing doesn't end there. I used it to create small desktop apps and mini games. And I even made some simple Android games with processing. My favorite one was an android app that shows you some fortune messages. In my opinion, Processing is a really good way to learn programming. Anyway, I think I better stop this fuss about processing now. Otherwise, I will end up writing a whole article about processing.
Web Adventures
Main issue I had with processing was the difficulty of sharing what I made with my friends. Since apps made with processing requires java runtime to run, it made it less practical to share the software I made with others. The easiest way to make something work on any device without any additional steps is to make it into a web site. This motivated me to learn some web development.
In search of a good web development tutorial, I came across W3 Schools. Without much hesitation I jumped straight into learn JavaScript. I know some of you may question my decision of learning JavaScript before learning HTML. Honestly, at that point I didn't know how websites work or what HTML or Javascript were. I just thought websites are built with JavaScript. After wasting a couple of weeks learning JavaScript, I was nowhere near making a website. All I could do was to make some text appear on button press, or display the current date and time.
Eventually I figured out that making websites require HTML knowledge. So as anyone would've done, I spent some time learning HTML on W3 schools website. I'm not going to lie, learning HTML that way felt like a never ending journey. Making a whole website from scratch is impossible, I thought. Then I proceeded to download a pre-made website template. Which really gave me some insight into how websites are made.
I tried experimenting with the downloaded template, changing titles, images the way I want. And, this is where I learned about CSS. CSS was used in that website to add colors, padding to buttons. Add borders to images, and much more. At this point, making websites became more interesting than creating desktop apps. Styling websites is way easier, and with the power of JavaScript I could make really interesting stuff. For example I made a meme website that fetch memes from reddit, and made a movie website that fetches torrents from a torrent API and play the torrent within the browser using webtor.io API. Best thing about making websites was that I could share my creations with my friends with ease.
JavaScript stuff
With the gained Javascript knowledge I wanted to try something different, running JavaScript outside of a web browser. Basically using tools like nodejs to make server side applications. Most interesting thing I've done with nodejs was making a Discord bot and a Telegram bot. When it comes to bots, the possibilities are only limited by your imagination. For example making a bot to add text on top of meme templates was a real tricky thing to do for an inexperienced programmer like me. but it was real fun at the same time.
Speaking of Discord, one infuriating thing about discord is the way they disable the use of emotes unless you pay for nitro. There was a discord mod called Better discord, which kinda solves the problem by grabbing the emote link and sending it when you click on an emote, which discord will display as an emote. However, better discord is a mod and I didn't feel like using it just for this functionality. That's when I decided to make a browser extension to do the same thing. I never expected that to be successful, but it worked way better than I expected.
Android adventures
Memerize, the meme website I made had some limitations. Especially on mobile devices. The video playback was terrible and downloading memes was a bad experience. This is when I decided to make it into an Android app.
It's not a secret that I had zero experience about Android app development. Even though I have made some Android apps using processing, I had no idea about native android development. Watching YouTube tutorials to learn a new programming language is not my preferred way of doing things. I prefer reading guides and code documentation to learn a new language, because It helps me learn something in my own phase. My go-to resource for learning Android is the Android Codelab.
After following the codelabs for Android networking, image loading and Data persistance using databases. I was able to successfully make Memerize into an android app. That's how I took my first steps in Android development. Without stopping there I started adding more features to the meme app. And also brought some of my other app ideas to life.
Making android apps have been a really good experience so far. Mainly because, there are a lot of people who are willing to use the apps I make. Also I was able to improve my apps and get inspiration by looking at other developer's work. Not only I was able to fix problems in my apps by looking at other developer's code, I was also able to find issues in there code and help them fix those issues.
Involvement in open source
I've had a GitHub account since the beginning, and I had all my projects hosted on github. I wasn't that into open source, and the main reason for using github was to keep my code there as a backup.
However, I got interested in open source after I started contributing to open source projects. My first contribution was fixing a small bug in Bnyro's RecordYou app. Honestly I felt a little nervous doing my first pull request. But everything turned out quite well. He was a very friendly person, and he accepted my pull request. So, it was the beginning of my journey as an open source contributor.
After that first pull request experience, I started contributing more to Bnyro's apps including RecordYou. Eventually, I became a regular contributor to his projects, and he asked me to join his team. So I did, and we started a new github organization called You Apps. Since then we've been working together real hard to make a really good suite of open source apps which are focused on providing a privacy protecting, user experience.
University days
And now, here I am —an engineering student at the University of Moratuwa, Waiting for the next adventure.