Michael Wang’s Resume/CV
Go to: Summary | Skills | Experience | Education | About me |
Summary
I am a software engineer with over 15 years of experience. In early days of my career, I've worked on user applications on desktop. Then I switched to mobile devices to work on Apps and games. Recent years I've expanded my skill to server side as well.
I learned Basic and C when I was a kid, C/C++ on early career, Java for Android App/game development. When working on servers, I used Ruby on Rails, and then Golang (and fall in love with it). I have 3 years of experience with Flutter when working on cross-platform applications.
I'm fluent in Mandarin, I can read/write/listen to English. I know the importance of communication, and I can help people to communicate with each other. I enjoyed learning new things, that keeps me up to date as a developer.
I live in Taichung, Taiwan. After worked for big companies (Ulead, HTC), I was self employed and then joined several start-ups. I learned a lot about remote work during these times, and am open to remote works.
Skills: what I do…
Software development
- Work with designer to build Apps, with methodologies like domain driven design to make code clean and simple, easy to understand. I am familiar with Flutter/Dart, but I also be able to read HTML/CSS/JavaScript.
- Build web server with RESTful and gRPC APIs, interact with databases (PostgreSQL, SQLite, MySQL). I do functional tests with APIs so I find bugs before release to frontend developer. I've done authentication with JWT. I can increase server perfomance with Radis, and rate limits.
- Contribute to open source, not many, but when ever I find something worth to share (my github repos).
Technical leadership
- Work with developers for code review, to clarify language features, and improve software architecture.
- Work with product manager to prioritize features, by estimating efforts, feedback as user.
- Guide developers for path of learning, provide basic training like git.
Experience
Flotilla – Software Engineer – July 2019 to December 2021
- Program Management Sytem (PMS) is a ticket management/purchasing system. I learned Golang along while working on this project, and learn Flutter/Dart while building client for PMS. We've finished a system where user can browse programs, login in and buy tickets with selected seats on the stadium. User then got QR code as the ticket, and attending the event with it.
- InstaMeet: as pandamic broken out, we work with Mashub as partner to develop video conference solution. I help to build a client/server to manage conferences. When hospitals trying to use our system, the challenge became portability. I helped to make sure InstaMeet to run on browsers on both desktop and iPad.
- InstaDirector is built on the basis of InstaMeet but with different target user: the directors of programs and their staffs. With InstaDirector, staffs can edit the rundown of the show, director can preview video and audio before actually broadcasting to audiences. InstaDirector can streaming to multiple platforms (YouTube, Twitch, ...etc). I built the client, help to design APIs and review server code.
Imonology – Software Engineer – Januray 2018 to June 2019
- Joint Commonwealth Fund (JCF) try to help average people get involved in crypto. It's my first experience to develop for the blockchain, Ethereum specifically. JCF allows people to deposit/withdraw funds, see asset portfolio and fund performance on the site.
- Moonlight International Academy's management system: I help to manage this project, to discuss requirement with client (a K12 school in Canada), dispatch jobs to developers (including myself). This project use node.js for both client and server. We used Scrum with 2-week sprint to deliver feature regularly. The client was quite satisfied with what we've delivered.
Studio Irregular (self employed) – Software Engineer – July 2011 to December 2017
- Work with artist studio (FunnyLab) on a mobile game called Bonnie's Brunch. I study how to build a game, things like game loop, game logic, sprites... etc. And I single handedly coded the game with Java on Android, without using any game engine. I was really satisfied when the game made it to Google Play and gain some tracking!
- POP is a fast prototyping tool for developer/designer to build a App quickly and test for it. I helped to build POP with native Android development (Java), taking picture with Camera, sync data with server through APIs.
- Jade Ninja is a mobile game designed by Monkey Portion (game studio). I helped to port it to Android where I reused the code from Bonnie's Brunch. the game is more complicated (more actions involved), and it proves the code base scalable for ths job.
viWave – Software Engineer – November 2009 to July 2011
- Turn up!viBook is a ebook reader on Android. I helped to build it with native Android development. It involves DRM protection, rendering ebook with different font styles.
- MOSTLink is a development kit for LoRa network. I helped to build a server to manage LoRa devices, with Ruby on Rails. The server is self hosted so we have to do deployment and maintenance ourself. It was my first server side experience.
HTC – Software Engineer – July 2007 to November 2009
- G1 I was among the first group of engineers who could 'hands on' Android phone in the world! I learned a lot about how to build the OS from source code, how to track and fix bugs. It's an important experience of me to work to really large teams, how to communicate with people. I am very proud to get involved in making the first Android phone in the world.
- With Sapphire and Hero our team focus on Home, the user interface user spend most time interact with. I helped to modify Home (in Java) with our own design and functionalities, improve performance, work with hardware teams to resolve any bugs user had experienced. The work is intens, and the result is great. My first private Android phone is what our team's work: HTC Magic.
KeyTouch – Software Engineer – February 2006 to July 2007
- The company has a patent for efficient input characters on software keyboard, I helped to implement it on WinCE using C++. Back then, the information about how input method works were very limited, we had to find our ways to make it work. It's my first experience to work on mobile software, iPhone was not even introduced yet.
Ulead System – Software Engineer – Jan 2005 to February 2006
- Burn.Now is an utility to burn data into CDs. It's my first real product I got involved. I remember different parameters affects the success rate of the burning. The team bought me a lot of CDs to play with!
- InstaMedia was my first major software project to participate. I learned how to use source control (perforce), how to build large project (hundreds of files), do peer review for any commit I had to make. Back then, all UI were assume to run on desktop, but with InstaMedia, it's supposed to run on TV (called 10 foot UI). It's where I learned UI can be run on different media with different assumptions.
Education
I have a M.S. in Computer Science, and graduated from the Yuan Ze University in 2002. My research topic is image processing, and my master thesis is "Fast Fractal Image Coding".
About me
I taught myself to program in BASIC as a kid on an Apple II computer, and been love with programming ever since. I enjoyed applying programming to my research in graduate school.
After work, I enjoy walking in the park and mountain climbing, playing baseball with my daughter.