[{"content":" Point Loma Nazarene University — San Diego, CA # Role: Summer Research Developer\nDuration: May 2026 – July 2026\nWhat I did # Conducted summer research through the university developing a video game Designed and built a game that represents a violent video game concept in a non-violent application Applied software engineering principles to game development in an academic research setting ","date":"1 May 2026","externalUrl":null,"permalink":"/experience/game-dev-research/","section":"Experience","summary":"","title":"Video Game Development Summer Research","type":"experience"},{"content":" Overview # Built a fully implemented programming language designed for shader programming as part of a Programming Languages course. The language is built from scratch in C++ and Java and includes a complete compiler pipeline from source code to execution — Scanner, Parser, AST, Type Checker, Code Generator, and Interpreter.\nThe language is designed around a cellCode function that returns a vector3 color value, making it suitable for pixel shaders and cellular automaton-style graphics programs.\nTech Stack # Languages: C++, Java Components: Scanner, Parser, AST, Type Checker, Code Generator, Interpreter Build Tool: g++ with C++17, javac Features # Full compiler pipeline from source text to execution Custom type system with float, int, bool, string, and vector3 types Built-in RGB vector type with .r, .g, .b component access Control flow — if, while, for User-defined functions with typed parameters and return values Texture loading and sampling via getTextureColor Compile-time constants with #def Full static type checking with error messages Built-in math functions — abs, sqrt, pow Mouse and canvas position constants (MOUSE_X, MOUSE_Y, etc.) Architecture # The compiler and interpreter follow a clean pipeline:\nScanner — tokenizes source text into a stream of tokens Parser — recursive descent parser that builds the AST Type Checker — walks the AST and verifies type correctness Code Generator — emits a flat token-stream IR to input.txt Interpreter — Java program that reads and executes the IR What I Learned # How to build a full compiler pipeline from scratch Implementing a recursive descent parser and AST in C++ Static type checking and code generation techniques Bridging a C++ compiler with a Java interpreter via an intermediate representation Designing a domain-specific language with a clear grammar and type system Links # GitHub Repository ","date":"1 June 2025","externalUrl":null,"permalink":"/projects/programming-language/","section":"Projects","summary":"","title":"Custom Shader Programming Language","type":"projects"},{"content":" Overview # Built a fully playable 2D dungeon crawler game in Java using JavaFX. Players choose a class, survive escalating waves of enemies, and face powerful boss encounters every 3 levels. The game features a progression system where difficulty scales with each level — faster enemies, larger waves, and tougher bosses with guard formations.\nTech Stack # Language: Java Framework: JavaFX Rendering: Canvas-based via GraphicsContext Game Loop: AnimationTimer running at ~60fps Classes \u0026amp; Gameplay # Players choose between two classes at the start:\nArcher — fires arrows, unlocks a 3-arrow spread shot at Level 3 Ninja — throws spinning shurikens, unlocks a 3-shuriken spread shot at Level 3 Enemies march across the screen firing bullets at the player. Every 3rd level replaces normal waves with a boss encounter — a super enemy twice the normal size, surrounded by a 5×6 guard formation.\nFeatures # Two playable classes with unique weapons and Level 3 upgrades Wave-based progression system that scales enemy count and speed per level Boss encounters every 3 levels with full guard formations Player health restored to 100 at the start of each new level Username displayed above the player character during gameplay Architecture \u0026amp; Design Patterns # Abstract class hierarchy — Player → Archer / Ninja, Enemy → SuperEnemy Polymorphism used for player and enemy behaviors Iterator-safe collision detection Clean separation of concerns across 6 core files What I Learned # Building a real-time game loop with JavaFX\u0026rsquo;s AnimationTimer Applying OOP principles like abstract classes and polymorphism in a practical project Managing game state, collision detection, and progressive difficulty scaling Structuring a multi-class Java project cleanly from the ground up Links # GitHub Repository ","date":"1 January 2025","externalUrl":null,"permalink":"/projects/dunegon-crawler/","section":"Projects","summary":"","title":"Dungeon Crawler — 2D JavaFX Game","type":"projects"},{"content":" Point Loma Nazarene University — San Diego, CA # Role: Teaching Assistant, CSC 2054\nDuration: September 2025 – December 2025\nWhat I did # Served as TA for CSC 2054 Data Structures and Algorithms in C++ Assisted students with C++ coding during weekly lab periods and office hours every week throughout the semester Reinforced understanding of core data structures and algorithm concepts through hands-on help ","date":"1 September 2025","externalUrl":null,"permalink":"/experience/teaching-assistant/","section":"Experience","summary":"","title":"Teaching Assistant — CSC 2054 Data Structures \u0026 Algorithms","type":"experience"},{"content":" Overview # Rebuilt the video game \u0026ldquo;Contraption Zack\u0026rdquo; into a fully playable 2D Java game as part of a Software Engineering course project. The project focused on applying real data structures to a game environment, recreating the first 10 levels with working trap and level mechanics.\nTech Stack # Language: Java Data Structures: Hash maps, Singletons Project Type: Month-long team software engineering project Features # Fully playable recreation of the first 10 levels of \u0026ldquo;Contraption Zac\u0026rdquo; Trap mechanics and level progression systems Applied software engineering design patterns including the Singleton pattern Built collaboratively with a team using structured development practices What I Learned # How to apply data structures like hash maps in a real, practical application Using design patterns such as Singletons in a Java project Collaborating on a larger codebase with a team over a defined project timeline Breaking down a complex game system into manageable components Links # GitHub Repository ","date":"1 June 2024","externalUrl":null,"permalink":"/projects/contraption-zac/","section":"Projects","summary":"","title":"Contraption Zack — 2D Java Game Remake","type":"projects"},{"content":" Point Loma Nazarene University — San Diego, CA # Role: Admissions Ambassador\nDuration: January 2025 – Present\nWhat I did # Lead 12 campus tours per semester, communicating the university experience to prospective students and families Assisted with admissions events, enhancing communication and presentation skills Supported operations for Preview Days serving approximately 300 prospective students per event ","date":"1 January 2025","externalUrl":null,"permalink":"/experience/admissions-ambassador/","section":"Experience","summary":"","title":"Admissions Ambassador","type":"experience"},{"content":"","date":"1 May 2026","externalUrl":null,"permalink":"/experience/","section":"Experience","summary":"","title":"Experience","type":"experience"},{"content":"","date":"1 May 2026","externalUrl":null,"permalink":"/tags/game-dev/","section":"Tags","summary":"","title":"Game-Dev","type":"tags"},{"content":"Hey there! My name is JJ and I am a Software Engineering student at Point Loma Nazarene University, I am passionate about building cool things and working on game dev projects! Check out my projects and experience through this webpage, and even a downloadable pdf of my resume!\n","date":"1 May 2026","externalUrl":null,"permalink":"/","section":"Hi, I'm JJ Gillis 👋","summary":"","title":"Hi, I'm JJ Gillis 👋","type":"page"},{"content":"","date":"1 May 2026","externalUrl":null,"permalink":"/tags/research/","section":"Tags","summary":"","title":"Research","type":"tags"},{"content":"","date":"1 May 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"1 May 2026","externalUrl":null,"permalink":"/tags/university/","section":"Tags","summary":"","title":"University","type":"tags"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/c++/","section":"Tags","summary":"","title":"C++","type":"tags"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/teaching/","section":"Tags","summary":"","title":"Teaching","type":"tags"},{"content":"","date":"1 June 2025","externalUrl":null,"permalink":"/tags/compilers/","section":"Tags","summary":"","title":"Compilers","type":"tags"},{"content":"","date":"1 June 2025","externalUrl":null,"permalink":"/tags/java/","section":"Tags","summary":"","title":"Java","type":"tags"},{"content":"","date":"1 June 2025","externalUrl":null,"permalink":"/tags/programming-languages/","section":"Tags","summary":"","title":"Programming-Languages","type":"tags"},{"content":"Heres just a small sample of some of my top projects, want more? Check out all my projects below, and visit my GitHub to see the source code!\n","date":"1 June 2025","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/tags/communication/","section":"Tags","summary":"","title":"Communication","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/tags/javafx/","section":"Tags","summary":"","title":"JavaFX","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/tags/leadership/","section":"Tags","summary":"","title":"Leadership","type":"tags"},{"content":"","date":"1 January 2025","externalUrl":null,"permalink":"/tags/oop/","section":"Tags","summary":"","title":"OOP","type":"tags"},{"content":"","date":"1 June 2024","externalUrl":null,"permalink":"/tags/data-structures/","section":"Tags","summary":"","title":"Data-Structures","type":"tags"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" Jeremiah Gillis # Software Engineering Student — Point Loma Nazarene University\n📧 jeremiahj0623@gmail.com | GitHub\n📄 Download My Resume (DOC)\nEducation # Bachelor of Science in Computer Science: Software Engineering\nPoint Loma Nazarene University — San Diego, CA\nExpected Graduation: December 2026\nGPA: 3.5\nSkills # Languages: Java, C++, Python, PHP, HTML, SQL\nTools: GitHub, MySQL, Unix, Excel, MS Word\nConcepts: Data Structures \u0026amp; Algorithms, Software Development Cycle, OOP, Database Design\nSoft Skills: Leadership, Public Speaking, Team Management, Client Communication, Adaptability\nProjects # See my Projects page for detailed write-ups.\nHarry Potter Sorting Quiz — PHP/HTML web app with MySQL database (PHP, HTML, MySQL) Contraption Zac Remake — 2D Java game rebuild using hash maps and singletons (Java) Dungeon Crawler - 2D Java Game self created using muticlass features and levels (Java) Experience # See my Experience page for full details.\nVideo Game Development Summer Research @ PLNU — May 2026 – July 2026 Teaching Assistant, CSC 2054 @ PLNU — September 2025 – December 2025 Admissions Ambassador @ PLNU — January 2025 – Present Volunteer \u0026amp; Leadership # New Student Involvement Leader — Plans and leads events for incoming freshmen, empowers small group leaders Club Volleyball President — Manages PLNU men\u0026rsquo;s club volleyball program including finances and coaching Coursework # Data Structures \u0026amp; Algorithms, Software Engineering, Database Systems, Object-Oriented Programming, Unix Systems\n","externalUrl":null,"permalink":"/resume/","section":"Hi, I'm JJ Gillis 👋","summary":"","title":"Resume","type":"page"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]