Plenty of times now, we've exhorted you to write software which will be useful for others. We've also asked you to ensure that you know what you're up to and that you've planned well in advance. But once or twice we've mentioned that doing something "for fun" is plenty reason enough.

When learning a new programming language, I (and others that I know) have a simple ritual set of small programs that I implement in order to get to know how a language works. For example, I try and implement simple problems from the Project Euler website, along with some simple unixy commands such as a basic cat, echo, ls set. A friend of mine always tries to implement a simple number guessing game because she likes interactive programs.

Learning a new programming language, especially one which isn't quite like the ones you use day-to-day can be a very humbling experience; especially if you don't let yourself start by modifying someone else's code. It can help to remind us that we're all levelled by something which isn't quite in our realm of normal thought. At this time of year I like to learn a new language to see if the following year I should have a go at something new. Of the various resources out there with programming puzzles, something new started last year and has continued this year - The Advent of Code. Last year I did it in Haskell because I wasn't quite ready to learn something completely new, but did want to improve my confidence in Haskell. This year I'm trying out Rust.

We're only a week into The Advent of Code and that's not quite enough to make it impossible to catch up. While I'm not suggesting you must do it in a different language from those you are normally comfortable in; I am suggesting that to work your way through a set of programming puzzles can be extremely satisfying, and I encourage you all to have a go. If doing so at this time of year isn't quite for you, you can always revisit the puzzles in the new year.

And if doing something so blatantly Christmas themed isn't your thing, then I suggest visiting Project Euler if you're mathematical, or perhaps picking something from the list here instead.