If thereâs one thing that keeps software engineering exciting, itâs that you never really arrive. Thereâs always another language to learn, a better pattern to adopt, a smarter workflow to refine, or if youâre me, a completely unnecessary but delightfully nerdy way to turn your portfolio into a mini video game.
Welcome to âAlways Leveling Upâ! And I’m talking about both the mindset, and the actual interactive section on my developer portfolio.
đŽ The Concept: Turning âLeveling Upâ Into Something You Can Actually Play
On my portfolio site, thereâs a section titled âAlways Leveling Upâ that sums up my engineering philosophy:
âWhether itâs mentoring teammates, experimenting with AI-powered dev tools, or refining our workflow for maximum efficiency, Iâm constantly looking for ways to push the craft forward. I believe great engineering is part code, part collaboration, and a whole lot of curiosity.â
To make that section more than just text, I decided to literally make it interactive. A fun, gamified way to visualize what leveling up as a software engineer means.
So I built a small game-like scene featuring my cartoon avatar, elliottprogrammer, standing on the bottom of a six-step platform. Each platform represents an area of growth in engineering:
- đ§ System Design
- ⥠Performance
- đ¤ AI Tools
- đ Security & Auth
- đ Project Management
- đ§ (and, of course) Continuous Learning
Hovering above each platform is a glowing, rotating orb labeled with its skill.
When you click the next platform, my character jumps up to that level, collects the orb, and a little â+1 Skillâ text floats upward. Itâs simple, itâs charming, and it perfectly captures the feeling of gaining new knowledge one jump at a time.

Click each platform, make the character jump, and collect all the orbs.
đ§Š Behind the Scenes: Rigging, Sprites, and 328 Frames of Animation
This project turned out to be one of the most unexpectedly creative things Iâve coded in a while. It’s part front-end engineering, part digital art, part mini-game design!
To make the elliottprogrammer character feel alive, I didnât want to just move a static image. I wanted realistic motion, such as blinking, breathing, and jumping. That meant stepping into the world of sprite animation (a technique more common in game dev than in React apps, that’s for sure!).
Hereâs the short version of how that went down:
- Disassemble the character in Photoshop. Every arm, leg, and eyelid went on its own layer. It felt a little Frankenstein-y, but thatâs how animation works.
- Rig the character in Adobe Character Animator. Rigging is basically giving your 2D artwork a skeleton so you can animate it naturally. I recorded two animations; one for standing idle (270 frames!) and one for jumping (58 frames).
- Export frame sequences and generate sprite sheets. Each animation was turned into hundreds of image frames, which I then stitched into large sprite sheets, along with JSON metadata describing where each frame lives.
- Write the sprite logic in JavaScript. I built a custom sprite animation system that cycles through the frames at 30 fps, handles scaling, and switches between âidleâ and âjumpâ states. (If youâre curious, you can peek at the code here in my repo or scroll down to the demo.) If you visit the repo, do me a favor and give it a star! âď¸đ
đ§ The Engineering Challenge
The hardest part wasnât the animation math, it was the artistic consistency. Every frame had to align perfectly so that when the elliottprogrammer character transitioned from jumping(landing) back to standing & breathing, he didnât jitter or slide out of place.
I also had to juggle collision detection for the orbs, subtle hover and glow effects using Canvas 2D context, and scaling across different screen sizes, because I wanted smooth performance even on mobile.
By the end, I had a surprisingly robust little engine: complete with realistic sprite animations, creative artwork & assets, glowing gradients, and sound effects. Basically, all the fun parts of game programming wrapped into one joyful experiment.
đĄ The Takeaway: Leveling Up Never Stops
This project started as a small visual gimmick. A cute way to bring my portfolio to life, but it became a perfect metaphor for the developer journey.
Leveling up isnât about huge leaps; itâs about consistent motion:
- đŻ Learning something new (even if itâs just how to rig a character for animation)
- đ§Š Improving your craft (Explore new technologies, just keep building new things!)
- đ¤ Sharing what youâve learned (open-sourcing your code, writing blog posts like this)
And honestly? The best part of building this project wasnât the finished product, it was the process of learning new creative tools and pushing outside the typical web-dev comfort zone.
So whether youâre refactoring a gnarly React component, experimenting with a new AI-powered workflow, or building a tiny game just because you can… youâre leveling up too!
đ Try It Out
You can play with the âAlways Leveling Upâ scene right now on my portfolio:
Or you can demo it and play around with the code on CodePen!
đ https://codepen.io/melliatto/pen/myVGorL
And of course, view and/or fork the code on Github! (Please give me a star on the repo! âď¸)
đ https://github.com/elliottprogrammer/level-up-game
Click each platform, make the character jump, and collect all the orbs.
Each jump is a reminder: Keep building. Keep learning. Keep leveling up.
Thanks for reading!
Bryan Elliott (@elliottprogrammer)
