Hello again! My name is Muhammad Fathir Irhas, call me Fathir. I'm a Software Engineer working mostly on Backend Development.

I finished education in Sarjana Komputer(kinda like CompSci Bachelor) from Telkom University at the end of 2016. I did some C, C++, Java, PHP and Python while in college, but my significant programming experience was using C# for some image processing projects, simple SQL interpreter, also my final project for graduation. This was my first real experience in programming while in college, even it was only basics things relying on some existing libraries like Windows GDI, Accord.NET framework, and some codes I found online helping me finishing the projects. These projects were just simple Windows Form app in Windows developed using Visual Studio. At the time, no pattern involved, no OOP, nothing about programming concepts in software development, just plain simple event handler from Windows Form buttons straight to the handler, and to the implementation functions/methods. The projects gave me straight A's tho.

I've been living in multiple towns/cities from my hometown in Riau, Bukittinggi in West Sumatera, Bandung in West Java, Tangerang and Jakarta. I went to high-school in Bukittinggi, and college in Bandung, and after graduation went to work in South Tangerang and Jakarta. I worked there until Covid-19 hit, I stayed there for a while until I went back to my hometown because of WFH. I never been to office since April 2020 after WFH policy applied. This already 4+ years I'm doing WFH, I forget how office feels like.

My experience is mostly in backend development. I know few frontends, and some devops. I also have experience doing fullstack development using CodeIgniter, Laravel and Go.

Technologies I've used so far in my career are(chronologically):

  • For development: Java, Hibernate, MySQL, PHP(CodeIgniter), Go, Postgresql, NSQ(MQ), Redis, HTML, CSS, Javascript, JQuery, Bootstrap(CSS), MongoDB, Kafka, RabbitMQ, Rust, Tokio.
  • For Devops: SSH, SCP, rsync, Github Actions, Jenkins, Sonarqube, Docker, Docker compose, Grafana with prometheus, Datadog, k8s etc.
  • For Environment: Linux, Mac, VSCode, IntelliJ, Helix(editor).

These tools I meantioned, some of them I operate and handle myself, some operated and handled by dedicated devops team and I utilize/integrate them.

I have different degrees of experiences for the tools, but I can adjust as needed. I am able to catch up, adapt, learn what needed to be done.

What I like:

  • Playing video game, especially Dota 2. Here is my Steam ID: 76561198129551173
  • Watching horror movies.
  • Reading anything I found interesting, especially tech blogs/articles.
  • Scrolling 9gag.
  • ...and many more...

Here are my detailed experiences chronologically in ascending order:

Anabatic Technologies

Technical Consultant

Nov 2016 - Jun 2018

I join as freshgrad and junior dev guided and working under a senior/mentor. I do help some developments with Java for their web portal for export partnering with Alibaba. I also helped with development of their internal project. I was also employed to client sites helping development there.

  • Introduce Git into the team for the ease of development. My team was used to zipping the codebase and passing it around in slack. We also used to use specific tool for comparing changes, and checking the diffs manually line by line before merging changes from other devs. This way of development was cumbersome and prone to errors because of manual versioning and manual changes merging.
  • Initially we use Github for storing versioned codebase, but later other team setup on-premise gitlab for use within company.
  • My team used to deploying to our Windows Server manually through remote desktop, but with Git, I made change so that deployment done through git without manual merge and without manual upload. So the version in Windows Server maintain to correct and stable version for development.
  • Java
  • PHP
  • CodeIgniter
  • Windows Server
  • MySQL

Tokopedia

Software Engineer

Jun 2018 - Apr 2020

I join into Fintech Team where they handle products related to financials like Tokopedia Saldo, E-Wallet, Microfinance, Personal lending, mutualfund, and e-gold. I handle mostly Saldo Tokopedia and its internal tool(internal dashboard).

  • Migrate Saldo hardcoded transaction id from the codebase into database for dynamic configuration. It was used to be whenever new id needed to be added, new deployment made. After migrating it into dedicated table in database, I only need to put poll with timer that run at every seconds/minutes that can be configured. The data is stored inside app's memory, so overhead for database roundtrip removed, while the configured data persisted in database.
  • Add internal dashboard for adding new transaction data.
  • Monitor services running, especially Saldo Tokopedia, mainly in server logs. Whenever something strange happen, I investigate mainly from server logs.
  • Revamp Saldo Tokopedia into Saldo Buyer and Seller, including revamping the UI. The UI was integrated into the main service. Previously it was served from legacy app written in perl, but rewritten into Go. Also put some APIs into gRPC and GQL mainly for mobile consumption.
  • Integrate some services into Saldo, services mainly come from Fintech and Payment team, also one from Official Store.
  • Create Saldo history for user to be download from the page, with date range can be picked.
  • Develop some features related to Saldo in internal dashboard.
  • Manage manual query into Saldo database for things outside existing APIs, including download user's big saldo history.
  • Fix and reconcile some mismatch data after Saldo Buyer and Saldo Seller separation.
  • Add Datadog monitoring for EGold for metrics like buys/sells success, failed, errors reporting and ranking.
  • Add some test cases into code and refactor some codebase for testability
  • Go
  • Postgresql
  • MySQL
  • Redis
  • NSQ
  • gRPC
  • GQL
  • HTML
  • Javascript
  • JQuery

Tiket.com

Software Engineer - Backend

Nov 2020 - Nov 2021

I join flight team, PreOrder. I mostly doing the project assigned for me for their internal mocking tool.

  • Add unit tests for existing code.
  • Refactor some codes following more modern approach in Java(especially Java 8 Forward).
  • Develop internal tool in Go for mocking http requests, especially for requests that cannot be mocked, like requests to supplier.
  • The project include mocking response in JSON, XML, string, and HTML
  • The project contains custom dynamic data generator with parameter determined using some kind of template I design my self. This will be used to generate data typical for flight requests.
  • The tool include simulation for delay as well by utilizing middleware with sleep attached in accordance to how delay will be simulated.
  • Go
  • MongoDB
  • Redis
  • Java
  • Kafka

Lifepal

Backend Engineer

Mei 2022 - Nov 2022

I get into team developing and handling Telesales App for connecting customer care with leads. This app record messages and calls between stored inside database. User interactions also recorded as well. This is the first time I use Rust in my career. Here I need to catch up and adapt quickly. There are many things I can learn that will impact my whole experiences, since Rust is introducing new paradigm, forcing you to design the codes in different way, especially the designing types well from beginning, and I frequently fighting the compilers for mistakes I newly found in my so far career. This is so different than in Go and Java. This experience gives me realization of how much unnecessary abstractions I made in Go and Java. Here I also help refactor the code to migrate database tool from sqlx to seaorm, also some contribution to other team code as well.

    • Rust
    • Go
    • PostgreSQL
    • KubeMQ
    • Redis
    • gRPC
    • GQL
    My last employment was in Lifepal and currently I'm open and looking for new career opportunities. You can contact me through my email: [email protected], [email protected], or [email protected]. You can view and download my resume here: résumé.

    Thanks! and Regards!