Tag: Emma Barnes

Tech in Publishing

Code your way to freedom – BookMachine Unplugged 2019: Talking Tech Literacy

Paraphrasing the famous Chinese curse, may we not live in interesting – that is, difficult and uncertain – times. Unfortunately, though, those are exactly the times we are facing at the moment. Thankfully, people who work in the publishing industry are among the many who strive to add a positive influence to this battered world and planet, but nevertheless, we can and must do better on several fronts.

Continue reading

Sara O'Connor

Interview with Sara O’Connor [Full Stack Developer]

Sara O’Connor worked in children’s publishing for 13 years and is now a full-time web developer. Frustrated with the cost and creative limitations of outsourcing good digital ideas (check out this article), she decided to retrain as a programmer. She now works with Emma Barnes at Consonance (the new name for Bibliocloud), helping to build the software she wished she had when she worked in publishing. Sara will be joining our panel at BookMachine Unplugged 2018: Talking Tech.

Continue reading

Rebranding: more than just a publicity exercise

Emma Barnes taught herself to code after founding her own independent publisher, Snowbooks. She went on to build Bibliocloud, the next-generation publishing system. Now she’s on a mission to promote tech skills within the publishing industry and beyond.

Continue reading

future of publishing

Silence is the ultimate consent: why companies are becoming political

Emma Barnes taught herself to code after founding her own independent publisher, Snowbooks. She went on to build Bibliocloud, the next-generation publishing system. Now she’s on a mission to promote tech skills within the publishing industry and beyond.

Continue reading

A day in the life of a programmer

Emma Barnes taught herself to code after founding her own independent publisher, Snowbooks. She went on to build Bibliocloud, the next-generation publishing system. Now she’s on a mission to promote tech skills within the publishing industry and beyond. Emma is also on the newly-formed BookMachine Editorial Board. 6.50am Wake up, wonder what day it is and remember – great! It’s the one day this week that I can dedicate to programming. I’m the MD of the indie publisher Snowbooks, and I’m CEO of Bibliocloud, responsible for sales, finance, and customer success, so each day is very different. But I reserve at least one day a week for slipping the needle in and luxuriating in single-minded programming. It so happens that it’s a Saturday, but that’s when the emails stop… context switching is my biggest foe. 8am First coffee, and a read through the opening chapters of the new Sandi Metz book about object-oriented programming in Ruby. It’s great when you find a book that directly addresses the real-world problems you’re facing. I click through to a podcast that she’s on to hear more. 11am Tests. Yesterday I discussed a piece of code that needs some attention with my colleague, Andy. The code is a method which returns a collection of external URLs that gets displayed in Bibliocloud. The URLs take you to a book’s Amazon.co.uk page, or Amazon.com page, or Wordery page, or British Library page, and so on — a handy and quick way to check what data is out there in the wild. The method doesn’t have automatic test coverage yet, so I’m going to start by documenting current behaviour. I do this using an integration test which mirrors what a user would do. We use Cucumber which gives us a common language between non-technical team members and programmers. I start by creating a new branch of the code based on our master branch, and create a Cucumber feature which literally reads “When I visit the ‘Autodrome’ page in Bibliocloud, and I click on the Amazon.com link, then I should be taken to the ‘Autodrome’ page on Amazon.com”. I then write some code to translate that into automatic test steps. 1pm The grand refactor. The Sandi Metz book has given me a couple more clues as to how this method could be improved, and I’m trying to hold all the concepts in my head so I can look at the problem squarely. Sandi Metz talks about finding the right level of abstraction, so I’m trying to think about which objects this problem is actually concerned with. Is it the validity of the ISBN that is key? Or the destinations themselves? Or the structure of the URLs? Some are built using the ISBN10, others with the ISBN13. Will there be a future case where the URL is built using an ISSN, or a DOI, or an ASIN, or an ISTC, or an ISNI, or an ORCiD iD? If a book belongs to a series, can we say that the book has an ISSN? If its authors have ORCiD IDs, can we use those to create external links for the book? What about linking to the client’s own website? Or is this a case of YAGNI (‘you ain’t gonna need it’)? All this matters because I want to put the code in the right place, named properly, so that we can find, and change it easily, later. Maintainability, in a large, active system such as Bibliocloud, is probably the most important thing. I start by working with David to sketch out the problem (see the picture), then create a new Ruby class by adding a text file to my local code repository called external_links.rb. Like the common language provided by Cucumber, the challenge so far has been approached not with code, but with language, reading, grammar, discussion, and story. I reflect — not for the first time — on how relevant publishers’ skills are for programming.
Emma Barnes
Practical Object Oriented Design in Ruby by Sandi Metz 978-0-321-72133-4
Emma Barnes
Sketching out the problem
2pm Lunch and back to the other Sandi Metz book I’m reading: Practical Object-Oriented Design in Ruby. There’s a good bit on page 93 where she talks about duck typing, which I wonder might be relevant. The idea about duck typing is that “if it looks like a duck and quacks like a duck, it’s a duck”. So my ExternalLinks class doesn’t need to actually be handed an actual book object in order to build the URL. It only expects to be able to get an answer when it asks “what’s your ISBN?” (even if it’s “nope, I don’t have one”). I could similarly give ExternalLinks a display spinner, or a CD, or a cassette audiobook: just so long as it can say what its ISBN is. I’m going to use this idea to write ExternalLinks so that it’s not tightly coupled to the Book class itself – though I’m a bit worried that this is another case of YAGNI. I commit this code to my local branch, glad that I’ve named it “spike/external_url_refactor” so that I can discuss this approach with my colleagues before considering it for a merge into our production system. 3pm Iteration. I run the test that was passing earlier and it fails. Huh. I abandon the integration test and start unit testing at a deeper level of the code. I realise that there’s a requirement I hadn’t understood: some of the destinations are dependent on format, as well as ISBN type. Writing the tests illuminate some of the nuances of the domain and I jump between revising the tests and revising the code (avoiding doing both at the same time which is a recipe for misery). 4pm Leave to pick up my son, as I do every day of the week. Programming allows for flexible hours. It’s the sort of job that benefits from a bit of percolation, and fitting it around family makes me happy that I can experience life and motherhood as it happens, rather than only working hard for some imaginary future. 8pm Share today’s programming. Bedtime is done, and I look at the code again, but I think I’ve got as far as my brain will take me today, so I push the code to a branch on Bitbucket, our remote code repository, and raise a pull request with my colleagues. I’ll look forward to discussing this approach with them on Monday and seeing if they notice any glaring or subtle errors, and suggest better ways to structure the code. [Postscript from the future: on Monday, we found no errors as such, but we improved the test suite and I got a lot of clarity about separation of concerns from my code review with Andy.] 10pm Bit more of that Sandi Metz book. It really is very moreish.

Get with the program: Why and how to start coding

codingYou work in publishing, right? You think you’re creative? What do you spend most of your time at work doing? If you’re in a low-level position, Snowbooks and Bibliocloud founder Emma Barnes suggests your answer is likely to comprise a list of decidedly uncreative tasks. In a witty, insightful and inspiring talk at the Galley Club this week, Barnes bemoaned the publishing industry habit of hiring bright, creative people and then getting them to do dull and repetitive administrative jobs. As she wrote in the Bookseller last year, if you joined publishing because you wanted to create wonderful books, you’re left wondering “why copying and pasting between Excel, Word and InDesign feature so heavily in this ostensibly creative process”. But Barnes isn’t just a bemoaner, she’s a problem solver. Her solution to this problem? Get coding. Because if you can code, you can automate some of these dull jobs and free up time to do the fun – and important – creative things publishers should be doing. For many publishers, the word “coding” is almost as terrifying as “maths”. Certainly, when I used to introduce a 2-hour MA Publishing session on coding at Kingston University, the response was usually a mixture of fear, disinterest and irritation that I was forcing students to spend time doing such a dull and difficult thing. If these are your natural responses, try replacing “coding” in your head with words like “carpentry” or “poetry”. Writing code, says Barnes, is “the modern equivalent of being a carpenter”. It’s an opportunity not just to come up with ideas, or to shape them (as editors do with authors’ work), but to make ideas happen yourself. Coding can definitely be challenging (Barnes uses the phrase “mind-bendingly awful”), but you don’t need to be a maths geek to be good at it. Barnes has publicly admitted to being “useless” at arithmetic. Instead, she brings a love of patterns, words, symmetry and brevity to the activity. “Writing code trips many of the pleasure centres in my brain,” she says. “And I love feeling that I’m doing something meaningful, creating something out of nothing. Plus, the inherent difficulty of writing good code is a source of huge pride”. My former students, when they made things appear on screen in a browser in a matter of minutes, often shared this pride – evidence that if you can get over the fear or disinterest factor, this undeniably creative pursuit can be extremely satisfying. What’s more, publishers’ natural tendency to grammatical “correctness” makes them excellent coders. Our love of pedantry feels like a perfect match for a pursuit based on strict rules and zero tolerance for inaccuracy. And our love of words reinforces the idea that publishers are natural coders. As Barnes points out, code is written, just like poetry and books are. Code is even created in narrative arcs, which Barnes likens to “reading the best novel ever” if done well. If you appreciate “the careful crafting of a narrative flow, or the finely-edited end-result of a piece of prose, honed and whittled and buffed to perfection,” says Barnes on Digital Book World, then you’ll appreciate good coding too. For me, Barnes’s almost evangelical talk of creating things and sending them out into the world was enough to get me thinking I should sharpen up my own coding skills. But the value of coding isn’t just this personal satisfaction. If you can code, you can start to automate those decidedly uncreative tasks that fill up your day. And then you can find time to get down to the collaborative, creative business of publishing. What more encouragement do you need? If that’s truly not enough, then the doomsday scenario suggests school-leavers in a decade or so will all be able to code and your old-fashioned spreadsheet skills will look positively archaic on your CV. So, how to get coding? Here are some of the ways Barnes’ suggests you “start to dabble with code”:
  • Spend just 15 minutes on Try Ruby – a quick and basic online programming tutorial.
  • Try Scratch – a free coding app, designed for kids, that helps you think systematically and build simple games, animations and interactive stories.
  • Read Michael Hartl’s Rails Tutorial – Barnes claims that if you work through it for half an hour every day for three months, you’ll have built Twitter.
  • Sign up to a Codeacademy or Code School course – free online courses on programming languages. Barnes recommends learning Ruby.
  • Join a coding community like Rails Girls or Code Bar – offering help, advice and events (including free workshops). Barnes and the Bibliocloud team volunteer at Rails Girls.
As a result of attending Barnes’s Galley Club talk, I’ve applied to participate in the free Rails Girls London workshop in June. If I get accepted, I’m expecting a day packed with creativity, challenge, making and – I hope – a sense of pride and achievement. Oh, and a newly enhanced CV too. See you there? Anna Faherty is a writer, publisher and teacher. She collaborates with global publishers and museums on digital, print, exhibition and training projects and has taught on publishing programmes at Kingston University, Oxford Brookes University and University College London. Anna blogs at http://strategiccontent.co.uk/blog and tweets as @mafunyane.
Philip Pullman

New Oxford Publishing Group conference attracts top speakers

23rd June is the first annual conference of the Oxfordshire Publishing Group and judging from the line-up, this is an event not to be missed. Speakers include Philip Pullman, Charlie Redmayne, James Daunt, Nigel Portwood, Emma Barnes and Eric Huang. The mid-summer event is quite rightly called ‘Creating Value in an Age of Disruption’ – a topic which many of us feel strongly about, as reading habits shift and publishers seek new business models to monetise on the trends.

Continue reading

ONIX

How to create a catalogue automatically using ONIX and InDesign

This is a guest post from Emma Barnes. Emma is co-founder of General Products, and indie publisher Snowbooks. General Products is the company behind FutureBook-award-winning Bibliocloud, the web-based all-in-one publishing management system. Did you go into publishing so that you could spend your days copying and pasting ever-changing metadata from spreadsheets, emails and databases into InDesign? You did? Great. No need to read on.

Continue reading

ONIX

A publisher’s guide to APIs

This is a guest post from Emma Barnes. Emma is co-founder of General Products, and indie publisher Snowbooks. General Products is the company behind FutureBook-award-winning Bibliocloud, the web-based all-in-one publishing management system. API is one of those acronyms you hear bandied about. “APIs”, people say, “are vital. Vital!” But if, as you fervently nod in agreement, you’re thinking of another acronym — “WTF?” — then this article is for you.

Continue reading

bookmachine.me launch events announced

Since everyone else is talking about it anyway, we might as well drop any kind of modesty and also provide you with a plug for the global launch night for BookMachine’s online networking platform, bookmachine.me, which is taking place on 25 September with six events in six cities around the world. The new site – will be inaugurated with events in London, Oxford, Brighton, Barcelona, New York and Toronto, and Phil Collins will be at all of them each with its own unique speaker for the night.

Continue reading

Get the latest news and event info straight to your inbox

Account


+44 203 040 2298

6 Mitre Passage, Digital Greenwich - 10th Floor, Greenwich Peninsula, SE10 0ER

© 2019 BookMachine We love your books