This is a rather verbose and lengthy version of my resume since I don’t have any space or format constraints here. However, if you are looking for a quick and brief version, you can download the pdf version or visit my LinkedIN profile.

Table of Contents

Education

Philosophical Doctorate

Purdue University

I studied a PhD in Technology at Purdue University. The program is imparted at the Purdue Polytechnic Institute (formerly known as the College of Technology) which is at the main campus in West Lafayette (Indiana, USA).

Each PhD student belongs to a department. I was in the department of Computer Graphics Technology. The curriculum for the PhD requires taking courses in Statistics, and Methodology of Research. In addition, I took courses in Computer Graphics; since it was my area of research, and on Computer Science and Mathematics for my optional courses.

During my PhD, my supervisor and mentor was Dr. Bedrich Benes. I was part of the HPCG lab (now part of Computer Science department) where I conducted research on Computer Graphics and Additive Manufacturing (a. k. a. 3D printing), that culminated in several publications.

Master degree

IIMAS UNAM

I studied a Master’s degree in Computer Science at the National Autonomous University of Mexico (UNAM). The master program, has several locations. I spent most of my time at the Institute of Research in Applied Mathematics and Systems (IIMAS), at the main campus of Ciudad Universitaria (CDMX, Mexico).

After finishing the core courses, each student chooses a research area to focus on. I decided to go to Signals, Images and Virtual Environments, where I took several courses in Digital Image Processing and Computer Graphics.

My thesis supervisor was Dr. Edgar Garduño Ángeles, and I did a thesis which lies in the intersection of Digital Image Processing, Scientific Visualization and Computer Graphics.

Bachelor degree

FES Acatlan UNAM

I did my bachelor’s studies at FES Acatlan, which is one the satellite campi of UNAM. I studied a rather unique bachelor’s degree: Applied Mathematics and Computer Science (or M@ as we like to call it).

At that time, after the core courses (six semesters) you went to a pre-speciality path (for the last three semesters). I took the “Simulation and Decision Analysis” path, which was about studying Operations Research. Nowadays you could almost call it Data Science (but I just don’t like that term).

I decided to get my degree by doing a thesis. My thesis supervisor was Dr. María del Carmen Villar Patiño and I did a thesis about Physically Based Simulation and Computer Graphics.

Experience in the industry

Google

Googleplex

I joined Google on March of 2021 as a Technical Solutions Engineer for Stadia. My main job was helping partners to bring their content (video games) to the platform. My focus was computer graphics, so I provided support for DX11, DX12 and Vulkan. I also contributed with backend and samples to Big Wheels, a graphics framework that later became open source.

Stadia was shut down in January of 2023. After jumping on several projects, I switched to a Software Engineer position and became part of the Platforms and Ecosystems organization. At P&E, –where I work today–, I contribute to shape Google’s vision on XR.

Nvidia

Nvidia Endeavor

After graduating from my PhD in September of 2017, I joined Nvidia and they helped me to relocate to San Jose California (a.k.a Silicon Valley).

At Nvidia, I was a Software Engineer on the web browsers team, where I did some work on AR, and designed some web components of ISAAC SDK. Later, they switched me to the 3D graphics driver for the mobile team, where I did some low level work on OpenGL, worked on Safety for Automotive and made my first steps with Vulkan.

Computational Systems Technology

WTC Mexico

After finishing my bachelor’s courses in 2005, I joined Tecnologia en Sistemas de Computo (TSC) which is a software consulting company in CDMX.

I started working at TSC before getting my bachelors diploma (a decision I regret until today). On the bright side, this was my first professional experience. I started as an intern and then moved to a QA role. I worked on migrating a system from PowerHouse+Interbase to Java+Oracle.

Internships

While I was enrolled on the PhD program, I took every opportunity to do internships during the summer terms.

Adobe

Adobe SF office

During the summer of 2016 I did an internship at Adobe research with the Procedural Image lab (now part of the graphics research team). However, I sat at the San Francisco office.

My internship was around a software for modeling that simulated sculpting, where I was doing the rendering system. This was by far the most interesting internship I had. I implemented some classic graphics algorithms (Ambient Occlusion, Shadow Mapping and PBR) using a deferred shading pipeline using C++, OpenGL and GLSL.

Nvidia

Nvidia HQ

My first internship with Nvidia was in 2014 at the headquarters. I worked in the DirectX driver team, where I implemented some video format encoding in the GPU via their own assembly language. This was my first professional opportunity to work as a Software Engineer in Silicon Valley.

During the summer of 2015 I did a second internship at Nvidia, and again in the graphics driver. However, this time I was at the OpenGL driver team. I did work to expose some OpenGL extensions in the driver and to fix some bugs in OpenGL’s debug extension.

Experience in the academy

Purdue University

Knoy Hall Purdue

While doing my PhD, I had to work, first as a research assistant (RA) and later as a teaching assistant (TA) both at Purdue Polytechnic Institute. As an RA I spent my time working doing research at the HPCG lab, which resulted in my publications.

As a TA I assisted in teaching Graphics and programming courses for the CGT major. I worked in designing quizzes and grading for courses in web development (both front end and back end) and in Computer Graphics programming, which was always my favorite, because we teached OpenGL and GLSL.

Finally, I was also part of the Computational Arts Circle, where I had the chance of collaborating with Dr. Esteban García Bravo (a.k.a snebtor). Some of these collaborations also culminated in publications.

National Autonomous University of Mexico

At UNAM I had the chance of being a teacher assistant at the School of Sciences, a lecturer at FES Acatlan and a research assistant at IIMAS and the School of Sciences.

FES Acatlan

FES Acatlan UNAM

I taught two courses: Computer Graphics, which is my personal favorite and Graph Theory. I also designed the syllabus for the computer graphics course.

At FESA I tried to do my best to help and participate in every possible activity. Among others I was a technical council member, contributed to design M@’s plan of study and advised freshman students as a mentor.

School of Sciences

Facultad de ciencias UNAM

During my masters degree, I was a teaching assistant at the School of Sciences in two courses. The first: Advanced Programming was about Object Oriented Programming. The second: Modern Geometry was about doing geometry using only a ruler and a pair of compasses. Modern Geometry it’s a curios name since it is the way geometry was studied in ancient Greece.

Before that, I also worked as a laboratory assistant as part of one of the Macropojects at UNAM (which was located also at the School of Sciences) for a few months in between 2006 and 2007. There, I was in charge of maintaining our SVN repositories and I created a website using a LAMP bundle.

Institute of Research in Applied Mathematics and Systems

IIMAS UNAM

Right after finishing my masters, the Department of Computer Science of IIMAS gave me a temporary position as a research assistant for Dr. María Elena Martínez Pérez. While I worked there, I contributed to a research about segmenting blood vessels from retina images obtained with a fundus camera, which was a very fun and difficult project.

Computer skills

Programming languages

Since most of my professional life I have been a software engineer, I have extensive experience programming. Nowadays I feel more comfortable using C++, including most of the C++11 features and some of the C++20. Having said that, I am a competent developer in similar languages like C#, Java or C (as in the C19 standar).

I also have experience using programming languages with large frameworks behind them like Python, Matlab, Qt (with C++) and R.

I have spent most of my professional life working in POSIX operating systems and I feel most comfortable on GNU/Linux. Again, I am a competent developer in a Windows environment too.

As a shader language I have always preferred GLSL (either with OpenGL or Vulkan). However, I do know enough HLSL (with DX11 or DX12) to accomplish most graphics tasks.

Frameworks and APIs

My focus has been of a graphics programmer. I usually use GLTF as a windows manager and different libraries (recently I have been a huge fan of Dear imgui) to do UI for graphics apps.

I also have experience using higher level game engines like Unity and Unreal, but I am not an expert on those (yet!).

Finally, I have moderate experience as a web developer. I have used PHP and ASP.NET MVC, for the backend. I also have some knowledge of Javascript, HTML and CSS at the front end. Finally, I also know some Jekill, as you can see in this website.

General software engineering skills

For version control, I have experience working with svn but right now I am only using either git (my favorite) or P4. I usually develop using the Android approach, which includes using Gerrit to review and submit code. However, I like using Github for my personal projects.

I usually work in small teams that do sprint based development, track their progress using SW tools and do regular meetings. I am used to writing unit tests, doing code reviews and to present my work on meetings.

I am also used to work either from the office or from home. This means that If any of us is remote, I am able to keep constant communication with my team by chat and VC. If we are at the office, I like to chat (even when I am a little bit introverted) and go for lunch with my teammates.