Doom Style Clone
Making a clone of Doom for fun and learning purposes, its made in Golang
Golang Wolfenstein Clone
Remade a bit of the Wolfenstein game for fun to learn Golang
Project Progress
Making Walls

Texturing Walls

Finished World

I've added the gun too and want to add enemies and multiplayer next

Some pages I used to help make this: https://www.scratchapixel.com/lessons/3d-basic-rendering/computing-pixel-coordinates-of-3d-point/mathematics-computing-2d-coordinates-of-3d-points https://gamedev.stackexchange.com/questions/35263/converting-world-space-coordinate-to-screen-space-coordinate-and-getting-incorre
Gallery
Django WebApp to view images like my personal image library from my PC anywhere.
Media Library Browser
App made to browse media on my computer from anywhere in a nice graphical UI
Django for the backend, will handle user sign in logic and hosting User can view pictures and download them
TODO
- List directory for images
- Refresh .thumbnail directory
- Check the directory images each have a thumbnail, create one if it doesnt exist
- Delete thumbnails if the media itself doesnt exist
Want the GUI to look like made on the WII
Bomberman
Bomberman is a school project to recreate the old school game in C++ from the ground up, making not only β¦
Slime Bomberman
Built a custom bomberman game in a team of 3 for our collage final project. Coded in C/C++.
The project needed us to build as much as possible on our own. We had to write the maths and logic needed render 3D objects, lighting, animations, sound and menu's of the game.
Features
It has the core functionalities of the original bomberman game. Where the goal is to kill all enemies on the map and then find the hidden door to the next level.
Player has 3 lives and a timer to complete each level. The game includes: - 3 Maps - 2 Powerups
Preview

Build and run
There is a Cmake file provided, should compile for Unix, Mac and Windows
Windows
Needs specific .dll files which can be hard to find
so they are included in a seperate branch called dependencies,
just copy them to the games .exe directory
suika
Suika Game Godot
Play in your browser
Host Yourself: Prebuilt Web Build
This project is a remake of the game Suika.
It was made for fun as it is a simple game and a good way to learn Godot
Requires Godot 4.2.1+

Build and Serving
Designed with the addon Box2D for the physics, without it the fruit bounce too high and have bad physics
Designed to run in the browser.
To serve run:
npm i serve
npx serve --cors
Fix headers error
https://github.com/gzuidhof/coi-serviceworker
Project needs to run on HTTPS
livepaste
None
Live Paste
Project made because I wanted an easy way to copy text from 1 device to another.
You open the webpage and paste your text, any user connected to the same room will be able to see that text and copy it.
Works using websockets and django channels to update the messages live.
Build & Run
Install requirements
pip install -r requirements.txt
Run with gunicorn
DJANGO_SETTINGS_MODULE='livepaste.settings'
gunicorn livepaste.asgi:application -k uvicorn.workers.UvicornWorker
Demo

Ray Tracer
Ray Tracer made in C
Ray Tracer
This Ray Tracer is a port of the the ray tracer I did at school
It has been re written in C++ from its code written in C
I rewrote it in C++ because I plan to add some more advanced features than the C version has
Current Features
It's able to trace 4 different shapes: - plane - sphere - cylinder - cone
2 types of light sources - Direct light source - Point light source
Effects - Dithering - Sepia - Greyscale
Reflections with n dimensions
Anti Aliasing
Multi Threaded Tracing
Settings file to make changes without needing to recompile the program
To Run
Make sure you have GCC, and Make installed and configured on your machine
make all
./RT <map file>
Preview
This map file will produce the image below
MAP FILE

Compare Directories
Script was made because sometimes I have a directory with almost the same files, like if I was coping files and it failed somehow, I wanted to know what files are missing and those existing which have different file sizes.
'''
Compare Directories
Script was made because sometimes I have a directory with almost the same files,
like if I was coping files and it failed somehow,
I wanted to know what files are missing and those existing which have
different file sizes.
'''
import os
def compare_directories(dir1, dir2):
# Get a list of files in both directories
files1 = {f: os.path.getsize(os.path.join(dir1, f)) for f in os.listdir(dir1) if os.path.isfile(os.path.join(dir1, f))}
files2 = {f: os.path.getsize(os.path.join(dir2, f)) for f in os.listdir(dir2) if os.path.isfile(os.path.join(dir2, f))}
# Find files present in both directories with differing sizes
differing_files = [f for f in files1 if f in files2 and files1[f] != files2[f]]
# Print the differing files
if differing_files:
print("Files with different sizes:")
for f in differing_files:
print(f" {f}: {files1[f]} bytes (dir1) vs {files2[f]} bytes (dir2)")
else:
print("No differing files found.")
# Directories to compare
dir1 = "C:\Users\Heagan\Desktop\Meta\Games\Batman\com.camouflaj.manta"
dir2 = "This PC\Quest 3\Internal shared storage\Android\obb\com.camouflaj.manta"
compare_directories(dir1, dir2)
pySmartDL Example
Its a download manager, script shows basic example for usage.
"""
pySmartDL Example
Its a download manager, script shows basic example for usage.
"""
from pySmartDL import SmartDL
url = input("URL: ")
dest = "." # or '~/Downloads/' on linux
obj = SmartDL(url, dest)
obj.start()
path = obj.get_dest()
Youtube Downloader Example
Contains 2 example scripts on using youtube downloader. One uses pytubefix, the other youtube_dl
"""
Youtube Downloader Example
Contains 2 example scripts on using youtube downloader.
One uses pytubefix, the other youtube_dl
"""
from pytubefix import YouTube
from pytubefix.cli import on_progress
url = "https://www.youtube.com/watch?v=KJwYBJMSbPI"
yt = YouTube(url, on_progress_callback=on_progress, use_po_token=True, allow_oauth_cache=True)
print(yt.title)
ys = yt.streams.get_highest_resolution()
ys.download()
from __future__ import unicode_literals
import youtube_dl
# https://www.youtube.com/watch?v=qaRkqu7PJpQ
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(["https://www.youtube.com/watch?v=qaRkqu7PJpQ"])
# ydl.download([input('url -> ')])
Start an FTP server.
Made to share files on my local network easily.
"""
Start an FTP server.
Made to share files on my local network easily.
"""
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
LOCAL_IP = '192.168.0.171'
def main():
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and anonymous user
authorizer.add_user('user', '12345', 'C:/Users/George/Downloads/Share', perm='elradfmw')
authorizer.add_anonymous('C:/Users/George/Downloads/Share')
# Instantiate FTP handler and apply authorizer
handler = FTPHandler
handler.authorizer = authorizer
# Define a banner (string returned when client connects)
handler.banner = "Welcome to my FTP server."
# Instantiate FTP server and serve
address = (LOCAL_IP, 21) # listens on all interfaces on port 21
server = FTPServer(address, handler)
server.serve_forever()
if __name__ == '__main__':
main()
Video Compressor
Script using ffmpeg to compress all videos in a directory. Made and run on my Google Drive to reduce videos file sizes.
"""
Video Compressor
Script using ffmpeg to compress all videos in a directory.
Made and run on my Google Drive to reduce videos file sizes.
"""
import os
import subprocess
import requests
from pathlib import Path
import os
import concurrent.futures
from tqdm import tqdm # Install with: pip install tqdm
from threading import Lock
import shutil
from time import sleep
import json
import psutil
input_dir = 'D:\My Drive\Media'
output_dir = Path('C:\Processed')
video_extensions = [
".mp4",
# ".mov"
]
lock = Lock()
def has_been_processed(input_file):
command = [
"ffprobe",
"-v", "quiet",
"-select_streams", "v:0",
"-show_entries", "stream=codec_name,profile,level",
"-of", "default=noprint_wrappers=1",
input_file
]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
processed_with = result.stdout.strip()
return processed_with == 'codec_name=hevc\nprofile=Main\nlevel=123'
def compress_video(input_file, outdir):
command = [
"ffmpeg",
"-i", input_file,
"-c:v", "hevc_nvenc",
"-preset", "slow",
"-rc", "vbr_hq",
"-cq", "30",
"-b:v", "0",
"-rc-lookahead", "32",
"-spatial_aq", "1",
"-aq-strength", "8",
"-c:a", "copy",
"-metadata", "processed_with=hevc",
outdir
]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
def convert(filepath):
suf = Path(filepath).suffix.lower()
if suf in video_extensions:
try:
full_output_dir = output_dir / '/'.join(filepath.parts[1:-1])
full_output_dir.mkdir(parents=True, exist_ok=True)
if not has_been_processed(filepath):
shutil.move(filepath, full_output_dir)
compress_video(full_output_dir / filepath.name, filepath)# if filepath.suffix == '.mp4' else str(filepath).replace(filepath.suffix, '.mp4'))
except Exception as e:
print(f'Error {e} with:', filepath)
def list_files_and_folders(directory):
# Collect all file and folder paths
items = []
for root, dirs, files in os.walk(directory):
items.extend([Path(os.path.join(root, f)) for f in files if Path(os.path.join(root, f)).suffix.lower() in video_extensions])
total_items = len(items)
if total_items == 0:
print("No files or folders found.")
return
with tqdm(total=total_items, desc="Processing", unit="item") as pbar:
for item in items:
convert(item)
pbar.update(1)
# # Use tqdm to display a progress bar
# with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
# futures = [executor.submit(convert, item) for item in items]
# # Update the progress bar as each task completes
# for future in concurrent.futures.as_completed(futures):
# with lock:
list_files_and_folders(input_dir)
Audio to Text
Converts an audio file clip and transcribes the text.
"""
Audio to Text
Converts an audio file clip and transcribes the text.
"""
import speech_recognition as sr
from moviepy.audio.io.AudioFileClip import AudioFileClip
# Extract audio from video
video_path = input('Video file name: ')
audio_path = "example_audio.wav"
audio_clip = AudioFileClip(video_path)
audio_clip.write_audiofile(audio_path)
# Transcribe the audio
recognizer = sr.Recognizer()
with sr.AudioFile(audio_path) as source:
audio_data = recognizer.record(source)
text = recognizer.recognize_google(audio_data)
with open('transcribed_text.md', 'w') as f:
f.write(text)
I have my own web server and like to run a few projects.
-
Home
Home Page of my server and domain. π I'm always updating this page since I use it to test out whatever new thing I'm working on.
-
Planka
Self-hosted Planka, an alternative to Trello / Jira. ποΈ I use it to plan my side projects, create cards, and keep track of progress.
-
Jellyfin
Self-hosted Jellyfin, an alternative to Plex. πΆ Makes it easy to access my music from any device.
-
VS Code Web
Self-hosted VS Code Editor π» Runs on my server so I can code and manage it from anywhere, on any device.
-
Excalidraw
Self-hosted Excalidraw βοΈ A draw.io alternative, great for sketching out project ideas and designs.
-
TOTP Authenticator
Side project π I built my own 2FA Authenticator after losing my phone and getting locked out of everything. This way I add my own security and access it from the web instead of being tied to a device.
-
Peer-to-Peer File Transfer
Side project π€ Transfers files directly between devices without storing them on the server.
-
Paste Room
Side project π A simple way to share text between devices (like my PC and laptop). Create a 'room' by changing the URL, and it becomes your unique space for shared text.
-
Media Gallery
I wanted an easy way to show off pictures without filling up my phone storage. πΈ This site displays media from any folder I choose, and I can share it with anyone via ngrok.
-
Suika Game Clone
I made a Suika Game clone in Godot π β simple but fun!
-
EagleCraft
Minecraft in your browser! βοΈ I used to run a dedicated server, but if itβs offline you can always connect to another public server.