Hello!
I am a graduated honours specialisation computer science student from Western University with a minor in game development. I have a diverse set of projects spanning across software development, web development, UI/UX design, web scraping, and game development.
My wide range of skills and interests allows me a unique cross-disciplinary approach to analysis, problem-solving, and putting myself in someone else's shoes. My technical toolkit is also complemented by good communication skills, giving me the flexibility to be a hands-on team leader or a collaborative team member.
Career Goals
Short-term: Learn through trials and tribulations in a community of skilled individuals to expand the breadth of my skill and knowledge.
Long-term: Discover, deepen, and develop my niche and interests after trying a range of positions to work towards what I feel is right for me
Skills
Softwares/Frameworks
- Proficient: C, C++, Python, Java, HTML, CSS, Jira, GitHub, Agile.
- Familiar: Unity, C#, OpenGL, GLSL, SQL, Git, Unix, JavaScript, ARM 7.
Soft skills
- Communication, Collaboration, Organising people, Discipline, Tenacity, Eager learner, Problem-solver, Taking initiative, Learning from mistakes, Team player.
Languages
- Native: English.
- Intermediate: Indonesian, Mandarin Chinese.
Experience
BSc Honours Specialisation Computer Science
With a Minor in Game Development

Western University | London, Canada
September 2021 - June 2025
Courses taken: Data Structures & Algorithms, Software Tools & Systems Programming, Computer Organisation & Architecture, Databases, Programming Languages, Operating Systems, Machine Learning, Artificial Intelligence, Data science, Networks, Graphics, Testing and Quality Assurance, Game Programming, Game Design
Languages learned: (Proficient) C, C++, Python, Java. (Familiar) OpenGL, GLSL, MySQL, Git, Unix, C#, JavaScript, HTML, CSS, ARM7.
Softwares and Frameworks learned: Jira, GitHub, Agile, Unity.
Data Science Intern

PT Kalbe Farma | Jakarta, Indonesia
July 2024
PT Kalbe Farma is Indonesia's biggest pharmaceutical company with over 1 million outlets across 43 countries.
Tasks:
- Developed an automated web-scraping program with Selenium and Python, targeting a public product database.
- Decreased processing time by scraping 636 data records across 70 web pages, and cross-referencing the scraped data with the company’s database using a fuzzy matching library.
- Applied and further studied web-scraping methods taught by my mentor such as JavaScript injections, sending POST requests, avoiding server timeouts, and implementing data recovery in the event of timeouts.
- Strategised the most efficient scraping method and analysed the database’s varying structure to sort the acquired data.
Freelance Illustrator

Self-employed | Remote
June 2020 - Present
Tasks:
- Brainstormed, developed, and presented multiple ideas for a client to review in stages.
- Adapted to client requests, such as budget limits or specific art style, while maintaining a good quality output.
- Took initiative to provide follow-up questions and/or ideas to understand the client's request better.
- Consistently updated clients at important stages of the commission to establish trust and rapport.
Vice President of Communication
Western Association of Roleplayers club

Western University | London, Canada
September 2023 - April 2024
Tasks:
- Unified the vision of club presidents, club directors, and club members through strong and frequent communication.
- Spearheaded content creation, logistics, promotions of monthly events through text and graphics, and presentation of monthly workshops, engaging around 20% of the club members for each event.
- Designed the cover of the first club zine to foster a sense of unity and community among club members.
Projects
Video Games and Simulations
Offshore Adventures
A VR marine biology simulator for kids
Roles: Programmer, writer
Tools used: Unity 3D, C#, GitHub | GitHub Respository
Offshore Adventures is a VR marine biology simulation designed for aquariums and public installations, and targeted towards young children. It features intuitive gesture-based controls and accessibility features such as subtitles and anti-motion sickness.
Tasks:
- Worked in a team of 5 using Agile workflows with GitHub Projects, storyboards, UML diagrams, and Unity.
- Collaborated with a marine biology expert to brainstorm creative implementations of educationally accurate topics.
- Developed immersive minigames for young children: satellite tagging, eDNA puzzle, and BRUV deployment simulation.
- Implemented accessibility features, including captions for deaf users and intuitive gesture-based controls.
- Wrote a script with clear, simple, and engaging language to better instruct and reward younger users.
Henry & Viola: Up the River (Demo)
Demo for a 2D co-op platformer game
Roles: Programmer, game designer, level designer, composer, background artist
Tools used: Unity 2D, C#, GitHub, MuseScore, Clip Studio Paint
Henry the dog and Viola the cat are two pets who can't get along. Yet, they must work with each other to find their way home. Henry and Viola are uniquely characterised by their different set of mechanics, and the game's obstacles show how these mechanics complement each other.
Tasks:
- Created a local 2-person multiplayer 2D platformer game using Unity’s 2D render pipeline and C# with a partner.
- Brainstormed and implemented 4 unique mechanics for each of the 2 player characters, and 2 environment mechanics.
- Developed immersive minigames for young children: satellite tagging, eDNA puzzle, and BRUV deployment simulation.
- Designed a game level with a puzzle to test game mechanics and multiplayer play on the same keyboard.
- Drew sprites with a partner using Clip Studio Paint and composed background music using MuseScore.
League of Legends Client Redesign
A redesign of League of Legend's game client
Roles: UI/UX designer
Tools used: Unity 2D, C#, GitHub | GitHub Respository
words
Tasks:
- a
Websites and Web Applications
Sparrow Flight (Demo)
Browse a world of stories and comics
Roles: Web developer and designer
Tools used: HTML, CSS, JavaScript, Clip Studio Paint | Demo website
Sparrow Flight is a website that hosts a collection of webnovels and webcomics. It has both features expected from major webnovel and webcomic platforms, and features tailored specifically for the project and reader enjoyability. The linked demo website displays all these features.
Tasks:
- Built using HTML, CSS, and JavaScript using Visual Studio Code and drew image assets using Clip Studio Paint.
- Scripted a story navigation bar that automatically updates its links to the first, previous, next, and latest stories.
- Presented two ways to view the list of stories, which is toggled by buttons on the Timeline page.
- Emulated Instagram on the Gallery page in automatically square-cropping and centering images.
- Accommodated for mobile experience while preserving the website's visual appeal.
- Used Firebase for hosting, EmailOctopus for email subscriptions, and Disqus for a comment section.
@blockheron Porfolio Site
This very website you're viewing!
Roles: Web developer and designer
Tools used: HTML, Bootstrap 5, CSS | GitHub Respository
This is the website you're currently on. It's designed to showcase and categorise my experience and my works.
Tasks:
- Created the website using HTML, Bootstrp 5, and CSS.
- Brainstormed ideas for the website's appearance through sketches, iterating through them when needed.
- Adhered to Gestalt's principles of design to create an intuitive yet aesthetically-pleasing and original website.
- Accommodated for a mobile experience and for those with visual impairments through high-contrast colours, sans serif fonts, and alternate text for images.
Applications
Scraping BPOM
Scrape database entries with a keyword
Roles: Programmer
Tools used: Python, Selenium, JavaScript injections, MS Excel | GitHub Respository
This project was my introduction to web scraping as a part of my one-month internship at Kalbe Farma. It's an automated program that will search up products with "vitamin d3" in their names in the BPOM database, scrapes data, then saves the data to an Excel file. The program name is "scraping_test.py", while the resulting Excel file is "produk_vitD3.xlsx". Please note that its contents are largely in Indonesian.
The pipeline for this web scraping process is:
- Navigate to "vitamin d3" search results.
- Scrape information from each search result, iterating through all the pages while doing so. After scraping one page (that contains 10 results), write it to an Excel file.
- One all pages have been scraped, "click" each search result, which pops open new information, and scrape information from there one-by-one. In actuality, the "click" is a Javascript injection.
- Write to an Excel file for every 5 clicked/injeted results.
If the program quits while going thorugh clicked/injected results due to a timeout error (or any other error), it can continue searching from where it left off upon re-running the program. It'll read the code (labelled "kode" in the program) of the last written item, find its index position in the first main sheet containing the page results, get the code of the next index position from the page results, and use that to continue sarching through clicked/injected results.
I will later use this program as the base of a new project. One difference is that I wrote separate functions for each search result category in its own file, so that the program can more easily accommodate more categories and to increase the code's readibility.
Link's House
A render with a first-person camera
Roles: Graphics programmer
Tools used: OpenGL, C++ | GitHub Respository
This source code was originally written for an assignment. It uses OpenGL and C++ to render Link's house from Ocarina of Time, and to make a simple moveable first-person camrea. To run it, ensure LinksHouse.cpp is in the same folder as the LinksHouse directory. Run the executable 'test' on the command line.
Controls: Use the up/down arrow keys to move forward and backwards. Use the left/right arrow keys to look left and right. Press ESC to close the application.
Acknowledgements: This camera tutorial was used as reference. The assets in the LinksHouse directory were supplied by my class and belong to Nintendo.
Marching Cubes
Scalar fields with Phong shading
Roles: Graphics programmer
Tools used: OpenGL, C++ | GitHub Respository
This source code was originally written for an assignment. It uses OpenGL and C++ to generating a scalar field with marching cubes, writes its vertices and normals into a PLY file, and then renders it with a Phong shader. Additionally, it also has a first-person camera oriented around spherical coordinates. To run it, ensure MarchingCubes.cpp is in the same folder as TriTable.hpp. Run the executable 'test' on the command line.
Controls: Use the up/down arrow to move towards or away from the origin. Click and drag with a mouse to rotate the rendered objects. There are 2 scalar fields: fWave and fCone. To change which renders in the program, go to line 515 and change the first argument of the method. You can also change the isovalue and stepsize there.
Acknowledgements: TriTable.hpp was supplied by my class.
Other Projects
D&D Game Master

Radiators in Zone Zero | Remote
April 2025 - July 2025
Radiators in Zone Zero is a Dungeons and Dragons 4th edition campaign. It is also a Westmarches campaign, meaning that its large world is inhabited and influenced by many players. I was a member of the group of game masters who created the world, contributed to its overarching story, and ran games for its players.
Tasks:
- Managed 60+ players of various age ranges and backgrounds, such as by organising a 5 hour online event for everyone with a team to strengthen a sense of community.
- Engaged 6-10 players weekly or twice a week through game narrative design, successfully planning an narrative arc that spanned 10 weeks with ~60 hours worth of gameplay.
- Communicated with dedicated players to incorperate their characters' backstories into my story.
- Collaborated with other game masters to ensure consistency between my story, the game's setting, and the game's overarching story.
- Performed my tasks well with a 11-hour time difference between myself and everyone else in the game.

