The key, really, is to push yourself.
Don't play with what you already know in Java (AVR, Python, whatever), go deeper into it.
I would focus on one language and really learn it. Not just do exercises, but go deep.
Make a Windows program that can scan through and communicate with things on the SMBus, read registers and write registers on them, and you'll make some people very happy.
Take that program and expand it to turn those read register values into a display, ideally both a live number and a graph of the numbers over time.
Add to that a few sliders or number boxes with up/down arrows, that write their data to specific registers on a given SMBus address.
BAM, fan controller software.
The hardware fan controllers on most modern motherboards are connected via SMBus, so at the very least you can control and log those fans.
Better yet, if someone (you, me, ameel, anybody) makes an addon fan controller with a SMBus link you can control that too.
Plus, of course, most GPUs use SMBus to communicate with their onboard voltage regulators to set core/ram voltages.
There're a ton of things connected to the SMBusses in modern computers.
As a note, SMBus is a slightly modified i2c. I'm not sure what has been modified, but for the most part the two seem to be compatible.
Alternatively if you're feeling adventurous you could take on the task of writing a USB stack for TI Tiva-C MCUs to use in the Energia IDE. I know that would make people extremely happy, I'm one of them.
Alternatively, look for what people want and/or what people need, and write that program.
I know a guy who would desperately love a version of notepad (the basic windows program) with a spellchecker (that puts the red lines under misspelled words) and a quick and easy way to change the font and text size it uses to display the raw text input.
Saves in raw text, just like notepad, it's just the display font that you change.
No clue if he'd pay for it, or if it'd even be legal for him to send you money (international trade laws are not my area of expertise), but I know he'd be excessively happy.
What I've learned from experience is that learning the basics of a language is easy. Actually learning a language less so. Learning enough of a language to actually make money off it is much harder.
I guess my message to you is the same as my message has always been to the benching team: If it seems easy, you're not pushing hard enough. Push harder, go further.
Make me a windows program that speaks RS232 via a COM port and will take numbers entered into four text boxes (0-100) and send them as CSV, and then populate eight displays with CSV formatted data (four 0-100, four 0-9999) that comes in from the COM port and I'll be happy. That'll be able to talk to one of my fan controllers.
That seems like a decent start.