Tom.K



About

Overview about myself, what I'm doing or making. Mostly talking about development career, but also a bit about the working experience and a bit about the website itself.


Biography

I am a software developer, working on mobile applications professionally. Mainly, I prefer to develop on Android platform with Kotlin programming language since it's more open than iOS (and Swift can be a pain sometimes), but I would still like to develop cross-platform software whenever it's possible.

Old workstation from 2022

Me and my old workstation from 2022 with few extra laptops for showoff, but with 3 monitors for doing actual work.

Education

As mentioned above, I have professional experience in mobile application development for Android and iOS platform. I also have some amateur experience in desktop and web development for JVM platform.

I'm using Kotlin as a primary programming language for JVM and Android (hopefully, that may also involve iOS, too instead of Swift, for which I also have some experience).

IntelliJ with EarthquakeCheck project open and running

IntelliJ is mostly one of IDEs that I'm using. Eclipse was a thing while I was studying, though.

In primary school, I've got inspired to do software development when we had I.T. class. In there, we were doing some extremely basic programming with BASIC in MS-DOS. I was able to do some basic calculation and drawing in BASIC, but nothing much else. Back then,I had no proper documentation or experience to learn further since I had limitations of living in rural area and having limited dial-up connection.

In high school, I've done some basic programming with C, where most of the time I've had trouble figuring out pointers. I would blame the syntax in here due to asterisk being treated more of a multiplication sign than being an indicator for pointer.

In college, I've had C, C++ and Java, in that order. C was a bit of mixed bag due to pointers still, I had some trouble with figuring it out. C++ was even more challenging due to a large amount of keywords and syntax that couldn't be well understood on time. I thought that Java generally sucks due to memory concerns, but in the end, I was generally wrong.

Java was actually the golden middle way in my case. I only had to initialize the object and use it without destroying it since it was done automatically. In this case, I didn't have to worry about pointers either. Of course, Java Virtual Machine in this case is using just-in-time compilation, which generally interprets the compiled bytecode. As a result, Java application can be slower than C or C++ application, but in this case it can be much more stable due to handling exceptions and errors instead of throwing sudden segmentation fault or garbage.

That was the one of key points where I've started going into Java environment and eventually reach Android environment. While still in college, I've got some experience with working on Android platform. After graduation, I've got the first job that lasted about 5 years as software developer and started to work on apps.

Career

Even though the first job was challenging, and I've got some working experience, it didn't provide sufficient financial compensation due to short deadlines, too small team for large amount of projects (I was the only one developing mobile apps for both Android and iOS platforms) and tough working environment. During this time, I've gained some additional experience by using Android Studio and Xcode, along with learning Kotlin and Swift programming languages. This also includes learning a lot of about complexity of Android, troubles with iOS and many other various issues that can occur during development.

After getting the job at Teltech as part of Mosaic Group, things have improved in many ways. I've had support from the rest of the team, including Android developers who I was able to discuss development with. I've worked on RoboKiller (or Robokiller, it's a never-ending story how it's capitalized), an app for blocking robocalls and providing additional features like hosted voicemail, call screening, answering bots and SMS spam blocking. I've also gained experience on collaboration and documentation by using Confluence, JIRA, GitHub, Bitrise and Firebase.

To improve my communication skills, I've worked on few internal presentations about refactoring specific features of the project to optimize the code and improve the code readability. Along with that, I've also started going to developer conferences mostly as visitor or volunteer to gain more social skills and hopefully, planning to do a talk in the future.

At this moment while writing this, Mosaic Group assets are being sold to another company, which means that I'm impacted by this. However, considering how much I've achieved these 2 years, I'm glad I've worked there since almost everyone was friendly and supportive to work with, along with great financial compensation, this helped me a lot to further improve my skills.

Hobby

As for hobby side, I like to check out old software and malware since it gives a bit of nostalgic vibes, along with trying out some experimental things. Occasionally, I make or stream content on YouTube to demonstrate some of these things.

Windows 98 SE in a broken state

There are some nostalgic vibes when it comes to legacy operating systems.

Recently, I've also started doing some 3D printing to try out some stuff and experiment with.

Website

This website uses Ktor framework for hosting HTTP/1.1 server. It's written in Kotlin under JVM environment. This is shown as proof of concept in some way to demonstrate some of my skills, even though they might be amateurish. However, it does show that I can develop stuff in Kotlin instead of using some sort of template.

The content is rendered from markdown text file, which is converted to HTML5 document. The goal is to keep minimal and readable output which should provide lightweight browsing experience.

There were attempts at optimizing the website with single request and providing support for legacy websites, but this was rendered to be quite hard to maintain at this moment, along with some additional drawbacks.

Single request page would end up having difficulties with loading images from base64 URLs and compatibility with old browsers is quite difficult due to inconsistencies.

HSTS is enabled, but it's still possible to access this website through HTTP on browsers that don't have support for it. Though, this is still insecure, take caution when browsing on insecure protocols.

Script usage on this website should be none or minimal, depending on the requirement of visited page.