Home TIWIL IV
Post
Cancel

TIWIL IV

Welcome to TWIL IV TIWIL IV

It’s been a while… I was quite convined that these posts would have a weekly cadence, but it seems my life had a different definition of the word weekly. So on that note, I have decided to change the name to TIWIL, which obviously stands for this is what I learned! Another little change is the usage of Roman numerals instead of basic numbers. This is simply to make the blog seem :sparkle: spicy :sparkle:.

In this edition we will explore a replacement for an old classic as well as the importance of starting a project correctly.

Micronaut

First a little back story! In my 3rd year we were assigned a group project where we had to make use a selected tech stack (the more complex the stack, the higher the multiplier) to develop something. This something had requirements; such as user login, database writing / reading, geolocation data and much more. I joined a team led by a master’s student. The sole reason we were allowed to combine forces with him, was that we had a much more detailed spec for the same marks as the rest of the class. I saw this as a great challenge and was highly anticipated!

Skipping over a few details, we ended up writing an app using Flutter for our frontend and Java with Springboot for our backend. I developed a fondness for Springboot, as it was easy, efficient (for our usecase) and easy to learn!

Fast forward to the present – I am busy writing (yet) another app and had to choose a backend. I decided on a Kotlin base framework as this isn’t 2021 anymore! All of these micro-decisions has lead me to Micronaut.

Micronaut is a JVM based framework used for building backend applications. Some of its main features (stolen from its home page) include:

  • Compatible with Java, Kotlin1 and Groovy.
  • Built-in cloud support including discovery services, distributed tracing, and cloud runtimes.
  • Quick configuration of your favorite data-access layer and the APIs to write your own.
  • Easy learning curve.
  • Fast and easy unit testing
  • Provides a simple, compile-time, aspect-oriented programming API that does not use reflection.2
  • Support for OpenAPI and Swagger.
  • Low startup time and memory footprint.

All of this sounds amazing, but you might be wondering why not use anything else. You will be very pleased to know that the answer to this wonderful question is short, simple and sophisticated. The answer being:

The home page of their website says Minecraft uses it.

Ps. See a future post if I actually did end up using any of those above features or if something else caught my interminable curiosty.

Project planning and management

As mentioned earlier in this post, I am writing yet another app! This means I will jump in programming, love it, get stuck, enjoy it less, work on it less, dislike it and eventually it fizzles out, as is often the case in software development!

To avoid following the path of least resistance I started with some introspection. This enabled me to realise that the reason all these projects fail is because I have a million ideas and thoughts but not a clear plan of how to implement these ideas. So I have decided to start the new project with the correct approach.

I have decided to use a Github Project with the Kanbam style. This will include “Todo” issues which can be moved to either “In Progress” or “Done”. This will help me keep track of what I was working on, what still needs to be done and what I have completed already!

I truly believe this revolutionary, never before done, ambitious approach will guide me through a project and maybe, just maybe, I can get a working project where I’m happy to add it to my CV!

Software engineering vs programming

Writing a program is easy. You throw around some keywords, fancy symbols, utter some not-so-friendly words, Google something, facepalm in frustration and then boom you have working code! This is the extended definition of programming. However, there is one crucial factor missing from this description: time. Programming is timeless. I’m not claiming that programming doesn’t take time, but rather than when something is complete it will continue to work. It’s simply code.

The difference between programming and software engineering is the time parameter. As time continues, you have to re-engineer your old program. One day, a customer may wake up and decide they want the perfectly working feature to improve or change somehow. This requires engineering expertise to implement a new solution.

My manager, R, shared this insight with me today. It was a woah moment. This was a revelation as this definition applies to everything in life. The way we behave, act and feel is due of our limited time on this tiny planet! Never take time out of an equation as it is the only changing constant.

  1. This is actually a really good feature, #KotlinForeverAndEver! 

  2. I have no idea what this one means :shrug:

This post is licensed under CC BY 4.0 by the author.