Skip to content
Go back

It's a wrap

Table of Contents

Open Table of Contents

School

After 2 years at Algonquin College, I have finally finished. During this course I have learnt plenty of useful foundation knowledge in Java, Machine Learning, and Software Development Lifecycle.

My time at college did give me a better picture in proper server-side development and practices like TDD (Test driven development), enterprise architecture in Java and SDLC such as Agile.

I’ll be honest my greatest discovery was my interest towards Swift and Clojure, even though they were not part of the curriculum. I’ll talk about that in the later part of this post.

Internship and Co-op

I was fortunate enough to complete two internship terms. One was as a QA, where I unfortunately gained very little knowledge. The other, however, was as an almost-solo developer at a startup.

I remember that before starting at the startup, it was the only job posting I saw that required a sample project. The requirement was to build a full-stack application using Node.js and React with Role-Based Access Control (RBAC) and a MongoDB connection. By the time I found the post, there were only five days left; I finished everything in three days and was immediately contacted by the owner. I was glad to find a role that used a realistic, skill-based task—something most other job postings lacked.

In this role, I developed an SEO-friendly marketing page and a business web application connected to a Python serverless backend. At the time, I used “conventional” thinking and picked the most popular stacks: Astro for the marketing site and React Router v7 for the application. To be honest, picking React felt like a choice driven by self-imposed pressure; looking back, I should have considered libraries or frameworks like Angular or Svelte.

Given the business nature of the application, I now realize Angular would have been a better fit—it is SaaS-friendly, secure, structured, and reduces “choice fatigue.” This experience taught me that “popular” doesn’t always mean “better.” At least I avoided Next.js; just a few weeks after my co-op, several CVEs (Common Vulnerabilities and Exposures) were discovered in it.

After my internships, I was not retained by the startup. But I learned a great deal about what a SaaS company needs beyond its main product, such as knowledge-base websites and automation. I also discovered a world beyond TypeScript, despite having used it for years.

Clojure

Clojure entered my life because of Java. During my time at Algonquin College, most of my courses were Java-based. While I think Java has improved significantly, I found certain aspects dissatisfying: the “shackles” of heavy typing, the endless getters and setters, and a Stream API that felt difficult to use. These frustrations, combined with the YouTube algorithm, led me to Rich Hickey’s talks: Simple, made easy and Just use map. They truly struck a chord with me..

From there, I began my Clojure journey—starting with Advent of Code 2024 (Day 1), followed by Brave & True. Things finally started to click when I read Programming Clojure, followed by practice via Clojure Camp, 4everClojure and rich4clojure.

Believe me: Clojure is simple, but it isn’t easy. It took over six months to adopt the Clojure way of reading and thinking. It completely changed my mindset; I began to understand what “code is data” really means. I learned that by deeply understanding your input and output data structures, the algorithm to solve a problem often reveals itself.

Clojure also surprised me with its “tool user” mentality—the idea that you don’t need to reinvent the wheel when you can use Clojure syntax to leverage any library in the host runtime (JVM/JS). Few other languages can match that. Most importantly, my passion for Clojure helped me land an internship at a startup in Norway. I am looking forward to using more Clojure in the future.

Swift

I started learning Swift because of my genuine joy in using Apple products. For a long time, I had almost forgotten the reason I began programming in the first place: my goal to release a mobile app of my own.

For years, I worked with JavaScript and convinced myself that I liked web development. In reality, I was doing it because it was an easier path to finding a job. I want to stop lying to myself now. I don’t love the web; I love native applications.

I still remember using an iPhone 3G for the first time—watching the gyroscope roll dice and seeing magic tricks performed on a screen was mind-boggling. That spark stayed with me, even while I was distracted by the web ecosystem.

My chance to return to my roots finally came during my last term at Algonquin College. We had to choose a language for data manipulation and visualization. I originally considered Clojure, but I chose Swift instead. That decision reignited my passion for native development. Exploring SwiftUI, Swift, and the TabularData framework was an eye-opening experience. It gave me a sense of satisfaction I had never felt before, and I knew I had to go deeper.

From there, I applied for the Swift Mentorship Program. I was fortunate enough to be selected and began tinkering with an open-source project called swift-java—a library for interoperability between Java and Swift.

That contribution experience was unforgettable. I learned how to read complex codebases, write documentation, and even create video tutorials. While swift-java felt “out of my league” at first, it was the perfect start to my open-source journey. I am incredibly thankful to the maintainer,Konrad, for taking the time to guide me and review my pull requests.

And remember that original goal of mine? I finally achieved it. I have officially released my first iOS app: Cafflog:Save Your Best Brew! This is only the beginning of my journey as an iOS developer.

2026

I cannot control the economy, but I believe things will get better from here. I am not getting any younger, and I have already proven to myself that I can achieve my goals: I had a dream to be a head chef, and I did it. Now, my dream is to be a profitable software product owner. Swift and Clojure provide me with all the tools I need to be successful, and I can’t wait to use them more and more.

No matter what the future holds, my goal remains the same: to create products that are meaningful to my users. It doesn’t matter if it is a dish or a piece of software; I want to bring people joy and a sense of satisfaction. My products are far from perfect, but my goal for 2026 is to use my favorite tools to create and iterate on products that truly enrich my users’ lives.


Share this post on:

Previous Post
Start of 2026