I won’t be exaggerating when saying that my first week at Narbase was a very very fast paced learning experience. I’m actually used to self-learning, but the experience at Narbase was a different kind of self-learning. I knew I had to focus, unlike when learning for hobby programming, this is real! I knew I needed to acquire certain skills in order to do my job in the upcoming weeks.
Up and Running
On my first day as an intern, I was introduced to the company’s culture, what’s expected from us (interns) and how the internship will proceed in the next 3 months. The orientation didn’t take long, and we were instructed to learn about the frameworks the company use, and each intern got assigned to a project.
I was able to install Ktor (a framework for building servers) and I ran a few examples. Next I jumped into the quick start section in their website and started learning. My resources for learning were mainly the official documentation of Ktor (samples, tutorials, API reference).
This is not my first experience with servers development, so it was relatively easy to grasp the concepts around Ktor and get my self comfortable with it. I had experience with python backend programmer using Flask, and to transition from a dynamic language to a static language felt like a bit of a setback at the beginning, but later on, I got to feel the cons and pros of a static language. True that experimenting with python was way easier, due to lack of compilation step, but the errors provided by statically typed language is a tremendous help, and the compilation time wasn’t at all terrible, thanks to incremental builds.
I particularly liked some of the architecture design decisions in Ktor, the inner workings of the framework are an art in themselves. They allow for asynchronous servers building and framework extending in a painless way. I won’t go into details on how Ktor achieve that, but I will leave you a link that further explains the architecture of Ktor.
The Ktor framework is quite easy to get your head around, and it wasn’t long before I got productive in it, but backend development doesn’t stop at the server, we also need to deal with the database, and so comes Exposed.
Exposed is a lightweight SQL library written over the JDBC (Java DataBase Connectivity) that provides two layers of database access: typesafe SQL wrapping DSL (Domain Specific Language) which is great because of type support, and lightweight data access objects which facilitate the CRUD operations. You can think of Exposed as a high level DSL over SQL and a lightweight ORM (Object Relational Mapper) making it very powerful and easy to learn.
Learning Exposed was extremely easy, it took me about a day’s work to learn it, and the experience was smooth.
For a week’s progress, I was surprised by how much I had learned. Ktor is very easy to begin with and very intuitive, once you get used to it. Exposed is lightweight, and can be taught in a day. This combination makes for a delightful experience, and despite Kotlin as a language and Ktor as a framework being relatively new, the resources available for them is quite good.
This week, we will begin contributing to the project each was assigned to. I was assigned to Link project. A meeting was conducted to introduce us to our projects and what we will be doing.
Anyway, more about that in another post. Goodbye till then!