Skip to content

Instantly share code, notes, and snippets.

View pnlmon's full-sized avatar

pnloth pnlmon

View GitHub Profile
@pnlmon
pnlmon / HKBU_CIE_Courses_Scraped.json
Last active August 31, 2025 09:37
All HKBU CIE Courses (2025) in LLM Digestible format
This file has been truncated, but you can view the full file.
[
{
"category": "Core Language Courses",
"sub_category": null,
"course_code": "CCLC1200",
"course_name": "Elementary Chinese",
"pdf_link": "https://cie2.hkbu.edu.hk/doc/upload/shareddoc/Course_Information/Prog_Doc_2011-12/334_Curriculum/CCLC1200.pdf",
"pdf_content": "Associate Degree Programme Document \nTitle: Elementary Chinese (3 units) \nCode: CCLC1200 Level: Year 1/2 MOI: Putonghua \n \nAims and \nObjectives: \nThis course aims at developing students\u2019 communicative competence in the four basic \nskills of reading, writing, listening and speaking in the Chinese language. Through in-\nclass practices, students will be able to build a wider range of vocabulary and a variety \nof sentence structures for use in daily life. Students will also learn about Chinese cultural \nand social practices through reading short essays where they can acquire essential skills \nto write and express effectively in different social contexts. \n \nCourse Intended Learni
@pnlmon
pnlmon / RemoveDisruptiveAccessories.luau
Last active November 1, 2024 19:19
A simple script to remove any disruptive accessories
local Players = game:GetService("Players")
local SizeThreshold = 3
local function CharacterAdded(character)
local accessories = {}
for _, accessory in ipairs(character:GetChildren()) do
if accessory:IsA("Accessory") then
accessory.Parent = script
table.insert(accessories, accessory)
end
@pnlmon
pnlmon / uniqueIdsCount.lua
Created May 15, 2024 11:45
Count how frequent each content is used
local uniqueIds = {}
for _, item in pairs(workspace:GetDescendants()) do
if item:IsA("Texture") then
uniqueIds[item.Texture] = uniqueIds[item.Texture] or {}
table.insert(uniqueIds[item.Texture], item)
end
if item:IsA("Decal") then
uniqueIds[item.Texture] = uniqueIds[item.Texture] or {}
{
"10k_wght100fill1_24px.svg": {
"model_id": "17337396423",
"mesh_id": "17337216273"
},
"10k_wght100_24px.svg": {
"model_id": "17337396747",
"mesh_id": "17337216840"
},
"10k_wght300fill1_24px.svg": {
This file has been truncated, but you can view the full file.
{
"10k_wght100fill1_24px.svg": {
"model_id": "17337396423",
"mesh_id": "17337216273"
},
"10k_wght100_24px.svg": {
"model_id": "17337396747",
"mesh_id": "17337216840"
},
"10k_wght300fill1_24px.svg": {
--File: Spinner.lua
local RunService = game:GetService("RunService")
local ArcImageCache = {}
local function DrawArc(
editableImage: EditableImage,
radius: number,
strokeWidth: number,
color: Color3,
@pnlmon
pnlmon / i18next-lite.ts
Created April 8, 2024 10:17
A port of i18next-lite to Roblox-ts (react-ts)
import * as React from "@rbxts/react";
import Object from "@rbxts/object-utils";
import { LocalizationService } from "@rbxts/services";
type Translations = {
[language: string]: {
translation: {
[key: string]: string;
};
@pnlmon
pnlmon / MorseCodeDetection.py
Created November 1, 2022 09:32
Using flashes of light(e.g. indicator lights on a webcam) to detect morse code
import matplotlib.pyplot as plt
import cv2
SOURCE_VIDEO = cv2.VideoCapture("TestVideo.mp4")
class MorseCodeNode:
def __init__(self, codes: [int], representation: str = ""):
self.codes = codes
self.representation = representation
@pnlmon
pnlmon / appledaily_archive.py
Last active June 21, 2021 14:39
python script to archive apple daily to wayback machine
from datetime import date, timedelta
from bs4 import BeautifulSoup
import logging
import requests
BASE_URL = "https://hk.appledaily.com"
ARCHIVE_START = "https://hk.appledaily.com/archive/{year}{month}{day}"
ARCHIVE_SAVE = "https://web.archive.org/"
START_DATE = date(2002, 1, 1)
END_DATE = date(2021, 6, 21)
@pnlmon
pnlmon / discord2rbx.py
Created August 23, 2020 19:22
Discord OAuth to RoVer/Bloxlink
import requests
class discord2rblx:
def __init__(self, API_ENDPOINT, CLIENT_ID, CLIENT_SECRET, REDIRECT_URI):
self.API_ENDPOINT = API_ENDPOINT
self.CLIENT_ID = CLIENT_ID
self.CLIENT_SECRET = CLIENT_SECRET
self.REDIRECT_URI = REDIRECT_URI
def getDiscordToken(self, code):