Getting started
First off, follow the UNIX philosophy - do one thing, really well.
But how?
Take a very generalized, preferably generic concept (something very wide, not deeply domain specific - e.g. string formatting, pluralization, currency conversion), and explore the topic in as great deal as possible, providing neat, simple, modular, composeable utility functions, with easy to understand, consistent API, and unit tests.
For example, these are timeless libraries for most languages:
- string formatting/filtering
- math functions
- word translation
- string modification
- pluralization
- color code translation/generation
- munging/text processing
- low-level abstractions (machine, etc)
Try it out! Find a topic that interests you, apply your knowledge in detail, or do lots of research, and then solve the problem(s) with small, bite-sized functions that can be put together to create more complex modules.