Redesigned to have a more retro theme. Used a 3D model of a macintosh from sketchfab (cited in github). To give it a retro CRT screen look I made the website be physically drawn onto the computer screen mesh. Also redesigned the contents of the website too look more fitting for a macintosh.
Finished pokepy a while ago. heres an update. pokepy is a character level language model that generates pokemon sounding names. It was trained on a list of all 1025 pokemon. This was made with ONLY numpy, no pytorch, no autograd, and no other deep learning libraries. It started as a simple MLP, then I expanded it into a WaveNet style architecture. I used Andrej Karpathy’s Zero to Hero series as inspiration. To run pokepy yourself, you just need to run the .command or .bat file from the source code. This runs it locally on http://0.0.0.0:10000.
I built pokepy, a character-level language model that generates pokémon sounding names completely from scratch using only numpy. The main goal of this project was to understand how neural networks actually work instead of just using libraries that hide everything. I did not use PyTorch or autograd, so I had to manually build the important parts like embeddings, linear layers, batch normalization, activations, loss functions, backpropagation, and gradient updates. I first built a simple MLP model. It used a 3 character context window, meaning it only looked at the previous 3 characters to predict the next one. The model was able to learn basic patterns from pokémon names, but I noticed that it struggled when names had longer patterns because it could only see a small amount of information.To improve this, I built a WaveNet-style model. Instead of just making the model bigger, I changed the architecture so it could understand more context. Using FlattenConsecutive layers, the model slowly combined groups of characters together, increasing the context window from 3 characters to 8 characters.The hardest parts of this project were implementing everything manually and debugging how each part worked. Batch normalization was difficult because I had to keep track of running statistics for inference, and backpropagation required me to calculate the gradients for every layer instead of using automatic tools.After comparing the MLP and WaveNet models, I learned that improving a model is not always about adding more parameters. Sometimes changing how the model understands information, especially context, can make a bigger difference. I also deployed the final WaveNet model using Hugging Face Spaces and Gradio. The demo loads the trained numpy weights and generates new pokémon names without using any deep learning frameworks. This project helped me understand the foundations of language models and gave me a better idea of what is actually happening inside neural networks when they learn.
Complete Redesign
I redesigned my portfolio website because I didnt like how the old loader and navigation system worked. I also switched from a static vite setup to next.js. The loader definitely needs some work. I also switched from using VS Code to Cursor. I like how the menu looks and works. I had also spent time sketching out and writing out the contents of the website and how I wanted it to look like. Feel free to give feedback and suggestions. Also looking for ideas on what to add as my Hero.
Portfolio Color Change
I added different color options to my portfolio website. Currently there is Dark mode, Light mode, and a special Retro mode. The content in the website isn’t final. Still planning on fixing the moving particles on the landing page, and looking to add more features. Let me know if you have any ideas for this.