Hello and welcome! My name is Francis Joseph Serina and I’ve been a Software Engineer, Indie Game Developer, and Educator. The following is a chronicle of my professional development right after graduation up until today.
Chapter 1: The Beginning
I graduated with a Bachelor’s Degree in Computer Engineering from the University of the Philippines Diliman in 2008. I started venturing into video game development in 2009 starting with Adobe Flex. After building Tetris and Pong, I moved to C++, which I found ridiculously hard despite having built a ray tracer using C++ in my undergrad. My games then were built for Windows Command Prompt using system(“clear”); for redrawing the elements. Though inefficient, I was able to create the classic game Snake. I self-studied OpenGL 2 via books that I had to import from the US. Again, coding everything from scratch is tremendously difficult and one would cry tears of joy to get a black window open after coding for 2 days. Later on, I found Unity3D and everything suddenly became faster. At that time, it was still version 2.6. I followed the Lerpz 3D Platformer tutorial from the website, which was enough for me to understand how the engine works.
I started teaching in the middle of the school year of 2009 at Philippine Science High School – Main Campus (PSHS-MC). I taught Program Logic Formulation using C++. Later on, I showed my students what can be done in C++ by demonstrating Serpiente (Spanish for Snake). In the following school year, I opened a Video Game Development (VGD) elective teaching C++, OpenGL and Unity3D. Unfortunately, C++ and OpenGL game development are too complex at the high school level. I may have accidentally scarred some students into avoiding graphics programming forever. At the end of the school year, we held the first Interscholastic Integrated Science Olympiad where the challenge of the Computer Science and Technology Unit is a programming puzzle game called EED. This was inspired by a childhood game called The Lost Mind of Dr Brain.
In 2011, I joined my first hackathon – the Manila Game Jam (MGJ) hosted by IGDA Manila. The MGJ, part of the 2011 Global Game Jam, is a networking event where the objective is to create a video game in 48 hours. The theme then was Extinction and that game jam gave birth to Lasers & Bugs. A couple of months later I was hired by Gameloft Manila to work on a couple of projects. During my stay at Gameloft, I realized that teaching was my passion aside from making video games. After 6 months, I left Gameloft and went to the University of the Philippines Information Technology Training Center (UP ITTC), which is now called UP System IT Foundation (UP SITF), to teach programming. My application was timely since the last and only game development teacher just left for China and there are students currently enrolled. When I applied to teach video game development, they immediately accepted my application and I started the week after.
Initially, we built the games without a framework in C++, making us OS-dependent. We had a simple Game Loop just to understand the different modules of redrawing elements, updating the logic, and gathering user input. The first projects were Snake and Dodge the Asteroid. The next step would be to add multimedia and have a more robust and platform-independent framework. We used Simple DirectMedia Layer (SDL) for all multimedia handling. At that time, SDL 1.2 was the latest stable build available for all platforms. We redid snake and dodge the asteroid as a class activity and built a C++ framework around SDL called GD4N, which stood for Game Development for Noobs. The project then was Tetris. Afterwards, we went to 3D and had case studies for OpenGL and SDL such as FPS-like movement and height maps. Before leaving UP ITTC, I created lecture materials to be followed by the succeeding game developer teachers. From time to time, I was requested to handle short courses on video game development on Saturdays.
I returned to PSHS-MC to teach Computer Science and reopen the VGD elective. In Feb 2013, I joined the MGJ again where the theme is an audio file of a beating heart. From this, I created my first endless runner set in a blood vessel called cholesteRUN. This game garnered the People’s Choice Award. A couple of months later, I joined the board of IGDA Manila and became the Chairperson. Around this time as well, I was contracted by the Game Developers Association of the Philippines (GDAP) to help propagate video game development by teaching future TESDA trainers.
As chairperson of IGDA Manila, we held various monthly meet ups where people can freely attend. The meet ups were mostly 1-2 hour seminars discussing topics ranging from design patterns, 2D art, monetization, cross-promotion, etc. On Feb 2014, I participated in the MGJ as an organizer rather than a developer. Personally, I was dismayed for not jamming but joyful to see that we’re getting more and more participants each year. Not to mention that 3 of my high school students joined and presented their games to everyone.
At this point, I realized that the programming lectures I delivered in the past 2 years have barely evolved. Same went for my VGD elective – I was still using the same materials I created 3 years ago. I had to admit to myself that I’m getting outdated. I found it embarrassing to be invited to give talks and hold seminars on technology when I myself am left behind by the times. I had to upgrade. Therefore, I decided to resign from my teaching position in May 2014 to become a student once again.
Chapter 2: The US Journey
I pursued a Masters in Computer Science in DigiPen Institute of Technology in Redmond, WA. What I really liked about DigiPen is that it is project-focused with the goal of garnering experience by creating games in teams. I was lucky enough to have found really talented and passionate people. My first game team produced a 4-player gravity-based local PvP called Astrobots. On my second game team, we created a 2.5D survival exploration game called Genesis. I was the Producer for Astrobots and the Technical Director for Genesis. Despite already working on school projects, I still decided to join the 2015 Global Game Jam hosted by the Academy of Interactive Entertainment – Seattle, WA. For this one, we created Uncertainty is Imminent, a VR game where you need to escape a malfunctioning spaceship.
After DigiPen, I was employed by Autodesk and moved to Pittsburgh, PA to work on Autodesk ReCap – a tool to merge, annotate, and share point clouds from LiDAR scanners. My tasks included migrating the desktop app from Qt 4 to Qt 5, developing the desktop-side of the project transfer workflow between ReCap for mobile and Recap for Desktop, and performing the typical maintenance of a 5-year old code base. I worked for Autodesk from May 2016 to Feb 2018.
While in Pittsburgh, I launched my physics-based puzzle game for mobile – Glow with the Flow. Though financially unsuccessful, I am proud to claim that I have shipped a game on my own. I also joined 2 game jams hosted by the Game Dev Network (GDN). On the first one, my team created Jellie Jail – a turn-based strategy game. For the second one, we developed Deckhand, a resource management sea-skirmish simulator. I also joined the 2017 Global Game Jam hosted by Pittsburgh IGDA and met more creative people. Together, we created Tiki vs The Surfers – an action game where you defend your island from invading surfers using the power of the Tiki gods.
After Autodesk, I moved to Plantation, FL to work for Magic Leap. I was part of the Unity SDK team which created the plugin that enabled external developers to build apps for the MagicLeap 1. Our team was also responsible for creating examples and writing the preliminary documentation. My primary responsibilities were the Media Player Example, Persistent Coordinate Frames Example, Hand Meshing Example, and Image Tracking Example.
While working at Magic Leap, I developed a couple of personal endeavors. I was experimenting with Compute Shaders in Unity3D and implemented my own 2D Realtime Fast Fourier Transform. The code is public and available here. I was also experimenting with C# Interoperability with C++, aka C# Marshaling. I created a cheat sheet here. I worked for Magic Leap up until my student visa expired – May 2019.
Chapter 3: Return to the Philippines
I took a break and wandered around – from the Grand Canyon National Park to Yosemite National Park to Hawaii to Cagayan de Oro to Singapore – before coming back to Quezon City. My software development career was on pause as well. I went back to the academe as a member of the administration instead of the faculty. Instead of going back to PSHS-MC, I was hired as Science Education Specialist at the PSHS Office of the Executive Director (PSHS-OED) where I oversaw 2 major projects dealing with Educational Technology. My first project was the procurement, deployment, and monitoring of the official Learning Management System to be utilized by all 16 PSHS Campuses. The second is the procurement and assembly of the Video Studio which would assist the faculty in creating reusable educational video content. I accomplished both with confidence from my direct supervisor but I had to resign because this is not the career path that I wanted for myself. I left in May 2021.
I explored 3D printing and kinematic sculptures for a bit. I learned a enough of Blender to be able to model some basic shapes. I tried to replicate Earnshaw’s Detent Escapement by deriving the formulae solely on the diagrams from Wikipedia. I made my own blender add-on to automatically design a Chronometer Escapement based on a few parameters.
On December of the same year, I returned to being a programmer. I worked for Ninja One, an IT management tool used by many organizations to remotely monitor and maintain desktop machines within their business network. I was a C++ Developer fixing bugs and adding features for the Ubuntu version of the app. In April of the following year, I switched to Cloudberrie PAAS, a Norwegian start-up creating VR training software using Unity. I was a Senior Software Engineer mentoring 11 other developers in the team to transition from start-up to enterprise.
And that’s my story… so far.