In the last years of school I picked computer science as one of my major subjects. Over the course of two years this class covered object-oriented programming in Java (using the rather strange BlueJ IDE), UML (the horrors), SQL and basic concurrency principles. If someone were to trace my "career" in software back all the way, they'd arrive at these classes held in a room filled with Windows XP machines and mostly miserable students. Computer science was not popular.
I soon started to attempt creating my own computer games. Java was the natural choice (I don't think I was aware of much else) and I remember poring over a large stack of printouts: A tutorial on 2D game development. If memory serves correctly, this tutorial led me to the Lightweight Java Game Library (LWJGL) and OpenGL.
This got me interested in the game engines and I started fiddling with OpenGL myself creating EPHemeral, a Java game library that uses the LWJGL OpenGL bindings. It implements Java abstractions for (then-modern) OpenGL instruments like vertex array objects, shaders and so on. EPHemeral also implements some more advanced functions like glyph-based text rendering and SAT-based 2D polygon collisions.
Looking back at these early programming endeavors, I'm quite impressed with my younger self. The learning curve was steep back then before the indie gamedev movement really took off. After more exposure to programming at university I decided to rid myself of Java and re-implemented EPHemeral as CPHemeral in C++ for Windows.