Pretty normal reasons I guess:
- The amount of (stricly non-work-related) code snippets I’ve been emailing back and forth between home and work was getting a bit silly.
- If I ever do put anything decent on there it acts as a portfolio of sorts, and its nice to be able to discuss code by linking to fully versioned examples.
- I use TFS at work and it seems like a good idea to see what else is out there. I’m by no means a Microsoft hater but it’s not hard to suppose they don’t get everything right.
That’s a slightly more difficult one, or at least more a matter of personal preference. I of course have a ton of cool languages and technologies I want to get to grips with, so with the modern trend being towards higher-level, more expressive idioms, why am I starting to learn a language where you don’t even get a boolean data type out of the box?
Well, to keep it short and sweet, I really like to understand how things work in detail. I have to admit to being somewhat influenced by Joel Spolsky’s vintage posts on leaky abstractions and the perils of JavaSchools – macho nerd-elitism aside, a vast amount of the software we use today is in some way built on top of C/C++. Relational databases, operating systems, frameworks and VMs, IDEs – all the things that are really fundamental to what we do as programmers tend to need at least some access to the low-level power and control that direct allocation of bytes provides.
Just using these tools day-to-day, I’m sure I can benefit from understanding their implementation a little better, and even in today’s declarative, cheap-hardware world, I suspect there are times when JIT-compiled or interpreted languages just aren’t going to cut it.
And even if there aren’t, it’s a good intellectual challenge, which is kind of what we’re all after anyway, isn’t it?