I am an active young software engineering researcher. My academic research outcome in test code quality was published in Empirical Software Engineering (EMSE) journal and two highest-ranking conferences, the International Conference in Software Engineering (ICSE) and the Foundation of Software Engineering (FSE), both with over 500 submissions and less than 20% acceptance rate.
This is my first freenlance work for Organelle Biology Group at Ryerson University
Fully reponsive, built-in slideshow, desktop first approach, creative meet the team section.
This is my second freelance work for Cell Surface Biology Group at Ryerson University.
Fully reponsive, built-in slideshow, desktop-first approach, clean design (bootstrap).
This is a project accomplished following an online course about Mastering Javascript
MVC framework, protoypical inheritance and dynamic DOM manipulation.
Open ProjectMy first server side project using MySql and PHP.
Used Jquery AJAX for seamless transition without page reload, and the database clears its content each new day to accept new players.
Open ProjectMy server side project using MySql and PHP.
Authentication, shuffle music, a circular queue of the playlist, make a playlist and add music to a playlist, and password change
Open ProjectThis is my first pure CSS website using SASS, following a master course on Udemy. Has limited browsers supports. Namely, clip-path, shape-outside and object-fit doesn't work IE nor MS Edge For the full experience, you should use Google Chrome.
Learned features of SASS: mixins, variables, using mixins to organize media queries better, modern CSS techniques (clip-path, transform, animation, keyframes, background-image: linear gradient url()). I also learned about nodemon utility that automatically restarts server upon document changes.
Open Tennis WebsiteThis is my third freelance work for Glybiology Group at University of Alberta.
Fully reponsive, built-in slideshow, desktop-first approach, clean design (bootstrap).
Open Project
The core of this application is the auto-complete search box. Namely, programs check if each character typed in the input tag exist within the player names. If it exists then we push it into the filtered array, which we will be displayed using *ngFor. The player names also have (click) event bound, which display a new user component.
Learn routing, observables and dependency injections. To elaborate on dependency injections, I used a lot of property binding, event binding and custom eventEmitter to pass the data around.
Open Project