I've been programming professionally for a bit:
- Taught CS2103T Software Engineering (Spring 18)
- Reviewed pull requests from students to encourage good software engineering practices.
Teaching students helped me learn to explain my thoughts clearly. By reviewing pull requests from students, I learnt the importance of writing readable code, as people spend more time reading than writing code.
- Implemented and released public APIs for Data.gov.sg portal using Node.js with AWS Lambda and DynamoDB.
- Designed a unifying schema of several different formats for archival using DynamoDB.
- Wrote serverless Node.js functions to scrape and verify JSON, then uploading to DynamoDB.
- Minimized AWS Lambda costs by benchmarking, profiling and optimizing slow-running Node.js scripts.
- Developed and deployed SMS-based medicine reminder solution targeted at middle-aged users.
While building the public API, I learnt the importance of API response latencies and how we can cache some responses to reduce the latencies and cost of running the functions. This was also my first time using serverless functions, which taught me how stateless functions can reduce the complexity of our applications.
- Created the front-end of a cryptocurrency mining analytics dashboard with Vue.js.
- Helped client visualize health of their miners and troubleshoot malfunctioning machines.
- Suggested and implemented improvements to user experience from client's original design.
This was my first commissioned project where we had to start from scratch and produce a high-quality maintainable code base. As the customer was not very sure what he wanted, we had to interpret his needs and suggest possible improvements. The constant feedback process helped us better understand the clients needs and resulted in a product with good user experience.
- Simulated and analysed personnel movement using complex system dynamics simulations.
- Wrote VBA macros and SQL queries for Microsoft Access, Excel and Word.
As we worked with a lot of badly formatted historical data, I learnt how to process data into readable forms. It was my first data analysis job, and I learnt a lot of simulation techniques as well as methods to verify our models. I also learnt how to properly present data for visualization, as I needed to explain what the model was doing and what we could learn from it.
- Administered Windows servers and clients using IIS and Active Directory.
- Implemented features in the intranet page using jQuery, PHP and MariaDB/MySQL.
- Decompiled and modified legacy JavaServer Pages application.
This was my first programming related job. I learnt how to work with servers through SSH and RDP. While there, I also did some web development for the intranet and public websites of the company.
I also worked with legacy code where the source files were lost. Since it was a JavaServer Pages application, I managed to decompile the class files to understand what was happening and used a hex editor to change some values.
Here's a peek into my formal education so far:
- Bachelor of Computing in Computer Science. GPA: 4.70/5.00 (First Class Honours)
- Tutor for CS2103 Software Engineering (Spring 2018)
- Advisor for NUS Orbital 2018
- Notable modules:
- CS3216 Software Product Engineering for Digital Markets
- CS3230 Design and Analysis of Algorithms
- CS3243 Introduction to Artificial Intelligence
- CS3244 Machine Learning
- CS3234 Logic and Formal Systems
- Diploma in Chemical Engineering. GPA: 3.67/4.00
- Diploma-Plus Certificate in Engineering Mathematics and Science
Here are some interesting projects I've worked on in the past:
- Progressive Web App (PWA), iOS and Android app where users matchmake their friends.
- Pear won 2nd prize in NUS's 11th School of Computing Term Project Showcase (STePS).
- Led front-end development using Vue.js and Cordova.
- Released app to iOS App Store and Google Play Store, hit 300 users within 24 hours.
- GitHub: github.com/Pear-App/pear-client, Description: 11th STePS submission
- Real-time collaborative webapp that simulates a table top discussion.
- collaborate! won honorable mention in the advanced category of NUS School of Computing's Orbital 2017.
- Led front-end development using React + Redux and Socket.io.
- Wrote and deployed back-end using Node.js and Koa.
- GitHub: github.com/goweiwen/collaborate, Demo: collaborate-app.herokuapp.com
- Vue.js component for swiping cards left and right, similar to apps like Jelly and Tinder.
- 51 ★ stars on GitHub.
- GitHub: github.com/goweiwen/vue-swing, npm: npmjs.com/package/vue-swing
- Group photo sharing webapp for users to quickly share and vote on photos taken in a group outing with friends.
- Designed and wrote front-end using Vue.js.
- Source: github.com/anaprimawaty/pixelect
- Automatically downloads files, announcements and webcasts from NUS's IVLE portal.
- Created and maintained application built in Python 3.
- Source: github.com/goweiwen/ivle-sync
A more comprehensive list can be found here.
Awards and Achievements
I have some awards to my name, too:
- Studied viability of ride sharing in Singapore compared to public transport regarding carbon emissions using R.
- Pear won 2nd prize in NUS's 11th STePS for CS3216 Software Product Engineering for Digital Markets.
- collaborate! won an honorable mention in the advanced category of NUS School of Computing's Orbital 2017.
- Awarded by the Defence Management Group to individuals who have displayed exemplary attitude towards work.
Here are some languages I'm confident in working professionally with:
- Vanilla JS
- Ruby on Rails
- Data Science:
I'm a huge fan of trying out new technologies, so even if it isn't listed here, I might have used it for a pet project before.
Get in Touch!
Feel free to give me a call or drop me an email if you want to have a chat!