What I do when I'm not publishing.
Trick heading, of course. I'm always publishing. It's the nature of having your own business - there's no real down time. Even when you're relaxing, it's so that you can be more productive at work.
Still, there are times in the day when I am not at my desk, and I am not actively doing things to do directly with Snowbooks, and at those times I am doing other things. You know some of them: martial arts (although there haven't been many arm-bars, eye-gouges or reverse spinning back kicks since moving to the country) (there were never many reverse spinning back kicks anyway); taking photos of bunnies (which, conversely, has really ramped up in recent weeks); the obvious activity of reading (Jasper Fforde at the moment; something about trees, too, and a book Rob lent me on book design. Oops, that's publishing).
I have also been doing a bit of Open University work. This year it has been DD100, an introduction to the social sciences, because I thought it would be nice to know enough about politics, philosophy and economics to get a degree in them, and this was the starter course. I've done quite well in the essays I've done - well enough, in fact, to have skipped the last two and still get a pass mark. And although I've proven to myself quite adequately that there is no physical way on earth that I have the time to study *and* work, I've just enrolled on another course. You might speculate that that course would be something about economics, maybe, or philosophy, given my stated aims. You'd be quite wrong. I've enrolled in M255: Object-oriented programming with Java. From the syllabus:
You will learn
- the fundamental concepts associated with object-oriented programming (object, class, protocol, hierarchy, inheritance, encapsulation, polymorphism, collaboration, etc.)
- to apply and extend your knowledge of programming concepts within an object-oriented programming context.
In Block 1 you will interact with a micro world of graphical objects to explore basic object-oriented ideas. However, soon you will be getting to grips with Java code and syntax and will begin writing your own simple object-oriented code using the BlueJ IDE. Basic object-oriented concepts such as attribute, state, protocol, class and subclass are introduced, initially through interaction with the micro world, and then in the context of writing Java code. Encapsulation is discussed as a core object-oriented principle. By the end of the block, you will be expected to write short methods (the smallest units of code in Java) to specification.
Block 2 continues the teaching about fundamental object-oriented ideas, by investigating inheritance hierarchies, overriding methods, abstract classes, interfaces, polymorphism, re-use of code, static methods and variables. Along the way, you'll learn about creating your own classes, about the facilities of Java for selection and iteration, and more about some of the core, provided Java classes. Different kinds of errors are discussed, along with debugging in the BlueJ environment. After discussion of the need to design code, you will be expected to be able to implement to specification a class along with its methods.
Block 3 introduces a subset of the Java collection classes, and related issues such as iteration. You are guided to apply your knowledge from Blocks 1 and 2, along with the new classes being introduced, to increasingly complex programming exercises. The skill of appropriately utilising a provided library of classes (searching for a useful class and method, for example) is explicitly developed in this context, and re-use by composition is discussed. Reading and writing of files and the use of streams are introduced.
Block 4 starts by discussing testing in an object-oriented context. Then the concept of collaboration, first introduced in Blocks 1 and 2, is revisited and expanded to more complex scenarios. A case study of an implemented system is investigated, in particular looking at the collaborations involved and how they are achieved. Finally, you will learn how to attach a graphical user interface (GUI) (which we will provide) to a business model, and about the mechanisms for keeping the GUI and the model in step.
Bonkers? Sort of but quite cool, too. I already tinker with html and css and bravely try to debug scripts in Access. I patch together XML with XSLT, and have read a few books on VBA and written a few macros, usually by nicking someone else's code. And in doing all this I have decided that progamming isn't hard: it simply requires a phenomenal degree of immersion and practice. I don't know if I'll be able to pull it off, but I'm always up for a challenge!
I'm posting about this on my publishing company blog because of something I read on The Bookseller website today by my friend Eoin Purcell. He said:
"Sometimes I think tech people understand books better than book people. How else can you explain the fact that Google, LibraryThing and Amazon have had greater success at building online tools for books than publishers? It's not about e-books or online content so much as it's about offering simple tools and services for listing books and collecting information about them."
I agree with him. I absolutely agree. And by learning, in detail, exactly how to make computers do what I want, in increasingly cool ways, I hope that Snowbooks will not be one of the publishers that becomes extinct when someone from outside the book trade glances in our direction and thinks 'ooh! opportunity. I'll 'ave some of that.' It is happening more and more, and I don't want to be left behind.
So by next June I hope to be able to write little applications. Won't that be cool! See, learning can be enjoyable *and* useful. And it keeps me out of fights.