My implementation of Tetris. I started this out using Swing to render everything, but then I decided to try out OpenGL through LWJGL (even though I'm not using 3D graphics or anything intense, I thought it would be an interesting thing to learn a bit of). Unfortunately, OpenGL 3 is complex and I didn't figure it out in the end (the game uses OpenGL 1.1 functionality), as it forces the use of shaders.
I think that I learned a lot while making this, even though it didn't turn out great. First and foremost, I learnt the importance of planning, when I had to refactor a large amount of the code in the middle of development. That wasn't fun. I also learnt how to use both command line git and GitHub. Although I'm not currently working in a team, it's still useful to have version control. And, lastly, I learnt that projects are usually harder than they appear.