Latest Posts
All Posts >Automatically Increment Android App Version Code with Fastlane
2025-01-05
fastlane When publishing Android apps to the Google Play Store, each release must have a higher version code than the previous one. Fastlane, the popular automation tool for app deployment, can help
Blabbering on Blog to Keep on Writing
2025-01-05
For years, I have been thinking that a tech blog should host many well-written, comprehensive, elaborate articles. I always wanted to have a blog which leaves visitors engaged to read more of my artic
This SSG Blog is Available on GitHub
2025-01-04
This is a static site based on React.JS, react-router, and remark. You can check it out here on GitHub.
Cloudflare Anti Scraping may Break Your React SSR
2025-01-03
If you're using React server-side rendering (SSR) with Cloudflare, you might encounter an unexpected issue where your server-rendered content doesn't match the client-side render. Here's how I discove
Android NestedScroll Layout can Mess with your CoordinatorLayout and RecyclerView
2025-01-01
While working on two separate tasks recently, I ran into frustrating layout issues that were both caused by NestedScrollView. Here's what happened and how I fixed them. The Collapsing Toolbar That Wo
Watch Out for Duplicate View ID to Attach Android Fragment
2024-12-31
When developing new screens on an android app, I almost always isolate them by creating a full screen fragment. And then attach that fragment on a internal android app activity; which is an activity v
Works
99.co (Android & iOS)
2024 - now
Native Android and iOS applications for property marketplace in Singapore.
- Cobroke agent : feature to help agents to cobroke other agents' listed properties
- Featured agent : feature to help agents to showcase their profile in certain area
- Unlink Auto-Import : feature to help agents to unlink their auto-imported properties from automated sync
Mangkunegaran (React-Native, iOS, Android)
2024
A mobile application for Mangkunegaran Palace to showcase their collection and history.
- Launched MVP in 3 months time
- Detox end-to-end tests
Merdeka Mengajar (NextJS, Playwright)
2023 - 2024
A Progressive-Web-App to help teachers all accross Indonesia, providing upskilling courses, teaching materials, community, etc. Based on NextJS.
I was promoted in the early 2023 to a Full-stack Engineer position and tasked to help on the web platform. I am currently working on user event tracking, bugfixing, and end-to-end tests.
Merdeka Mengajar (Android)
2022 - 2024
A native Android application on Android to help teachers all accross Indonesia, providing upskilling courses, teaching materials, communities, etc. Based on Kotlin, Jetpack Compose, and Jetpack Compose Navigation.
Currently working on its core products :
- Home : homepage dedicated to many of Merdeka Mengajar products
- Ide Praktik : examples of teaching approaches and tools
- Untuk Anda : curated articles, videos, documents
- Pencarian : global search for teaching materials with over 7000 available content
- Profil : profile page for teachers to showcase their achieved certificates, self-pace learning, and portofolios
- In-app browser : a wrapper inside our app specifically engineered to support our PWA platforms with JavaScript bridge interface
Monika
2022 - Now
An open-source software initiative by Hyperjump Technology. Monika is a command-line interface application based on NodeJS to monitor internet service health.
Currently contributing as one of its maintainers.
Lyfe Pintar
2023
A web app to create online resume, job listing, and job application.
- Launched MVP in 3 months time
- Backoffice report with Looker Studio
- Search job listing with Algolia Search
Credikini
2021
A Buy-Now-Pay-Later MVP native android application.
Created MVP from scratch in 3 months with features below :
- Registration, login, logout
- KYC form
- Transactions
Aruna Heroes
2020 - 2021
A native android application working as a client for Odoo ERP.
- Launched MVP from scratch in 3 months (offline-first application, unit tests, continous integration, app authentication, purchase order, manage contacts)
- Offline-first app engineered using Android Work Manager and Android Room Database
- Led and grew team from 2 android engineers to 4 android engineers
- Enforced team culture to maintain continous integration, unit tests, and code review
Cakap Android
2018 - 2020
A native android application for Edtech company to schedule and learn new language in video call and chat.
- Migrated Java codebase to full Kotlin
- Worked closely with Vietnamese team in English
- Created full-featured chat with Qiscus SDK
- Created full-featured payment with Midtrans SDK
- Led and grew team from 2 android engineers to 4 android engineers
- Managed android engineers' workload
About Me
Hi there! I'm Sam, and I love building things. With 8 years in the field, I've grown into a Full Stack Engineer who specializes in Android and web development. My toolkit includes Kotlin, TypeScript, NextJS, and Firebase - tools I use to craft fast, efficient solutions that actually work.
On the Android side, Kotlin is my go-to language. I dig how expressive it is and how it helps me write cleaner code. When I'm working on web projects, I rely on TypeScript to keep things organized and scalable.
For web development, ReactJS is my framework of choice - it just makes sense when you are working with React on the frontend and need solid server-side capabilities. When I need to get an MVP out quickly, Firebase is my secret weapon.
Speaking of Firebase, I have put pretty much every Firebase tool through its paces - from A/B Testing and Remote Config to Authentication and Cloud Firestore. These tools are fantastic for getting features up and running quickly, especially when you are building that crucial first version of a product.
I'm also well-versed in Firebase's other offerings - Crashlytics for keeping tabs on app stability, Cloud Storage for handling files, Cloud Messaging for notifications, and Cloud Functions for those special backend needs.
One thing I take pride in is writing code that others can understand and maintain. I believe in solid documentation - not just because it's good practice, but because I have been on the other side, trying to figure out undocumented code. Trust me, future developers will thank you for good docs!