My name is Ying. I am a graduate from the School of Computer Science and Statistics in Trinity College Dublin. Before diving into computer science, I studied economic history with full scholarship. I like to explore things with curiosity and logic.
The website for the Museum Building in Trintiy College Dublin was designed and created by four students (Adrian, Maria, Pavlina and Ying) in two months. I was the lead developer. It features an interactive panorama, lots of beautiful photographs, and video interviews with professors in Trinity College Dublin.
This project stemmed from my first master thesis in Leiden University, where I used inferential statistics to investigate the relation between rice farming, sugar plantation and land rents on Java. The paper was presented at the 17th World Economic History Congress in Kyoto in 2015.
I resorted to QGIS, an open-sourced Geographic Information System to visualise historical statistics that were collected by province in Indonesia between 1910s and 1920s. Historical maps were georeferenced in QGIS first before applying the foodcrops data to create the choropleths. It showed that sugar plantation overlapped with the areas where rice shortage prevailed. Regression analysis further indicated that the concentration of sugar plantation was encouraged by the low land rents in East and Central Java.
I spent two weeks in 2015 to learn QGIS. STATA and R were used at various stages for data analysis and visualisation. The online demo was made with reveal.js.
iPaint is a desktop application created with Processing, a programming language similar to Java with simplified syntax. The app provides pen tools in different styles and colours. You can draw straight lines and simple shapes. Circle and rectangle is unfilled by default, which can be filled with the colour of your choice. It provides a colour picker, giving visual feedback when you are hovering over the palette, or when you confirm the selection. You have an eraser to wipe out unwanted stuffs, or start fresh with a blank canvas. Loading image from local computer, and exporting the canvas are also supported.
This was the most enjoyable individual project in the past year. The highly interactive nature of the programme forced me to pay close attention to the call stack and made sure no side effects was emitted from previous interaction. I spent about a week from designing the interface to finish coding. I love this inspiring programming experience!
This is an exercise for backend web development written in Python. It features user authentication, URL binding, and manipulation in a database. It is built with Flask, SQLite, Jinja templates and Bootstrap framework. I spent roughly a week on this project. It helped me grasp Django quickly, another Python framework for web development.
The homepage presents a form for user to log in. You can start blogging after you are logged in, and your posts will be saved in a database. You can also check your old entries in the blog, which will not be displayed if you are logged out.
Money Talk is a Facebook Messenger chatbot that allows user to query account balance, transfer money, and locate nearby ATM on a map. It was built by my fellow coders (Panpan, Mauricio, Jeissie and Julia) using sandbox APIs at the Ulster Bank Hackathon in February 2017. I made a promotional website overnight for the final pitch.
TrinityVR is a mobile app that allows user to navigate in Trinity College Dublin with a cardboard headset. It features realistic texture mapping with panorama, 360 videos and spatialised audios for an immersive experience. The project was developed by 5 students (Adrian, Enda, Hailee, Jill and Ying) in less than 3 months.
The semi-interactive cinematic VR was created with Unity3D Game Engine and GoogleVR SDK. I got a good exposure in C#. I also got the chance to explore ambisonics processing tools like H2n Zoom Recorder, Reaper, and the Facebook 360 Spatial Workstation rendering engine.
This 30-second animation is made with Blender, an open-sourced 3D graphics and animation software.
I had no prior experience with animation. This project took me less than a week from start to finish. Modelling was more efficient in Blender than raytracing software such as POV-Ray, but it also takes longer time in the rendering process.
The drum kit is modelled with POV-Ray (The Persistence of Vision Raytracer), a ray-tracing software that produces image from a text-based scene description.
This project gave me a beginner introduction to computer graphics. Besides a quick refresh of Cartesian coordinates and geometric primitives, I also learned about 3D transformation, and how to adjust camera and perspective, setting up three-point lighting in the scene.
I modelled a drum kit for its regularity in shape, which can be created with loops in codes, using only cylinders and spheres. After the modelling was finished, I applied texture mapping to the meshes, and played around with bump mapping, normal mapping, specularity and shading.
I spent about four days on this project, which could be done in less than an hour if Blender was chosen for the modelling task.
SimLift is an elevator simulation project. I used an Arduino micro-controller and an arrange of sensors and electronics to simulate the control of an elevator. Designing an elevator controller is rather complicated in real life, not only for safety considerations, but also because of the demand for optimising travelling and waiting time.
I simplified the movement control with a three-storey elevator model, because I only have two locking buttons as input, while in real life you need at least two sets of buttons for each floor, one set for indicating destination in the car and the other set for travelling request from outside. I combined two locking buttons to get four control options. Three control options were used to indicate at which floor the elevator stopped, and the last option was used to simulate the state when the elevator was traveling, which was achieved with a loop.
I used a buzzer, LEDs and the output of the serial port in Arduinoto to show the current location of the elevator. The tune from the buzzer and message from the serial port was customised for each floor. In the circuit, pull-up resistors for the LEDs and pull-down resistors for the buttons were used to make it more robust. The wires were color-coded, where the black was connected to GND, red and orange for the 5V power, white and yellow for the input pints. It made it easier to read and debug.
I spend one day for this Arduino project.
I speak Cantonese and Mandarin Chinese.
I understand Japanese and Dutch.
Learning - Vue, React, RxJS, Jest, Mocha, GraphQL, MongoDB
Familiar - Flask, Django, SQLite, Postgres
Excel, R, Python, D3.js, Plotly, Highcharts, Tableau, STATA, QGIS
Photoshop, Illustrator, Inkscape, Processing, Blender, Unity3D, POV-Ray, Audacity, Cubase, Final Cut Pro