···11+---
22+import Partition from "../components/Partition.astro";
33+44+import BaseLayout from "../layouts/BaseLayout.astro";
55+import PortfolioProject from "../components/PortfolioProject.astro";
66+77+const Project = PortfolioProject;
88+99+const pageTitle = "Portfolio";
1010+1111+const languagesUsed = [
1212+ "Rust",
1313+ "GDScript",
1414+ "Go",
1515+ "Python",
1616+ "JavaScript",
1717+ "C#"
1818+];
1919+2020+// languagesUsed.sort((a, b) => a.localeCompare(b.firstname))
2121+---
2222+2323+<BaseLayout pageTitle={pageTitle}>
2424+ <Partition>
2525+ <h1 class="text-4xl text-center">Portfolio</h1>
2626+2727+ <p>This is a list of some of my projects that I've worked on over the years.</p>
2828+ <p>Not all of them are complete or expansive but with each project I've grown as a developer.</p>
2929+ <br/>
3030+ <p>I have worked in these languages:</p>
3131+ <ul class="list-disc pl-5">
3232+ {languagesUsed.map((language) => (
3333+ <li>{language}</li>))}
3434+ </ul>
3535+ </Partition>
3636+ <main>
3737+ <!--<Project-->
3838+ <!-- name="Lorem ipsum"-->
3939+ <!-- date="29th December 2024"-->
4040+ <!-- tags="Lorem, ipsum"-->
4141+ <!-- link="https://aria.coffee"-->
4242+ <!-->-->
4343+ <!-- Lorem ipsum dolor sit amet-->
4444+ <!--</Project>-->
4545+ <Project
4646+ name="Open-FBT"
4747+ date="26th July 2021"
4848+ tags="Rust, Discord, Bot, Redis, Docker, Python"
4949+ link="https://github.com/BuyMyMojo/open-fbt"
5050+ >
5151+ Open-FBT is an open sourced public variant of the <a href="https://fbtsecurity.fbtheaven.com/"
5252+ target="_blank" class="nav-btn backdrop-contrast-150">FBTHeaven
5353+ discord bot</a>, a bot I created to help moderate discord communities. This bot is in 419 servers as of the
5454+ 29th December 2024 and has processed over 36,000 user commands since July 31 2022.
5555+ <br/><br/>
5656+ In 2021 I was approached by a friend who runs a VRChat dance club to help work on their Discord bot, this
5757+ was originally written in Python using <span class="backdrop-contrast-150">discord.py</span> which
5858+ eventually got dropped by the developer so we had to migrate to <span
5959+ class="backdrop-contrast-150">nextcord</span>.
6060+ <br/><br/>
6161+ After a year of building the bot, and dealing with the strange performance characteristics of nextcord, in
6262+ July 2022 I decided to start rewriting the bot in Rust to make use of the increased performance and
6363+ portability that the new language afforded. I also moved to using Redis as the database of choice instead of
6464+ SQLite for much faster access to our thousands of DB entries.
6565+ <br/><br/>
6666+ After a few hundred commits and a couple years of work I decided to fork my own code to strip out any
6767+ confidential info and release an open variant to the world as a final send off to the longest running
6868+ project
6969+ I have worked on.
7070+ </Project>
7171+ <Project
7272+ name="discord-chat-parser"
7373+ date="4th August 2021"
7474+ tags="Python, Golang, Discord, CLI"
7575+ link="https://github.com/BuyMyMojo/discord-chat-parser"
7676+ >
7777+ This was an additional tool made to be used with Open-FBT's predecessor. It takes exported csv files from <a
7878+ href="https://github.com/Tyrrrz/DiscordChatExporter" , target="_blank">DiscordChatExporter</a> and
7979+ extracts the UserIDs within. This was made to log users found within discord servers centered around VRChat
8080+ piracy and trolling to then bar them from entry of any server that both used Open-FBT's predecessor and
8181+ opted in to this functionality.
8282+8383+ Originally written in Python this was another project I transferred to a new language, unlike the bot itself
8484+ I decided to write this in Go for simplicity.
8585+ </Project>
8686+ <Project
8787+ name="Mojo's Kitchen Chaos(Course work)"
8888+ date="23rd Febuary 2023"
8989+ tags="Unity, C#, GameDev, Course"
9090+ link="https://buymymojo.itch.io/mojos-kitchen-chaos"
9191+ >
9292+ <sub><a href="https://github.com/BuyMyMojo/mojo-kitchen-chaos" target="_blank">Source code</a></sub>
9393+ <hr>
9494+ In order to learn more about working in Unity I followed <a
9595+ href="https://www.youtube.com/watch?v=AmGSEH7QcDg" target="_blank">this</a> course from <a
9696+ href="https://www.youtube.com/@CodeMonkeyUnity" target="_blank">Code Monkey</a> on YouTube.
9797+ </Project>
9898+ <Project
9999+ name="Godot Micro Games(Course work)"
100100+ date="23rd Febuary 2023"
101101+ tags="Godot, GDScript, GameDev, Course"
102102+ link="https://buymymojo.itch.io/"
103103+ >
104104+ <ul class="list-disc pl-5">
105105+ <li>
106106+ <a href="https://buymymojo.itch.io/speedy-saucer" target="_blank">Speedy Saucer(2D)</a>
107107+ </li>
108108+ <li>
109109+ <a href="https://buymymojo.itch.io/alien-attack" target="_blank">Alien Attack(2D)</a>
110110+ </li>
111111+ <li>
112112+ <a href="https://buymymojo.itch.io/martian-mike" target="_blank">Martian Mike(2D)</a>
113113+ </li>
114114+ <li>
115115+ <a href="https://buymymojo.itch.io/project-boost" target="_blank">Project Boost(3D)</a>
116116+ </li>
117117+ </ul>
118118+ <hr>
119119+ These are some small games made while following <a href="https://www.gamedev.tv/"
120120+ target="_blank">GameDev.tv</a>'s Godot 2D and 3D courses.
121121+ </Project>
122122+ <Project
123123+ name="Rust 3x+1"
124124+ date="5th March 2022"
125125+ tags="Rust, Math, CLI"
126126+ link="https://github.com/BuyMyMojo/rust-3xp1"
127127+ >
128128+ I found myself watching a <a href="https://youtu.be/094y1Z2wpJg" target="_blank"
129129+ class="nav-btn backdrop-contrast-150">Veritasium video</a> about the Collatz
130130+ Conjecture, more simply known as 3x+1, and I found myself drawn to it for a time.
131131+ <br/><br/>
132132+ I was looking for a small project to work on and figured I'd try my hand at writing my own tool to brute
133133+ force the Conjecture to find another looping sequence. I never found one sadly but the project was a great
134134+ learning exercise during my early days of Rust development.
135135+ </Project>
136136+ <Project
137137+ name="RedisFS"
138138+ date="14th July 2022"
139139+ tags="Rust, Redis, CLI"
140140+ link="https://github.com/BuyMyMojo/RedisFS"
141141+ >
142142+ I had a really silly Idea while working on the bot behind Open-FBT, what if I used a Redis database to store
143143+ files? well the answer if a pretty fast but inefficient RAM based file storage server.
144144+ </Project>
145145+ <Project
146146+ name="verify-rs"
147147+ date="8th January 2023"
148148+ tags="Rust, Hashing, CLI"
149149+ link="https://github.com/BuyMyMojo/verify-rs"
150150+ >
151151+ verify-rs is a simple cli tool for printing out several kinds of hashes from an input file. I just needed a
152152+ simple tool to do this so I decided to write my own. It supports sha1, sha256, sha512, sha3_256, sha3_512,
153153+ sha3_224, sha3_384, blake2s256, blake2b512 and blake3.
154154+ </Project>
155155+ <Project
156156+ name="Another ssimulacra2 cli(as2c)"
157157+ date="23rd October 2023"
158158+ tags="Rust, CLI"
159159+ link="https://github.com/BuyMyMojo/another_ssimulacra2_cli"
160160+ >
161161+ as2c was a fork of the initial release of <a href="https://github.com/rust-av/ssimulacra2_bin"
162162+ target="_blank">ssimulacra2_bin</a> I made to add "video"
163163+ support.
164164+ <br/><br/>
165165+ This was accomplished by having the user export both the Source and Distorted videos as image sequences into
166166+ separate folders and then comparing files with matching names. Since the ssimulacra2 calculation is single
167167+ threaded I added the ability to run the calculations across multiple threads when working in "video mode".
168168+ <br/>
169169+ Another addition I made was allowing the user to specify the colour space and colour transfer of the images,
170170+ in the initial implementation of the tool it defaulted to SRGB BT709.
171171+ </Project>
172172+ <Project
173173+ name="AI-Gopher"
174174+ date="4th Febuary 2022"
175175+ tags="Golang, Twitter, Bot"
176176+ link="https://github.com/BuyMyMojo/AI-Gopher"
177177+ >
178178+ AI-Gopher is a bot that automatically posted a tweet generated by ChatGPT3. Honestly nothing great or useful
179179+ but it was at least a good opportunity to learn more about Go and interacting with some APIs and OAuth 1.0.
180180+ <br/><br/>
181181+ This project was technically against the Twitter TOS at the time but I didn't know that, oops!
182182+ </Project>
183183+ </main>
184184+</BaseLayout>