Skip to content

Instantly share code, notes, and snippets.

@bermudalocket
Last active August 4, 2022 18:26
Show Gist options
  • Save bermudalocket/47e4e18ec0569845abb5abd9dffe32ff to your computer and use it in GitHub Desktop.
Save bermudalocket/47e4e18ec0569845abb5abd9dffe32ff to your computer and use it in GitHub Desktop.
A high-level summary of my GitHub repos

This list is generally ordered from most to least recent, though there are undoubtedly some overlaps.

⭐ - indicates a project of which I am particularly proud, typically large in scope

📚 - indicates a project with extensive public-facing documentation

✴️ - indicates a particular highlight for a project, e.g. an important choice I made, or just some sweet code

C#

Name Description URL
Isolation ⭐ Scripts from my first-person 3D investigative horror game Isolation, made in Unity https://github.com/bermudalocket/Isolation

✴️ Highlight: Result.cs - abstract class Result<T>, implemented as sealed class Success<T> and sealed class Failure<T>. Abstracts the outcome of a process that may succeed one way or fail multiple ways. For example, INetworkService.GetLocalNetworkState returns type Result<PlayerNetworkState>. This is implemented in class NetworkService:

public Result<PlayerNetworkState> GetLocalNetworkState() {
    if (NetworkManager.Singleton is not { } networkManager) {
        return new Failure<PlayerNetworkState>("Network not initialized.");
    }
    if (networkManager.SpawnManager.GetLocalPlayerObject() is not { } player) {
        return new Failure<PlayerNetworkState>("Player object not found.");
    }
    if (player.TryGetComponent<PlayerNetworkState>(out var state)) {
        return new Success<PlayerNetworkState>(state);
    }
    return new Failure<PlayerNetworkState>(
        "Failed to get PlayerNetworkState component from GameObject."
    );
}

One usage comes from class LobbyBoardViewController when a player clicks the "Ready" button:

public void OnReadyClicked() {
    switch (Services.Network.GetLocalNetworkState()) {
        case Success<PlayerNetworkState> result:
            var state = result.Value;
            state.IsReady.Value = !state.IsReady.Value;
            break;

        case Failure<PlayerNetworkState> failure:
            Debug.Log($"Failed to set ready state: {failure.Message}");
            break;
    }
}

Swift

Name Description URL
Tweaks for Reddit ⭐ A Safari app extension providing tweaks (via DOM editing) and cloud syncing of preferences (via CloudKit) for the Reddit website https://github.com/bermudalocket/Tweaks-for-Reddit

✴️ Highlight: The redux-like architecture makes the project easily testable, as all state mutations are handled in a single reducer (MainAppReducer.swift). A reducer is a function that takes in a state and action and returns a mutated state.

General Documentation-writing

Name Description URL
SmartMobs documentation ⭐ The README.md for SmartMobs. The best documentation I've ever written. https://github.com/bermudalocket/SmartMobs/blob/master/README.md
Autohook + Simject guide A guide on how to run iOS jailbreak tweaks in Xcode's iOS Simulator. https://gist.github.com/bermudalocket/6bce9eebf7b44063c018f12b2bb2227a

✴️ Highlight: my writing style. I take pride in writing readable, maintainable, informative documentation.

Node

Name Description URL
Phasmo Hunter's Guide ⭐ A browser-based realtime collaborative tool for exchanging evidence in Phasmophobia. Frontend uses React. Backend uses Express, Postgres. https://github.com/bermudalocket/Phasmophobia-Hunters-Guide

Python

Name Description URL
pyperms A python script to automate the permissions-assigning process for Minecraft servers running LuckPerms. https://github.com/bermudalocket/pyperms/blob/master/pyperms.py
numericalpy Two very simple python scripts written for MAT 6375 Numerical Analysis https://github.com/bermudalocket/numericalPy

Java

Name Description URL
SmartMobs ⭐📚 A Java Minecraft server-side plugin that gives mobs configurable and extendable special attacks. 12,618 lifetime downloads on CurseForge! https://github.com/bermudalocket/SmartMobs
Euclid A Java Minecraft client-side plugin that parses and visualizes block-edit-history results using regex and OpenGL/LWJGL. Preview 25,102 lifetime downloads on CurseForge! https://github.com/bermudalocket/Euclid
NerdyDragon A Java Minecraft server-side plugin that completely reinvents the endgame Ender Dragon boss fight. https://github.com/bermudalocket/NerdyDragon
SafeBuckets A Java Minecraft server-side plugin that controls liquid physics to prevent griefing. https://github.com/bermudalocket/SafeBuckets
LastSeen A Java Minecraft server-side plugin that tracks players' last login/logout times. https://github.com/bermudalocket/LastSeen
nerdUHC A Java Minecraft server-side plugin for running Ultra-Hardcore (UHC) matches. My very first foray into coding. https://github.com/bermudalocket/nerdUHC

Scala

Name Description URL
RungeKutta A Scala implementation of the Runge-Kutta algorithm. For MAT 6375. https://github.com/bermudalocket/RungeKutta
NumericalIntegration A Scala implementation of three basic numerical integration methods. For MAT 6375. https://github.com/bermudalocket/NumericalIntegration/blob/master/Main.scala
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment