June 16, 2025
Ok so my project got rejected AGAIN. the .exe wasnt working BUT IT WORKED ON MY MACHINE AHHHH. anyway i switched from sklearn to tensorflow for importing mnist and it worked fine on other computers. There were some problems building the .exe but i figured it out.
Ok I made a GitHub release for it now.
It is now fixed and working! First off, I just made the mod check the natives folder first when looking for dependency DLLs and put the ones that I downloaded from Vosk in there. There was also a small bug where instead of sending a packet to the other players on the server that had my UUID for the message, it sent their own UUID for the message, so it showed MY message above THEIR head. Fixed that easily.
Finally figured out what the problem is. The libvosk.dll file won't load on his correctly because it's missing some dependencies that I already have. I used https://github.com/lucasg/Dependencies to look at the dll on both our computers and his is missing 6 imports in C:\msys64\mingw64\bin\libstdc++-6.dll. Not sure if this would be a frequent issue for other people tho. I'm probably going to include all three dependency DLLs along with libvosk.dll. Another thing, does Curseforge/Modrinth even allow me to add files that aren't .jars? Can I put a zipped folder in there?
Completely forgot to commit stuff to GitHub and make devlogs for this. I added the gif selector to the main page and styled everything to look much nicer, with a new color palette. Not sure if I'll keep it, but it definitely looks better than the old one. Next thing I'll make is the ability to add chatrooms and participants. That's the last major feature this website needs, although there's plenty more things to do afterwards.
I personalized the content and added small touches to the icons and hero section. I also put it on GitHub pages: https://mattseq.github.io/Portfolio-Remake/
This isn't recorded with hackatime because it's not really a part of this project, but I finally got started with React Native and Expo. It's going pretty well, theres a few things I need to learn and change, but I don't think it should be too hard. I'm kinda worried im not gonna make it before the deadline for Gemini YSWS or I won't have enough hours especially considering I'm prototyping most of my work on the website which is being tracked for SoM not Gemini.
I had to redo K-means because I had finished it on another computer and didnt get it back. I also added a README.
Finished the last thing: k-nearest-neighbors (knn) classification. Also just had to redo that on my computer. The only thing I haven't done on my yet is cross-validation. I'm not doing that. It's not that its that complicated, it's just boring especially since I've already done it and unnecessary. also didnt do density-based scan for k-means and don't really want to. i got other stuff to do. gonna ship right after i put this on github.
Redid the original pacman agent using just a perceptron on my computer. Ran into a few bugs because for some reason they said it was necessary for the classify method to return a list of the best move. This is getting much easier now that I'm doing it all over again multiple times.
Major progress! I found an alternative to Tenor and Giphy: Klipy. For some reason, Tenor (which was the one I was planning to use) doesnt make it very easy to get the API key. You have to do some thing with Google, idk. But Klipy makes it pretty easy. You can also show ads along with the gifs on your website/app and get paid for it which is pretty cool ig. Here's a picture of the gifs that i fetched using Klipy's api. I still need to make the grid better but its pretty good for now.
Finally did one of the coolest part (in my opinion) of ml: reinforcement learning! We did both Q-learning and Approximate Q-learning. Here's a video of my AI playing Pacman:
Made the main functionality for the bestiary. The name is still under consideration. We're thinking Living Grimoire. I used the speech bubble rendering from one of my other mods that hasn't yet been put on Modrinth or Curseforge. I also made a typing effect and made it pause on certain characters like periods and commas.
I made it just use the Hack Club API at ai.hackclub.com. Works much better although occasionally it doesn't get a response.
I made it use llama-cpp-python to run models much faster. I fiddled around with the context and stuff, but it just won't reply like its supposed to. I tried a slightly bigger model and it still doesn't work. I also realized that I could just use Hack Club's AI API, but thats kinda lame.
Got started with the transformers module from HuggingFace. Probably going to switch it out since apparently there are other options such as llama-cpp-python which are much faster. Also the context doesnt work properly and I'm not sure why. Just look at this picture. I told it it was a an sarcastic witty AI that roasts users based on their messages and instead it gave me this:
A Discord bot (and maybe eventually a Slack bot) that insults you based on context from chat. I tried making it locally hostable but my computer's a potato so it just uses the hackclub ai api
Now you can actually see the messages! It gets the messages from the database ordered by timestamp, gets the senderId, gets the displayName for each users senderId, and display their displayName and the gif they sent. you can also scroll through the chat window and it doesnt scroll other components.
we did binary classification and multi-class classification using perceptrons and k nearest neighbor. Right now, I don't have the code for the multi-class classification and knn models because it was done on my partner's computer. We finished early, so the professor gave us some of the real homework she gives her students about k-means clustering (unsupervised learning). So far, I've only done part 1 of that. Also I'm waiting until I have all the starter code at the very least before I make a github repo for all of this.
I attended a program that teaches ML (machine learning). All the machine learning algorithms were made completely from scratch, most without even numpy. There was starter code for separate systems such as the Pac-Man game, but the algorithms themselves were completely made by me. I did not use AI to code the algorithms, although it's possible it was used in some of the starter code. The coolest thing in this program was definitely making an AI that plays Pac-Man.
Just a quick devlog today. I made participants' usernames display below each chatroom. I'm not even sure if I want to keep it like that. I might have the username of the other participants be automatically set as the displayName if you dont specify yourself. Discord does that and it just shows the number of members below.
I set up Firestore! I also added some security rules so that each user can only access their own user data and only chatrooms with them as a participant. I also started using Firestore in my code: so far, it can create a new user when you create a new account, track the same one when you log in again, and query and display chatrooms with you as a participant. I did some research on the Tenor/Giphy APIs, and Giphy has their own SDK that I can use that has a GIF grid (like the one in Discord). Unfortunately, although they're free, their APIs have some limits. I hope I don't run into trouble with those.
added skills, projects (same as my old portfolio website), experience timeline, and contact sections. I still need to make it look right on mobile: for some reason the background container doesnt fill the entire space, so everything else gets squished super skinny. also need to add more content and update the project page
Found out how to make the Giant Bone show different textures when held in the hand vs. in GUI, it was actually really easy. I started making a Beastiary. Yes, a BEASTiary not a BESTiary. It's not going to be the regular type of starter book you get when you play a mod.
I thought I put out a devlog much earlier, but apparently not. I've found a problem. I asked my brother to test the mod, and it keeps crashing on his computer. Hopefully I can find the error and fix it so I can finally ship this thing.
Made the login page a little nicer and added some transitions. I started on the main page, and I made this very nice-looking chat bar until my dumb ahh realized that it's GIF-only, so it's not supposed to have a chat bar. I need to make the GIF API part too, which I should probably have done first. I had also accidentally exposed my Firebase API key and config on GitHub (oops), but I fixed it.
Got started on the web version of V!be. I'm using Firebase for authentication and my database. Since this is my first time using it (or any database), it took me a bit to figure it out. I'm currently working on making the website and design look nicer, and then I'll work on the backend part.
"V!be is a chat app where every message is a GIF — no text allowed. It turns conversations into a creative game of wit and timing, where picking the perfect animation is the key to getting your message across. Ready to speak a whole new language? V!be is your playground." This is the web version of the app I'm making for the Gemini YSWS. (this is me editing partway through the project. i realize that this might take longer than expected, especially compared to similar projects. however, this is my first time using Firebase and databases in general, and the first time making a more difficult website. in addition, im specifically not using AI to code and trying my best to understand everything that's going on and how Firebase works. thanks for understanding)
Finished the hero section and About Me section. The hero section is pretty much just like my old one except it has some gradient lighting in the back like my Portfolio React Template and a gradient on the text. The About Me section is new.
A complete remake of my old portfolio, keeping more or less the same style but using React and Framer Motion, with more content.
I had a bit of a panic when I realized that interpolation calls restoreSnapshot() every single tick, where before it had been once every 10 ticks. For some reason though, there isn't really a performance problem. I did notice that between rewinding two snapshots, they would be converted from NBT data every single tick when interpolating. I made it cache the already converted prevSnapshot and nextSnapshot to prevent that redundancy. I'm also going to make it so that restoring interpolated snapshots doesn't bother to restore blocks and entities, since they'll just be the same every time. Here's a video comparing the old rewind with the new one:
Just made an important update to the mod! Earlier, it saved snapshots twice a second and rewinded through them by just restoring the snapshots. This resulted in a rewind that was not very smooth since it jumped from snapshot to snapshot. Now, it interpolates between snapshots, so it's extremely smooth but also does not have to record snapshots very frequently.
This was a mod that I made for the Hackcraft YSWS but I'm updating it. It most importantly adds the ability to rewind time. The updates will include performance upgrades, more realistic and comprehensive rewinds, and more items and content.
Ok I added the lasso now. It kinda sucks because it uses Minecraft's code to leash the mobs with a lead. Problems: minimum range because lead breaks, lead also drops if the lead range is exceeded, and sometimes it doesnt even work even though mob.setLeashedTo(player) is called. I'm probably going to have to make a custom lasso renderer or find a way to use theirs more directly.
I haven't finished the music disc. Not because it's difficult but because we don't have the music yet. Instead, I started on the slingshot, which went pretty well. I used placeholders for the charge state textures and an arrow in place of the copper beads, which will be the projectiles. This is a cool video JeremySeq made with the Warped Clam.
I'm posting this devlog because I want to explain why it's been 5 hours with no real progress. I've been trying to make a glider. The problem is it's not supposed to be an armor item. Instead, when you hold it, it should display the glider above you and do the flying logic. At first, I tried coding it like it was an armor item so obviously that didnt work. Then I tried coding the glider as an entity and making it follow the player. Unfortunately, I can't seem to get it to do that without lagging behind because it only updates every tick (.05 secs), not every frame. Then I tried to allow the glider to use the player as a vehicle and have the glider ride the player. That would have been the best option if it worked. It didn't. I'm taking a break from the glider before I crash out. I hope making music discs is easier than making pottery shards.
Had a bit of trouble putting this on GitHub Pages, but I figured it out.
more messing around with React and Framer Motion. I decided not to use this as my main portfolio since I didn't create it myself and probably couldn't right now. I reorganized some of the code, made the cards glassy, and changed the README.md. I'll ship it once I get through the rest of my votes and host the site.
changed the Giant Bone item so that it can be fed to wolves, which heals them and gives them strength. Also, you can right-click with it to use the same attack as the Bogre does.
I decided that I should learn React and Framer Motion myself, so I spent a few hours messing around. For some reason, I can't figure out how to make a hover animation work on a card that already got animated in.
added impaler spike projectile and deafening effect for the Impaler mob. This picture is all you're getting. join the discord for more: https://discord.gg/BYh3bkXY
made the whole thing with Cursor in just 1.5 hours! still need to put my own information and name and host it. I'll just host my other portfolio with Github Pages and put this on mattseq.dev
A new portfolio using React made with Cursor. Includes time spent on learning React and Framer Motion without it. Just a template, does not include any information about me.
I made a basic outline of what I want. Finished skills page. Going to work on the projects page later
Well, I did it. It was easier than expected. I did kinda use AI tho (its VSCode's fault, it autocompletes). This one uses only one hidden layer of 100 neurons and still gets 95% accuracy. I might make one with Java or something instead (without ANY AI). Or maybe make a convolutional neural network from scratch next.
Making a simple neural network from scratch. Uses MNIST database of 28x28 pixel images of handwritten numbers. Made in python with just numpy.
I've decided not to add the ability for the speech bubbles to be translated between languages at all. It would require either a call to an API with rate limits/API key or a resource-draining locally running model. This commit was just cleaning some more things up for release and making sure the users understand when the model is loaded and working. I also worked on the description and icons for the Curseforge/Modrinth pages.
Couldn't figure out how to import Vosk from Maven. Still don't know why it's not working. However, I do know why it seemed like I couldn't bundle the DLL file with my mod: it has to copy it at runtime before it loads it, but the file is so big (23 MB) that it takes too long. It seems like the only way is to have the user download it separately. Also, I cleaned up some of the code, comments, and the gradle file. I've also found some options for translation APIs: Lara Translate, Microsoft Azure Translator, and Google Translate (but it's against their ToS for bulk or commercial use). I also might put in an option to use your own API if you'd like.
added vignette and FearMeter, changed how meters work and how effect events hook into them
Spent an hour trying to add chromatic aberration for a pain effect. Got just about nowhere. Maybe I'll try it later. Right now I'm going to try to add a FearMeter and maybe hook up the screenshake with explosions and other stuff.
Made an actual speech bubble render; adapts to any size bubble. I'm just about done with the mod. I just need to do some cleaning and figure out if I can import Vosk properly using Maven, but it also requires some .DLLs that might have to be put in the run folder regardless. Btw, in order to use it you'll need to download your own speech-to-text model from Vosk (they're all free and there are a lot of options, even for other languages).
Added screenshake and heavy breathing effects. Began work on creating meters like the FatigueMeter to track certain stats and trigger effects. Planning on adding sounds as well.
A mod that adds immersive effects seamlessly into Minecraft. Effects include: screenshake, heavy breathing, screen pulse, trembling, and of course, a heartbeat.
Spent several hours trying to figure out how to make a POTTERY SHARD, WHICH IS FOR SOME REASON WAY MORE COMPLICATED THAN IT NEEDS TO BE. Anyway, I found some code from Darkhax's Oh My Sherd mod to use as a reference. Now it works great (using a placeholder pottery pattern rn)
Everything works! Ran into some issues importing Vosk, so for now I manually added its files to the mod. I've already begun work on rendering actual speech bubbles so that the title isn't a misnomer.
Just finished Ping Mod! Was almost done anyway, but these changes were way harder than they should have been. Changed the rendering to use a texture, added sound, and made them visible through blocks.
A Minecraft mod that adds speech bubbles. Uses Vosk Speech-to-Text models to translate real-time speech into text above the player.
A Minecraft mod that adds a ping system.
Minecraft mod that adds new creatures. Dev videos and showcases at https://www.youtube.com/@jeremyseq/videos. Discord invite: https://discord.gg/BYh3bkXY
This was widely regarded as a great move by everyone.