I must apologise for the lack of blog posts this month. I recently switched jobs after 21 years at the same company, and I’ve been busy with my new role. However, here are some things that caught my eye in June.
Elements of Modern C++ Style
I’ve been making an effort to catch up on what I’ve missed in C++ as it has been a while since I’ve used it. On the whole I’ve been pleasantly surprised by the changes in the language. This post by Herb Sutter dates from about five years ago, but it covers many of the features that were introduced into the language in C++11.
Welcome back to C++
Similarly, MSDN has an article Welcome Back to C++ (Modern C++) that goes into more detail, comparing and contrasting code snippets from C++98 with modern C++.
Stop Saying Learning to Code is Easy
Scott Hanselman gives his opinion on the idea that learning to program is somehow easy. He concludes that it isn’t easy, but “It’s rewarding. It’s empowering. It’s worthwhile.” Yes, a thousand times over. It’s all of those things.
As to whether it is easy or not, the answer is probably as much to do with what “it” actually means. For some values of “it”, learning to program is easy, at least if you think that learning to write is easy. It takes time to learn to write, but it is something that most 5 year olds can pick up fairly quickly. However, hardly any 5 year olds become authors when they grow up.
Sometimes “it” is less to do with technical skill and more to do with domain knowledge and the ability to understand what the customer wants, even when they often don’t really know themselves. Having spent more than a few years doing it, I can tell you that a lot of enterprise software is like that. But ultimately it’s about creating a product that solves a problem for the business that can’t be solved off the shelf.
For a large number of applications, programming is the thing that helps you arrive at an outcome rather than being an outcome in itself. There are physicists, biologists and statisticians who write code every day, not to produce code as the end result, but to help them run huge experiments. Again, the parallel is with writing. These aren’t people who program as their profession. They’re people for whom programming is a means to an end. They aren’t programmers, but they can program, much as you’re probably not an author but you almost certainly send emails and write the odd report.
There are finance teams throughout the world who live and breathe Excel, often relying on fragile macros and massively interlinked spreadsheets, because to them that is “the system”. Again, for them, programming is a means to an end so they use Excel to work on problems that their IT department can’t or won’t fix for them.
My own view is that learning to program is easy, but only if you think that learning to drive is easy, that learning to read and write is easy, that learning calculus is easy, or that learning a foreign language is easy. These are all skills that require practice and dedication before you can do them competently, but in each case being able to use the skill has a big pay off. Programming falls into this category too – it does take practice and dedication to reach a certain level of competence, but for those who are willing to put in the work it has a big pay off.
What can I say about this project, except “wow!” It doesn’t have much practical value, but I applaud the kind of thinking that says, “I know, let’s make a working 6502 processor from discrete components.”
I’ve been playing rather a lot of Duskers. It’s a roguelike, set in space, in which you are seemingly the only survivor of some event that seems to have wiped out everything except you and 3 drones. It has a lo-fi feeling to it that is reminiscent of films such as Alien and Silent Running. Let’s just say that I was given a generous Steam voucher as a leaving gift from my last job and I haven’t spent a penny of it yet because I keep coming back to this game.
I’m no reviewer, but if you want to know more then Polygon’s review puts it into words far better than I ever could.