Software Engineer/Developer, Computer Science undergraduate.
A passionate learner who aspires to daily self-improvement. Currently in my final year of Computer Science studies at National University of Singapore.
Computer Science (Artificial Intelligence)
BCME
Rank Points: 87.5
I was stationed at Schneider Electric's HubAsia Distribution Centre
to help with improving the efficiency of warehouse processes. As the only software engineer onsite, I was given a number of projects which allowed me to learn
fullstack software development skills (through developing apps from scratch). This involved UI design/programming and SQL database deployment/integration,
both of which I had no prior experience with. However, I became comfortable with them after a month of simultaneous research and diving head first into the
projects.
Listed below are some of the projects and responsiblities I picked up at Schneider Electric.
Background info
One outbound process is called "Releasing", and it is simply when goods are released from the warehouse into the ownership of their respective customers (usually
through delivery). In some cases with smaller packages, customers can choose to personally visit Hub Asia and collect their items. These packages need to be prepared
(picked from storage and packed properly by Releasing personnel) before they can be released to customers for collection. Sometimes, customers may arrive before their
packages are ready for collection and therefore will need to wait. Once the package is ready, the customer can then collect it and leave Hub Asia.
Problem
Issues in customer dissatisfaction and time wastage rise during these instances where customers need to wait for their packages to be prepared. Customers can verbally
enquire the Releasing personnel present at the reception area about the status and time of completion for their packages. Sometimes, the information given may be slightly
inaccurate, leading customers to enquire repeatedly when their packages take longer than expected. This is where customer dissatisfaction rises as well as time wastage due
to the Releasing personnel needing to repeatedly check and verbally update customers.
My solution
I developed a multi-component application to provide a data-driven connection from the start to the end of the self-collection process. The app is deployed on 3 computers:
(1) guardhouse check-in/check-out computer, (2) Releasing team computer, (3) reception area computer hooked up to a large television screen. Each area serves a different
purpose, and thus can only access its relevant components in the app. Customers arriving at Hub Asia will first check in at the guardhouse by submitting their information
through the check-in component of the app. Releasing personnel can then see the customer information on the app on their computer, and provide updates on package status and estimated completion time through
the info-update component interface. When Releasing personnel provide these updates, the information is immediately displayed on the reception area television through the dashboard page component
of the app. Customers waiting at the reception area can therefore refer to the live dashboard for instant updates on their package information. Once a customer's package is ready, they will be prompted
through the dashboard. Then, the customer can collect their package, check-out at the guardhouse, and leav Hub Asia.
Ever since the implementation of the dashboard, surveys have found that customer satisfaction had increased. Releasing team personnel also found that they had more time to focus on other responsibilities
since they no longer needed to verbally update customers every now and then.
Background info
One of the warehouse processes is "Put Away", where inbound delivered goods are received and need to be recorded before being kept away. Part
of this process involves scanning the barcodes on labels pasted on the packaging. This crosschecks with information in a database
to see if the labels are correct. There are 5 such stations, each with its own computer and barcode scanner.
Problem
The problem with this was that the interface being used by operators for barcode scanning was a makeshift app using excel and VBA,
where one sheet acts as the main scanning page, another sheet contains the data for crosschecking, and another sheet records the
scans conducted by operators. This means each of the 5 station computers needs its own copy of the excel file, resulting in 5 duplicates
of the same crosschecking data, all of which need to be simultaneously updated whenever new data is available. Also, all the recorded data
of barcode scans conducted had to be pooled from the 5 separate excel files and compiled in order to display statistics in Tableau. Lastly,
excel files have a hard limit on the number of rows per sheet which limits the lifespan of this implementation.
My solution
I extracted and migrated the reference data for label cross-checking into a proper MySQL database.
This way, all the scanning station computers could access the same centralized database for information.
All the data for each scan conducted is also stored into the same database, and pooling is no longer necessary as Tableau can connect directly
to the centralized database to generate live reports and statistics. Users' login credentials are also stored on the database instead of the previous
excel sheets, improving security.
In order to interface with the database, I developed a desktop application to replace the Excel files. This app provided the same barcode scanning
functionality in addition to a few other requested features such as automatic updating of the crosscheck database, exporting scan records into an
excel file for CS&Q (Customer Satisfaction & Quality) personnel to check, as well as generic user management (adding & deleting of users) for admins.
Ever since the implementation of the database and application, CS&Q personnel could save 1 hour every day since they no longer needed to manually collate
data from multiple Excel files. This translates to roughly $284 being saved monthly.
Background info
The thousands of barcode scans done during the put away process can result in varying statuses (CORRECT, INCORRECT, VISUAL CHECK). "INCORRECT" and
"VISUAL CHECK" statuses imply that some issue is present which needs to be fixed, with various possible root causes for these issues.
Problem
In order to stay updated as well as investigate these issues effectively, CSQ and management personnel require daily reports on the scans conducted.
This includes a summary of the statuses encountered along with their root causes.
My solution
I wrote a Python script which runs automatically every morning to send an e-mail to a list of mailees. This script connects to the database I created for the
Put Away Scanning app to retrieve the relevant data, generate graphics (pareto charts, pivot tables, simple HTML tables) to display the information, and
send the formatted e-mail to personnel.
As a member of the WRC Sports Hub, I worked with colleagues to plan and organise activities which encourage and provide opportunities for employees to have fun while exercising. We wanted to introduce a culture of fun and fitness, especially at our HubAsia office which had a warehouse environment where operators rarely have the chance to leave and participate in recreational activities.
We have an E-Idea programme where employees can submit any innovative ideas for improving any aspects of the workplace, such as safety, environmental-friendliness, productivity, etc. Every month and quarter, the best idea will be announced and the submitter will be rewarded. As part of the E-Idea committee, My fellow members and I would have monthly meetings to run through the submitted ideas together, analyze and award points to each idea, and decide on the winner for the month.
We hosted a Chinese New Year celebration for all employees at HubAsia which included a buffet as well as team games. I took up the role of emcee-ing to facilitate the flow of activities.
Working at Schneider Electric has been absolutely enriching and undoubtedly valuable to me. The amount of things I've learnt from this internship is astounding. Whether it be the subtle details or large subjects, technical or soft skills, I was exposed to so much new knowledge and experience that I know I've improved tremendously both as a programmer and as a person. Their well-structured internship programme, inviting culture, and willingness to place large responsibilities and meaningful projects on the shoulders of us interns made for an incredibly memorable and educative experience. Especially with regards to the projects, seeing my work grow and be actually deployed live into their daily production was extremely satisfying and gave me a great sense of achievement.
LinkedIn PostI crafted a lesson plan for teaching beginners to play the ukulele, allowing students without to play recognizable songs within an hour. I used self-designed, visually-appealing slides and wrote intuitive song tabs to facilitate the lesson.
As a homework teacher, I guided students ranging from Primary 1 to Primary 6 in all their school subjects.
I taught students ranging from lower primary to upper secondary in their subjects of English, Mathematics and Science (including pure physics, chemistry and biology for the secondary school students).
I teamed up with friends in this hackathon to create a top-down view multiplayer desktop maze game concept.
My team and I built a web-based drumming application using p5.js, targeted towards helping drummers gain a better sense of rhythm.
We designed and created a mock trip planner/advisor feature with the idea for it to be integrated with Grab.
During my internship at Schneider Electric, I was in charge of designing and developing functional desktop applications to be used daily in live production environments.
Since I was the only software engineer, I became intimately familiar with every facet of development from beginning till end. Some things I learnt include: UI design/programming
(to create user-friendly interfaces), MySQL database creation and integration (for all the apps running on computers throughout the warehouse to simultaneously store and retrieve
data), and defensive programming so as to minimize bugs in the app (which would be costly if encountered in production).
Of course, I have worked with teams as well on software engineering projects in NUS and am able to communicate/work effectively with other developers to achieve our goals.
Apart from programming, I am a self-taught ukulele fingerstylist. My interest in the instrument resulted in me coming across ukulele virtuosos such as Jake Shimabukuro and Kalei Gamiao, whose performances ignited my passion and inspired me to learn to play like them. To date, I have performed multiple times (sometimes with a band but mostly solos) for events such as concerts and competitions, and I have also conducted and introductory workshop for people wishing to pick up the ukulele.
I seek to continue performing in public as well as teaching more lessons. I have also uploaded some song covers to YouTube and strive to upload more in future.
Worked together with other undergraduates to construct safe water gardens to provide hygienic sanitation for local families. In addition to giving safe sanitation, the waste water is channeled to fertilize a garden where residents can grow their own produce for sale or consumption.
On the last day, we also organized games and interaction sessions for children from a nearby orphanage.
We worked together to help construct an outdoor shelter for a nursery, as well as paint a wall mural for an orphanage. We also conducted lessons and cultural exchange activities to engage with the locals.
Thanks for visiting and reading this page! If you made it this far and are finally bored, I hope I can entertain you with some stuff I've coded :)
Built mainly using p5js (a Javascript library geared towards creating graphic and interactive experiences, and based on the principles of processing), I've attempted to clone the internationally sensational and ridiculously addictive game known as Flappy Bird.