I build web apps with Python + Flask
, using Google Cloud Datastore
as database and deploy it to Google App Engine
. Sometimes I use MySQL
and deploy to Digital Ocean/AWS
instance as well.
I do front-end development using Vue.js + Webpack
with Bootstrap
, equipped with reasonable app design skill (for a programmer).
Capable of doing basic web production server setup: Ubuntu
with basic security, MySql/MaridDB
, nginx + uWSGI
.
I code mostly in Kotlin
nowadays and continue to maintain some projects with Java
from earlier years.
No longer actively using C#
, C/C++
, VB6
, PHP/CakePHP
, Backbone
, CoffeeScript
and Brunch
.
PS: My wife helps with the logo, idea and design validation.
Travel guide and journal app WebAndroid
I enjoy travel very much and wanted to build an app to help me discover and archive interesting places.
At the end of 2015, I build Travelopy Android app to discover nearby places and keep journal entries of my adventures (a blog is too time consuming, a FB/Twitter post is good for sharing but not for archiving).).
Tech StackThe Web back-end is developed with Python + Flask with Google Cloud Datastore as the database and hosted on Google App Engine. Front-end is initially developed with Backbone + Brunch + Bootstrap and was partially replaced with Vue.js + Webpack.
The Android app is written in Java, utilizing Google Play Services (Location, Places, Auth), Firebase (Analytics, Crashlytics), OrmLite for database access, Retrofit2 for network call, Fresco for image loading (originally using Picasso), Facebook integration and RxJava.
Discover good restaurants in Malaysia WebAndroidMaintenance Mode
Back in the days when Google, TripAdvisor, and Foursquare still suck in Malaysia, it is pretty hard to find good restaurant recommendations online. The only good source is from blogs, so I created a directory of restaurants linking to blogs' reviews.
I release MMW Foodie Android app in 2011.
Malaysia Most Wanted web traffic peak in 2015 with 300,000+ monthly visitors and 10,000+ restaurants archived.
Tech StackThe Web back-end was originally written in PHP + CakePHP with MySQL as the database, running on Apache2 and hosted on AWS. Later it was rewritten in Python + Flask, running on nginx + uWSGI and migrated to DigitalOcean. Front-end was originally written in pure JavaScript + CSS + jQuery and later rewritten in Backbone + Brunch with Bootstrap.
Offline Password Manager Android
It is about time to stop storing credentials in plain text using "human" encryption.
LuaPass is a simple offline password manager, without dependency on a backend-server (no subscription and it shall always work), and only you have access to the content.
Tech StackWritten in Kotlin, using Room for database access (LiveData support, replacing OrmLite), Google Play Billing Library, Google Drive, Architecture Component, Kotlin Coroutines, Dagger 2, Moshi (replacing Gson), etc.
A public log of what I'm working on Web
Inspired by Derek Sivers' /now page movement, I build a website to keep a public log of what I am working on.
Tech StackThe Web back-end is developed with Python + Flask with Google Cloud Datastore as the database and hosted on Google App Engine. It has Twitter integration to fetch log entry from Twitter using hashtag. Front-end is developed using Vue.js + Webpack with Bootstrap.
HOWTO for Programmer Blog
I find myself always referring to old code/configurations, or losing my notes on some server setup. I decided to write better documentation on things I just learned. Never quite imagined myself as a tutorial blogger, but I find myself keep referring to own blog for HOWTO and code snippets repository.
PS: Writing tutorial/documentation is indeed time consuming, and trying to strike a balance between detail explanation and practicality.
Tech StackStatic website generated with Hugo and hosted on Google App Engine (leverage on free hosting and CDN-ish features). JavaScript, CSS and Bootstrap bundle build with Webpack.
Learn common Korean or Thai phrases for a more meaningful travel experience.
AndroidInactiveManufacturing Resource Planning
WindowsInactive