About Me
My hero's journey.
Hi, I'm Gregory Gaines, a full-stack software engineer and aspiring blogger who specializes in building serverless microservices. My goal is to make the internet more accessible and fun.
I started programming at 12 years with C++ and Java. I created binary search trees and hacked almost every video game console I had. Soon after, I learned about emulation which jump-started my passion for computer science.
My first jobs were at startups working on simple WordPress / PHP sites with HTML, CSS, and JS. Then, I got a taste of FAANG with a great job at Amazon Web Services where I got to see the true power of the cloud at work. Next, I moved on to Google solving massive problems and having tons of fun doing it!
When not programming, I enjoy watching anime or reading manga while critiquing its narrative's strengths or flaws. Some of my favorites are Hunter × Hunter and Toaru.
You can reach me on Twitter, LinkedIn, GitHub, Reddit, or by mail at gainesagregory[at]gmail[dot]com.
What I'm Up To
My Current Goals.
Inspire others
- Got sent a message expressing how much my article inspired them. I am ecstatic!
Complete GBA emulator
- Complete ARM7TDMI CPU
- Complete LCD
- Write SPU
- Correct memory timings
Write more interesting articles
- Come up with more interesting things to write about, but they take so long to accurately pen down.
Demo the power of Flutter and Golang
- Trust me, what I have in store is amazing!
Get out the house and sleep more.
- I should make some friends.
- Find some cool places to go.
- Get a full eight hours of sleep.
Work Experience
Professional Work.
Jul 2021 - Present
Software Engineer
Amazon Web Services
Jul 2020 - Jul 2021
Software Development Engineer
Hamilton Multimedia LLC
Mar 2017 - Mar 2020
Software Engineer
Air Care Companies Inc.
Apr 2019 - Oct 2019
Technical Developer
Latest Posts
My Latest Writings.
Emulator Polling vs. Scheduler Game Loop
You've moved from games to emulators, but is the standard game loop efficient enough? Let's discuss the efficiency between polling and scheduler-based loops.
Emulating PS2 Floating-Point Numbers: IEEE 754 Differences (Part 1)
So you want to emulator PS2 floating-point numbers? Be warned, the PS2 doesn't follow the IEEE 754 specifications. Let's dive into how to make it happen!
A Letter to Rust Users: Don’t Test Implementation Details (Unit vs. Integration Tests)
Don't test implementation details using unit tests in Rust, as a developer you should be testing behavior.
My Attempt at Running a Gameboy Emulator in Google Sheets
You must be thinking "only an idiot would try to run a Gameboy emulator in Google Sheets"? And you'd be right! I was on Google Sheets one day and thought this is boring, and you know what's not boring? Gameboys!
The Only JavaScript Sorting Guide You'll Ever Need
Today, we are going to learn about sorting in JavaScript. Starting with the history and algorithm used for .sort(). Then learning how to sort primitives and objects. Let's jump in!
Adding Save States to an Emulator
Learn how to add save states to your emulator by using utilizing software design patterns so you'll have infinite chances to catch that shiny Pikachu.
Decoding the ARM7TDMI Instruction Set (Game Boy Advance)
Learn how to decode the entire ARM7TDMI instruction set to develop your own Game Boy Advance emulator.
My Watchlist
My Future Watches.
Dragon Ball Super: Super Hero
JoJo no Kimyou na Bouken Part 6: Stone Ocean
Mahou Shoujo Madoka★Magica Movie 4: Walpurgis no Kaiten
Mob Psycho 100 III
Shingeki no Kyojin: The Final Season Part 2
Shinseiki Evangelion Movie: Air/Magokoro wo, Kimi ni
My Q&A
Interesting Facts About Me.
Favorite programming language?
I'm going to say Java. I feel at home writing it, and anything I build feels concise and structured.
How many hours of sleep you get a night?
const hoursOfSleep = 3;
console.log(hoursOfSleep < 8 ?
'Not Enough' : 'Just Right');
Favorite anime?
It has to be between Toaru or HxH. With HxH, seeing a shōnen tell a story on a massive scale while staying narratively coherent is beyond impressive.
Side characters can get about 8 minutes of screen time and out-develop many anime's main characters, but I won't say any names.
What hardware / software do you use?
My MacBook is for web development or any low-power tasks. My desktop (AMD Ryzen 5, NVIDIA 2060) is for beefy tasks that would kill my Macbook. 😨
Your favorite programming project?
I have to go with emulators. Retro game consoles have a big part of my childhood, not to mention the countless ones I have burned up, shorted out, or outright broken.
I get a massive sense of satisfaction when I develop an emulator and have a game boot up while holding the original copy that I played years ago.
Not to mention that developing an emulator is one pinnacle of computer science and research beyond just the programming, with a dabble of electrical engineering thrown in the mix. Don't you get excited thinking about it!
Hobbies
When not programming, I enjoy watching anime or reading manga while critiquing its narrative's strengths or flaws.
Support Me
Help Support What I Do.
Got A Question