Page Size:
Mobile Scanner

June 11, 2020

Mobile Scanner - 1
Framework: Xamarin.Forms, WinForms, ASMX WebServices
Coding Language: C#, Java
Platform: Android, Windows Mobile, Web Service (ASMX)

Description
As part of my tenure at ASE Singapore, I was responsible for the creation, integration, and maintenance of multiple mobile scanning applications.

The purpose of the mobile scanner applications is to ensure that the correct items are processed with minimal human intervention through automation.
I was mainly responsible for CK3(Windows Mobile) and CK65(Android).

Learning Points:
  • Symbologies
    • Through this project, I learn that there are multiple scanning formats and they each have different use case.
  • General Scanner Functionality
    • Due to each company having their own SDK to read the scanned value, I was made known the importance of creating a generic function that is able to read the scanned value for different devices. So that in the event I have to swap to another device, I do not have to spend time creating another function to read the scanned value for that specific device.
Automatic Guidance Vehicle (AGV)

June 11, 2020

Automatic Guidance Vehicle (AGV) - 1
Framework: Xamarin.Forms, ASP.NET
Coding Language: C#, Java
Platform: Android, WPF, Web Service (RESTful)

Description
The AGV project was conceptualized with the aim to streamline and optimize the company's internal process.
AGVs are equipped with sensors, cameras, and navigation system, which is responsible for the transportation of goods from one location to another, minimizing manual intervention and improving efficiency.
An Android app is developed to provide a user-friendly interface to control the AGV, and is accompanied by a RESTful web service that would facilitate communicate between the AGV's system and Android app.

Learning Points:
  • Xamarin.Forms
    • This is my first experience using Xamarin.Forms in a full project and also allowed me to learn about full-stack development and MVVM design pattern
  • Native Android Function
    • Even though Xamarin.Forms supports Android, it is still lacking in the platform-specified aspect of it, such as Bluetooth, Notification, and such.
    • I had to integrate native Android functions and yet still make it accessible in the ViewModel(VM) portion of MVVM.
  • RESTful Service
    • My first time using and consuming RESTful services, which allowed me to appreciate the flexibility of it, as it allows usage across different OS and platforms.
Unilever AR Experience

April 4, 2020

Graphic Engine: Unity
Coding Language: C#
Platform: IPadOS, AR

Description:
Unilever AR Experience is an AR app that was used for a roadshow to educate and promote the public on what Unilever is and does.

At start, users would use the IPad and scan the surrounding. Once scanned, the game would populate the area with checkpoints.

Once users have completed a stage and scanned the checkpoint, they would be able to proceed onwards to the next stage.

After all 4 stages are completed, a congragulation message would be presented to the user signifying that they have completed the app.

Techniques Used:
  • QR Code
    • QR code is used to check and ensure that the player is at the starting point.
  • AR Function
    • Checkpoints are being placed on screen based on real world position of which users could go up and inspect it.
  • Image Recognition
    • Used to scan the area so that checkpoints can be placed on the screen.
Montblanc Timewalker Prix

April 4, 2020

Montblanc Timewalker Prix - 1
Graphic Engine: Unity
Coding Language: C#
Platform: Android, IOS

Description:
Montblanc Timewalker Prix was an app used in an amazing race meant to celebrate the anniversary of Montblanc.

Users would be notify of a location that they will need to go to. Once users has reach the location, their are required to scan the QR code located there to log their checkpoint, and the next location would be disseminated through the app.

Users who have completed all checkpoints in the fastest time would be the winner of the race.

Techniques Used:
  • QR Code
    • QR code is used to validate that user has reached the checkpoint.
  • Native OS Function
    • Once users have finished the race. The app would search for and open up "Instagram".
VR Archery (Final Year Project 2)

July 1, 2017

Graphic Engine: Unity
Coding Language: C#
Platform: Samsung VR, Google Daydream, VR, Android

Description:
VR Archery was a simple game that i made for my Final Year Project(FYP) for my last semester in Nanyang Polytechnic(NYP).

The goal of this game is to demonstrate the usage of a VR controller as a remote game controller for interaction with the virtual world, as compared to the traditional method of using VR headset controls.

Techniques Used:
  • Multiple Platform Control
    • As Unity is a game engine that can be used to built for different platform, a different set of controls are needed for each different platform. One example being that you can't use the controls for VR headset on PC.
    • To help make the code cleaner, as instead of multiple if statement to cater for different platform controls. The code was written in a way that it would check for one platform's control instead of multiple platform checks, hence improving performance.
  • Particle System (Optimized)
    • Instead of generating particles when they are needed, the particles are generated beforehand. When they are needed, the particle system would reuse pre-existing unused particles instead of generating new ones, which it would only do if there isn't any pre-existing unused particles.
  • Physics
    • Arrows shot in the game are affected by gravity. As the tip is heavier than the tail, as soon as the arrow is shot, it would slowly rotate towards the ground, giving it a realistic feel.