Resume / CV
Summary
I’m a front-end developer who specializes in React and Typescript.
I advocate writing quality code (documentation, automation, and testing), and striving to increase the team’s bus factor.
I am most happy when CI/CD reports failing tests. That means we caught problems before they are deployed. That leads to less user complaints and less man-hours in fixing bugs.
When I slack during work, I like to watch or read about programming principles, or experiment with new technologies or techniques. I believe the leeway to slack in a job allows us to avoid burn-out, and invest in self-improvement.
Communication
- English (native, Malaysian)
- Japanese (JLPT N2)
- Mandarin Chinese (basic, conversational)
- Malay (basic, conversational)
Tech Stack
Front end
- ReactJS
- NextJS
- Typescript
- Jest, React Testing Library
- Playwright
- Webpack
- Styled-components, SASS, SCSS
- Ant Design, Material Design, Bootstrap
- Axios, Apollo GraphQL
- Auth0, JWT
Back end
- NestJS
- Rust
- Tokio
- Protobuf (Protocol Buffers)
- Apollo GraphQL
- Kotlin, SpringBoot
- PostgreSQL
DevOps
- Docker
- Github Actions
- Google Cloud Platform
- DataDog
- ArgoCD
- Lerna monorepo
Others
I worked with these in the past, or recently in hobby projects.
- C#, .NET / Monogame / Unity3D
- Haxe
- Actionscript 2, 3
- PHP, CodeIgniter
- VueJS
- SvelteJS
Career History
CADDi Inc.
2022-04 - Present
Joined as a front-end developer. It was my first time working with fully Japanese-speaking teams. Team members change occasionally due to evolving project milestones. CADDi is still in the “startup” phase (as of writing), as a lot of the front-end code and tooling in their recent project was still premature. The original focus was more on pushing out new features and less about code quality.
I started by removing snapshot tests and replaced them with unit, component, integration and end-to-end tests. I also added Github workflow actions to run the e2e tests which prevents failed builds from being deployed during CI/CD.
Most of my time now involves improving the front-end code base (splitting code smaller files, converting code into pure functions, etc.), as well as meeting the project milestones by adding new features. Occasionally, I contribute to the backend (Rust, NestJS).
I co-founded an internal English podcast in October 2022, as an effort to reach out to non-Japanese developers across teams, and supplement Japanese speakers with their English-learning.
UNIVA Paycast
2019-10 - 2022-03
I joined as a front-end developer. I arrived in Japan right before the Covid-19 outbreak, so I worked remotely for most of the time. Despite being a Japanese company, my department was almost entirely English-speaking foreigners.
The front-end team had full reign of the front-end project, which allowed me to contribute code without much red tape. I was able to introduce React Testing Library and integration tests for most of our app’s pages as an alternative for slower e2e tests written in TestCafe.
I moved to another project in my 2nd year, which allowed me to write Kotlin (SpringBoot framework) for the backend, while still working on the front-end in ReactJS.
Pulse iD
2018-04 - 2019-09
I joined as a front-end developer, using ReactJS. I learned about monorepos, React-related tools and techniques, testing, and programming principles during my time here, from my co-workers who were Wix alumnis.
This was the first international team I worked in. I worked remotely with developers and designers from India, Australia, Israel and Hong Kong. I had planned to work at the company for longer, and expressed my interest in working remotely from Japan. Unfortunately, the cost of living in Japan was too high because I was still paid a Malaysian salary. I decided to seek employment within Japan and migrate officially.
Experian Malaysia
2016-09 - 2018-04
I joined as a C## software engineer. I’m going to be honest here, it was a rather miserable experience.
Some of the seniors were difficult to work with. There was a lot of red tape. The documentations were lacking. There was no proper on-boarding or peer learning. There were team and knowledge silos across the department. I was unable to contribute effectively. I figured to do something about my situation since I was obviously a deadweight in the team.
Fortunately, my manager moved me into a team which tried to pioneer using open-source frameworks, which resulted in me picking up ReactJS, and ultimately excelling in it. However, the project was short-lived. I was moved to another team where I worked on tasks I was not interested in. I managed to find a new company shortly after that.
Self Employed / Freelance
2014-03 - 2016-08
Partly inspired by Piktochart’s co-founders, I left the company and tried to start my own company. I started doing freelance and developed my own games using Unity3D and Haxe. I applied for government grants while I worked without a steady income.
I made a few mobile and web games, but couldn’t monetize them. I realized that I was better off as a developer rather than a business person. I decided to seek employment as my savings were running out.
Piktochart
2010-11 - 2014-02
I joined as a front-end developer when the company was a startup. I wrote in Actionscript 3 originally, then quickly transitioned to HTML5 as the technology was starting to gain exposure.
I used jQuery, and at one time, wrote my own internal framework using my own name as the framework’s namespace.
The last I remember of a conversation I had with my ex-coworkers, they joked about how some of the legacy code with my name in it was unprofessional. It was funny! I was young and foolish. Hindsight is always 20/20.
Syabas Technology (Penang)
2009-11 - 2010-11
I joined as an Actionscript 2 developer. I wrote apps for our in-house media boxes, somewhat similar to Apple TVs.
The company had a bad financial situation one year after I was hired. I was one of the 50% of employees they had to retrench.