101

You cannot force passion, passion is a force

Journey 101 - Where it all begins (this is a bit of a read, but I hope it will be worth your time).

If you had told me this was where I would be a few years ago I probably wouldn't believe it. But looking back now at all that has happened, I wouldn't change a thing. A lot has happened in the past while, and I've been able to learn and do a lot since then.

The Past

Graduating from Secondary School was an awesome feeling (at least I get to have a break from school runs for a much longer while :)). I felt quite content with how my school story turned out, and I will always be grateful for it. However, this isn't about secondary school, it's about my story so far, because honestly speaking I wasn't a fan of coding in the beginning, so being able to make my own website (or even a website) and being able to work on these kinds of projects is not something I would've even dreamed or thought about.

So the question is, how did I get here?

In the beginning...

I've had multiple attempts at learning how to code since I got an iPad in primary school - funny enough I didn't start with Python, but Swift through this little fun app then called Swift Playgrounds. One issue I had back then was consistency - at first, it would be interesting and something worth the time, but then as concepts became more tricky and, more importantly, as time went on, I didn't feel the same vibe from when I started (and even though coding was fascinating and all then, I didn't like it). Eventually, I would abandon it, and such was the same story for the next few years — during this period I had attempted Swift and Java while it was still possible. This continued until my final year of secondary school.

So what was different this time?

Well apart from age and maturity, my mentality for this attempt changed quite a bit. One good way of being able to achieve a certain goal can be taken (funnily) from how villains in movies work (I know, probably not the example you were thinking). Whatever side you're on, great villains are some of the most determined people there are, and for one major reason — villains always have a goal they aim for, as well as what they plan on doing at the end of reaching that goal. Having goals isn't a new thing, but many goals, including mine back then, were vague. This time, I was able to set a clear goal to work towards — taking part in a coding competition.

In my final year in school, I signed up for two online coding competitions with some of my classmates despite not having good/serious coding experience. This was a very clear (and pretty deterministic) goal that had to be achieved at a certain time, and this helped provide the constant drive to learn how to code properly this time. This time, I learned C++ and I started from the ground up.

This was a very fun experience, and I finally started to like coding. The competitions came and left, but my coding journey didn't stop then. And now that I had finished secondary school, I could go full force into coding.

So what happened next

Coding became serious, big time. I was coding C and C++, trying out and practicing with Visual Studio, and just kept on developing my skills there.

At some point in time, I was pondering at home about some stuff that came to my head, and then I thought "Wait... I can code, so why don't I design this stuff using code". I didn't know how to do App Development, however, but of course, I wasn't afraid to learn. This was where most of my current thinking when it comes to coding started. At first, I designed an iOS app using Swift (SwiftUI) and XCode, and it took a while, but I was able to design it, and it worked very well. Since I didn't really go so much into the core basics of Swift or SwiftUI, and just jumped from one video or doc to the other, I didn't get a complete understanding, and this also led to ages of debugging errors I didn't understand.

My dad saw what I was up to, and suggested that instead of designing code for one platform, I should design for multiple platforms with something like Flutter. I thought and did my research well on it, then I went into working with Flutter (for me it was one of the best pieces of advice I have gotten when it comes to my software development journey because that's where I learned one of my favorite programming languages — Dart). This time, I learned from the struggle with designing the Swift App, and I learned Flutter the proper way and went ahead to make some cool stuff with it. I enjoyed using the Dart Language, as it fit my coding expressiveness well (not too static, not too dynamic — just right).

Dart became one of my favorite programming languages (alongside C++), and I did quite a lot with it. In summary, I was able to make a good number of packages with it (here's one for you to see), I created a web framework with it (and yes, I'm still working on it), and I also worked with the Dart team in my attempt in applying for the Google Summer of Code in 2024.

The other languages I was able to learn are:

  1. Python: Python is one language that I've had to use in a lot of cases. I started learning Python before C++ from multiple places, and I've been able to use it for projects ranging from Data Analysis to Scripting to Embedded Programming (Using Raspberry Pi and Pico).
  2. Go: Golang is a language that I like and not at the same time. It's good at what it does, but it's not something that you'll necessarily "have fun with" writing (and for good reason though). Golang was a language that oddly caught my eye and one that I learned after secondary school. It's been really helpful in many important real-world applications and also command-line applications.
  3. JavaScript: JavaScript is a language I use majorly when I need to, which is of course whenever I'm dealing with the web. This also doubles down with TypeScript, and I've made a lot of websites. I've tried a lot of web frameworks, but I think I still end up coming around to Vue and Nuxt at the moment (which is what this website is made with). One major highlight is this (pending) proposal to fix the Flutterwave vue library.

The Present

Well, I'm still coding of course. I've learned a lot over the past few months, and I've been able to use that to work on some pretty cool stuff.

Currently, I'm working on a few projects (be sure to look, as I will showcase them here on this blog) and, most importantly, two tools: Spurte and Scud You can check out more information, as well as "join in" on the projects in their respective GitHub links. It's not just about the work however, it's about the progress that I've been able to make for myself.

One thing that I feel makes me unique as a programmer is my drive. I make software to solve problems and drive innovation. Most of the projects I work on were built solely because I saw problems either in the industry/niche or in the tools and programming experience I have/work on. Take Spurte for instance: Dart has been an extremely great language for me to use, and I've enjoyed working with it. However, one of the things that led me towards learning JavaScript (and subsequently Web Development in full) was because I noticed that Dart lagged when it came to Web Development: It wasn't as good as it could be, and it has been a reason why Dart isn't used as much as it could (for instance, migrating code and styles from a website to a mobile app is, in my opinion, a reason why people find it easier to adopt and subsequently use React Native instead of Flutter). Because of this, I created spurte, to bridge the gap between JavaScript developers and Dart Developers, which can make it subsequently easier to work with Dart on the web and use JavaScript libraries in Dart projects.

Scud follows a similar thought process.

The Future

So what's next for the future?

Coding for me isn't going anywhere, and I'll continue to learn and improve more as I go on. I'll probably become much better and more mature in the coding space with time.

In the meantime, I'm focusing/delving more into Embedded Systems Programming. This doesn't mean that the other stuff I've done or learned will become obsolete, this just means that my main focus at the moment is in Embedded Systems Programming, most especially in C and C++ (could probably look at Zig for fun).

For now, that's the much I can think of, so you might want to subscribe to the blog via RSS to get any updates to the blog.

So what's the basic takeaway?

Well, there isn't just one takeaway, though:

  1. Great things take time, and it's one thing to embrace and understand that there are no shortcuts. I had started coding way back thinking there would be a shortcut to getting extremely good in coding like in movies, but there wasn't. Setting clear goals, and not just goals, is also important, as having a clear enough goal makes it more motivating than just having a vague goal ("I want to be a gamer" vs "I want to make an ultimate game that does A, B, and C and then be able to do D with the game").
  2. Many would say that coding is easy, but that genuinely depends on a lot of things (including how easily you can picture and absorb complex or abstract data). Coding has a very interesting learning curve, where just starting seems quite easy and enjoyable. But the moment you start to make real stuff, and real projects (you know, beyond "Hello, World!" on the command line), coding becomes quite difficult. People only usually see the first, easy part, and don't expect the hard, steep section of real coding. Making tools and libraries like databases, building tools, or even programming languages themselves are very very tedious jobs, and it's why you don't just see everyone making their own.
    However, it is not impossible (because people have done that), and so it requires a lot of patience, consistency, and discipline. Don't run from it, instead embrace it. You may not get to learn or make the stuff you want as fast as you want to, but you will be able to do them much better and understand how it works much more easily than it would be doing lots of vague trial and error or prompting ChatGPT (not like doing them would make it easier). Learn to know, and take your time to.
  3. I cannot emphasize how important the basics are: start from the ground up. If you want to learn how to make a website, you can always start by learning a framework like React or Vue, and if your goal is to make a basic website then that'll probably be fine. 3. However, when it comes time to make something just more than a normal website, it can become much more difficult to do when you don't know the basics of JavaScript. Learning from the basics not only gives you a true and deep understanding of how stuff works, but it also gives you the power to make anything of your own — you could even make your own React!

These takeaways are from personal experience, and from the much I have done so far.

Of course, there's a lot I'd want to say, but those will probably be for another blog post. What do you think?

To wrap

The blog is here to stay for the meantime and it will be where I'm going to talk about a lot of things ranging from showcasing new products or software I make, some interesting topics worth talking about, and more.

If you found this blog post interesting — first off thanks a lot — you can also subscribe to this blog via RSS on the blog page. You can also follow me on X, which helps (I guess).

If you like this and also like what I do, you can also sponsor via Patreon or by "buying me a coffee".

1 View