Personal Projects

2024

WeatherMe

Languages/Tools Used

Swift, UIKit

Responsibilities

Development of iOS app to fetch weather based on zip code

Description

An iOS project using OpenWeatherMap’s API to display the current weather to the user. Written using UIKit and Combine framework, utilizing the MVVM pattern to cleanly separate data, logic and UI.

Cleanroom Server Start Scripts

Languages/Tools Used

Powershell, Bash

Responsibilities

Development of flexible, multi-platform scripts to start server

Description

Installs and runs a modded server for the game Minecraft Java on version 1.12.2. Written in both Powershell and Bash so Windows and Linux work with it. Includes settings for the user to edit, if needed, such as launch arguments, modloader version, and crash recovery.

To load mods on a Minecraft server, a modloader is necessary: the only one that used to exist was Forge. A newer modloader called Cleanroom loader is in development but in a working state, so there is demand by users for a server that can run Cleanroom. Many other public scripts exist to run a modded Minecraft server easily, but none supported Cleanroom, so I made this for ease of installation.

CraftTweaker Enchantment Wrapper

Languages/Tools Used

ZenScript (Minecraft)

Responsibilities

Implementation of wrapper item for enchanted items

Description

This is a set of scripts for the game Minecraft on version 1.12.2. It adds a wrapper around enchanted items to fix ID issues that can be caused by changing out/adding mods in a modded Minecraft game. These ID issues would normally cause players to obtain items without the intended enchants1. The wrapper acts as a workaround for the reliance on world-specific registry mappings. There is a user-friendly recipe view provided for each wrapper item to communicate its use to the player.

This tool was developed with modpack2 authors in mind. Uses ZenScript, a custom scripting language for the mod CraftTweaker, which loads user-defined scripts for Minecraft.

Explanation - here
Repo - github.com/jchung01/CT-EnchantWrapper

  1. Enchants/Enchantments: Upgrades that enhance the item in some way 

  2. Modpack: A collection of mods that run on a modloader for Minecraft, created by an author. Often, the author includes custom scripts or config changes to alter gameplay progression and enhance the user’s experience. 

RoughlyEnoughIDs

Languages/Tools Used

Java, Mixin Sponge

Responsibilities

Refactoring of original codebase and added compatibilty for other mods

Description

An open-source fork of a Minecraft 1.12.2 mod primarily focused on extending the hardcoded id limits present in this version. This is especially catered towards modpack authors who wish to deliver a rich, unique experience by curating a collection of mods and implementing custom content, but were limited by the amount of content they could add before the game would no longer run.

I refactored the entire mod to offer better compatiblity with other mods that manipulate bytecode, as well as adding more id support for mods and various bugfixes with the original source.

Repo - github.com/TerraFirmaCraft-The-Final-Frontier/RoughlyEnoughIDs

Back to Top ↑

2023

Universal Tweaks

Languages/Tools Used

Java, Mixin Sponge

Responsibilities

Implementation of various performance-related and quality-of-life related tweaks for discontinued mods

Description

An open-source Minecraft mod dedicated to consolidating bugfixes and tweaks for a version (Minecraft 1.12.2) that no longer receives updates, but is still very popular in the community. I have contributed over 40 tweaks to the original source, varying from improving performance of other no longer maintained mods, to adding community-desired quality-of-life features that are not invasive to the base game. Still continuing to support the mod author and other mod-pack developers by listening to feedback and bug reports.

Repo - github.com/ACGaming/UniversalTweaks

Back to Top ↑

2022

MTG Deck Drafter

Languages/Tools Used

JavaScript (AppsScript), Google Sheets

Responsibilities

Implementation of random deck drafting

Description

A script to generate decks for the trading card game Magic: The Gathering. I made this while helping a friend design a custom set of cards, who wanted to be able to make randomized decks from the card pool to hand out to playtesters. When the “Generate Pack” button is pressed, a new random deck is created with a set number of cards from each rarity pool.

Demo (requires making a copy to use buttons): Google Sheet

Example cards for the custom set The spreadsheet with buttons to generate decks

Auto-farming Lost Ark Dungeons

Languages/Tools Used

Python, OpenCV, PyAutoGUI

Responsibilities

Automated movement and ability usage for infinitely farming dungeons

Description

A mostly proof-of-concept Python script that was able to automate character movement and combat for farming materials in a dungeon for the game Lost Ark.

Game interaction is implemented using automated keypresses and timings, some with and some without game context. It uses OpenCV’s template matching with periodic captures of the game screen to detect certain states of the game. This is used to perform necessary actions for entering/advancing/exiting the dungeon. The dungeon is divided into stages, and the player needs to navigate to a certain area in the stage to advance, so position and direction is extrapolated by reading and masking the in-game map.

Explanation - here
Repo - github.com/jchung01/LostArk-Dungeon-Farming

3D Reconstruction

Languages/Tools Used

Python, OpenCV, SIFT

Responsibilities

Implementation of 3D reconstruction using OpenCV

Description

A project visualizing a 3D reconstruction from a collection of 2D images. Uses the SIFT algorithm to extract keypoints and descriptors, with outlier removal to cleanup points in camera correspondences.

(I no longer have a copy of the dataset required to rebuild the project, so unfortunately a demo is not available.)

Repo: github.com/jchung01/3D-Reconstruction

Visualization

Back to Top ↑

2021

OpenGL Shadow Mapping

Languages/Tools Used

OpenGL, C++

Responsibilities

Implementation of shadow mapping in 3D scene

Description

A project using OpenGL to render rudimentary shadows for a custom 3D scene with a point light. Uses shadow mapping with 2-pass technique to calculate shadows. Artifacting/aliasing issues were mitigated by implementing depth bias, Poisson sampling, and percentage-closer filtering (PCF).

Repo: github.com/jchung01/shadowmap-opengl/
Explanation: here

Meta-Analysis of Data Science

Languages/Tools Used

Python, Jupyter, Seaborn, NumPy/Pandas, SciPy

Responsibilities

Collating projects, leveraging uClassify API for topic classification, statistical analysis

Description

Data science meta-project analyzing a large collection of other projects from iterations of a data science (COGS108: Data Science in Practice) course. I worked together in a team of 5 to investigate and report on observable trends in other teams’ (both in the same quarter and past quarters) projects. We were particularly interested in gauging popularity of medical health topics considering this was during the COVID time period.

Report - github.com/jchung01/COGS108-Project-Copy/blob/master/FinalProjectGroup096-Fa21.ipynb

PenPals Bullet Journal

Languages/Tools Used

HTML, CSS, JavaScript, IndexedDB, CI/CD

Responsibilities

Front-end development, entry editing/flagging/removal, integration of “Important” log

Description

Worked in a team of 7 using Agile methodologies to develop a journal web-app in the Bullet Journal style. Designed for quick logging of tasks and goals, users can log entries meant for immediate reference or upcoming tasks for a future date. I played a key role in implementing a flagging function for any bullet entry so that these specific entries can also be reflected in an “Important” log. The logs with their entries use IndexedDB to stored them in local, persistent databases. This allows the user to leave and return to their journal at any time.

Beyond the technical aspects, I found this project important for developing collaborative and communication skills during the design and devlopment process.

Live web-app - cse110-sp21-group5.github.io/cse110-sp21-group5/source
Repo - github.com/cse110-sp21-group5/cse110-sp21-group5/

Landing Page

Back to Top ↑