Thursday, 10 December 2015

Ada Lovelace' 200th anniversary

I have the impression that computer people have little awareness of, or interest in, their own history. So, time for a very short lesson.

Today, December 10, 2015, is the 200th anniversary of the birth of Augusta Ada Byron, Countess of Lovelace, credited as the first computer programmer. Her claim to that title comes from an article she translated an article on Charles Babbage's Analytical Engine from French to English, to which she added copious notes three times longer than the article itself. In it she described how the Engine could handle letters and symbols, not just numbers, and described a method for getting it to repeat instructions; the concept of looping is one of the things a lot of beginning programmers struggle to understand.

In note G, she analyzed several methods by which people could compute Bernoulli numbers, observed that one was particularly suited to calculation on the Analytical Engine, and proceeded to describe how to get it to do so. At this point Babbage thought the Engine was impossible to build with the technology of the time (he was wrong), so she would have had no hope of an actual implementation.  I am told that when people got around to actually building one in 1991 (using technology available to Babbage), they finally implemented Ada's description, and it worked perfectly, the first time. I doubt I've written more than a handful of programs in 45 years that worked perfectly, the first time.

I started programming in the fall of 1970 in Grade 13, and never heard of her until 1979, when the US Department of Defense named a complex and not-especially-successful programming language after her. I'd already been through an Honours Bachelor of Mathematics in Computer Science at the University of Waterloo, and had been in a graduate Computer Science at Carnegie-Mellon (one of the best in the world for the subject) for five years.  I wish someone had told me about Ada; she is an inspiring figure.

Wednesday, 9 December 2015

Reflections on NaNoWriMo

I took part in National Novel Writing Month again this past November, and realized a couple of things that were new to me.

First, my writing process has always proceeded from a few scenes that came vividly to mind over several months, which I then had to try to stitch together into a story (I am not the only person who writes this way; I talked with a published novelist who does approximately the same thing).  This year I tried outlining, based on Dan Wells' 7-point structure, and it helped make the writing a easier. So now instead of being mostly a pantser, I've moved a little further in the direction of being an outliner. I expect I'll always have some mix of the two, but I think the eventual balance point is going to be further towards outlining than it is right now.

Second, it helps tremendously to have a community to help out in brainstorming.  I'm still in touch with some of the alumni of the Writing Excuses Retreat of 2015, and in three separate sessions they helped me flesh out my ideas and add some new ones. I was happy to be able to return the favour a few times.

Third, I've come to terms with my guilty feeling about writing a lot of junk weak prose during November, in between the good bits.  A lot of people from WXR15, including some of the instructors, emphasized that the first draft is for getting the story out of your head and recorded in an editable form. Making it good is what separate revision passes are for.

Fourth, winning NaNo six times (barely over 50,000 words each year), I still haven't finished a novel; I basically just stopped, exhausted, each time I got over the limit. This time I can see more clearly what the eventual shape of the story should be, and I've resolved to finish this one, even if I wind up trunking it when I'm done. I can't sustain 1667 words per day over the long term at this stage of my life, but I can probably manage to write a few hundred on many days, or edit a few pages.

I'll post again in January or February about whatever progress I've made.