In theory you can now read this blog in Apple News. Just visit this link from an iOS device.

Unless you’re not in the USA. 

Because Apple News only works in the USA. Unless you fool your device into thinking you’re in the US.

Which is what I had to do to make sure it’s working.

Right now I’m simply piping my RSS feed to Apple; I’m in the midst of experimenting with the Apple News module for Drupal to see if it improves this in any way.

Apple News on an iPad

🗓️
Apple News  •  RSS

Back in May, after visiting Harald the printer in Berlin, I suggested I might create a book of the collection of klischees I have on loan. Today I set out to workshop this idea, and what you see below is one artifact of that.

Book Making

I’ve taken a standard piece of letter-size card stock and, using what I learned about imposition four years ago, set up four klischees to print in the proper place. To enable this to happen in a way that would allow me to quickly run through a large collection without having to reset the whole chase every time, I rigged up a set of furniture and quoins that lets me easily set and lock the position of each klischee in place; it’s this rigging that makes making the book possible:

Printing Rig

For my “workshop” of this project I printed 4 sheets; I’ll go back tomorrow and print the reverse site of each, then experiment with binding the quartos together.

🗓️
Letterpress  •  Books  •  Klischees

I first heard people talking about Z39.50 back in 1994 when I went to my first conference of librarians, Access ‘94 in St. John’s, Newfoundland.

At that conference, at at other Access conferences I attended in later years, there always seemed to be at least a few sessions about Z39.50.

Like “Z39.50 for finding it all” at Access 2002 in Windsor.

To me, a non-librarian, Z39.50 seemed like the darkest of dark library arts: a secret language that librarians whispered to their systems, out of earshot of we civilians. That it had such an arcane name only reinforced this.

Simply by osmosis over those years, I’ve managed to deduce that Z39.50 is a protocol for speaking to library catalogues: in the same way that our web browsers speak to our web servers using a protocol called HTTP, library clients can talk to library catalogue servers using Z39.50.

Z39.50 may be a dark art, but it’s an open dark art, and most automated library systems will respond to you if you talk to them using the protocol.

To speak Z39.50 you need a client – a program that will communicate via Z39.50 with a catalogue – along with the IP address and port number of the server.

The open source YAZ toolkit is a solid client, and it comes in a PHP flavour called PHPYAZ that’s a good place to start experimenting. If you have a Mac and Homebrew you can install it with:

brew install --universal yaz --without-icu4c

This will, among other things, leave you with a command line client named yaz-client.

Here in Prince Edward Island our Provincial Library System’s catalogue listens for Z39.50 on port 2200 on host address 24.224.240.217, so to start speaking to it with YAZ it’s:

yaz-client 24.224.240.217:2200

To which the catalogue responds:

Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID     : Unicorn 3.4.1 Bath
Name   : SIRSI Corporation
Version: 3.0
Options: search present delSet scan sort namedResultSets
Elapsed: 0.349298
Z> 

And then it sits there, waiting for a command.

So let’s go.

First, we’ll search the catalogue for records containing “Wade MacLauchlan” using the find command:

Z> find "Wade MacLauchlan"

The response is:

Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 2, setno 1
records returned: 0
Elapsed: 0.062955

So there are two records in the catalogue that match; we can show them with the show command. We’ll ask for the second one:

Z> show 2
Sent presentRequest (2+1).
Records: 1
[DEFAULT]Record type: USmarc
(Length implementation at offset 22 should hold a number. Assuming 0)
02314 am a22005298i 4500
001 000042512248
003 CaOOAMICUS
005 20140328122422.0
008 140328s2014    pica     b    001 0beng  
016    $a 20149019998
020    $a 9780920434406 (bound)
040    $a CaOONL $b eng $e rda $c CaOONL
043    $a n-cn-pi
055  0 $a FC2625.1 C34 $b M33 2014
082 0  $a 971.7/04092 $2 23
090    $a PEI 921 CAM 2014
100 1  $a MacLauchlan, Wade, $e author.
245 10 $a Alex B. Campbell : $b the Prince Edward Island premier who rocked the cradle / $c H. Wade MacLauchlan.
264  1 $a Charlottetown, Prince Edward Island : $b Prince Edward Island Museum and Heritage Foundation, $c 2014.
300    $a 410 pages : $b illustrations ; $c 24 cm.
336    $a text $b txt $2 rdacontent
337    $a unmediated $b n $2 rdamedia
338    $a volume $b nc $2 rdacarrier
504    $a Includes bibliographical references and index.
600 10 $a Campbell, Alexander B., $d 1933-
651  5 $a Prince Edward Island $x Politics and government $y 1959-1979.
650  0 $a Premiers (Canada) $z Prince Edward Island $v Biography.
650  0 $a Politicians $z Prince Edward Island $v Biography.
710 2  $a Prince Edward Island Museum and Heritage Foundation, $e issuing body.
596    $a 1 3 4 5 6 7 9 10 16 17 19 22 24 25 26
926    $a ALB $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a BOR $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a BRE $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a CHA $b ANF $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a CHA $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 2
926    $a CHA $b PEICOLL $c PEI 921 CAM 2014 $d PEINCIRC $f 1
926    $a CHA $b CHECKEDOUT $c PEI 921 CAM 2014 $d PEIBOOK $e 5/7/2016 $f 2
926    $a COR $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a GEO $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a GSL $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a MON $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a MOR $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a MYH $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a SOU $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 2
926    $a STR $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a SUM $b PEICOLL $c PEI 921 CAM 2014 $d PEIBOOK $f 1
926    $a TIG $b CHECKEDOUT $c PEI 921 CAM 2014 $d PEIBOOK $e 21/6/2016 $f 1

This is a MARC record — another one of librarianship’s dark arts — that describes the book Alex B. Campbell : the Prince Edward Island premier who rocked the cradle. Each line of the record tells us something different about the book and copies of it. Lines starting 090, for example, are for Local Call Numbers and so the line:

090    $a PEI 921 CAM 2014

tells us that the call number for this book – what you’ll use to find it on the shelf — is PEI 921 CAM. And, sure enough, that’s what the online public catalogue tells us too.

The lines starting with 926 are about the holdings information for this book — what library branches it can be found in. So, for example, the line:

926    $a CHA $b CHECKEDOUT $c PEI 921 CAM 2014 $d PEIBOOK $e 5/7/2016 $f 2

tells us that there’s a copy that was checkout out (CHECKEDOUT) from the Confederation Centre Public Library in Charlottetown (CHA) that’s due back on July 5, 2016 (5/7/2016).

Dark arts though Z39.50 and and the MARC format be, they are well-documented, structured data, and that’s gold for someone who’s interested in automated interactions with a library catalogue.

Imagine, for example, that I’m visiting a friend and I see a copy of The Girl Who Saved the King of Sweden on their bookshelf. I take out my phone, running a mobile app that I might create for this purpose, and point it at the bar code on the back of the book:

Bar Code Image

The bar code scanner built into the app reads the bar code as as 9781443431590:

Bar Code Scanner

My app then speaks Z39.50 to the Provincial Library Catalogue, searching for the ISBN:

Z> find "9781443431590"
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 1, setno 1
records returned: 0
Elapsed: 0.090130

One record was found, so the app looks up the details:

Z> show 1
Sent presentRequest (1+1).
Records: 1
[DEFAULT]Record type: USmarc
(Length implementation at offset 22 should hold a number. Assuming 0)
02597 am a2200457Ii 4500
001 859586132
003 OCoLC
005 20140429084539.0
008 131007t20142013nyu           000 f eng d
020    $a 9780062329127
020    $a 006232912X
020    $a 9780007557905 (tr. pbk.)
020    $a 9781443431590 (tr. pbk.)
040    $a BTCTA $b eng $c BTCTA $d BDX $d WIM $d OCLCQ $d YDXCP $d CXP
041 1  $a eng $h swe
043    $a e-sw---
049    $a SPPA
090    $a F JON
100 1  $a Jonasson, Jonas, $d 1961-
245 14 $a The girl who saved the King of Sweden : $b a novel / $c Jonas Jonasson ; translated by Rachel Willson-Broyles.
246 1  $i Pre-publication title was given as: $a Illiterate Who Could Count.
250    $a First Edition.
260    $a New York : $b Ecco Press, $c c2014.
300    $a 387 pages ; $c 24 cm.
336    $a text $b txt $2 rdacontent.
337    $a unmediated $b n $2 rdamedia.
338    $a volume $b nc $2 rdacarrier.
520    $a "In a tiny shack in the largest township in South Africa, Nombeko Mayeki is born. Put to work at five years old and orphaned at ten, she quickly learns that the world expects nothing more from her than to die young, be it from drugs, alcohol, or just plain despair. But Nombeko has grander plans. She learns to read and write, and at just fifteen, using her cunning and fearlessness, she makes it out of Soweto with millions of smuggled diamonds in her possession. Then things take a turn for the worse... Nombeko ends up the prisoner of an incompetent engineer in a research facility working on South Africa's secret nuclear arsenal. Yet the unstoppable Nombeko pulls off a daring escape to Sweden, where she meets twins named Holger One and Holger Two, who are carrying out a mission to bring down the Swedish monarchy...by any means necessary. Nombeko's life ends up hopelessly intertwined with the lives of the twins, and when the twins arrange to kidnap the Swedish king and prime minister, it is up to our unlikely heroine to save the day--and possibly the world"--from publisher's web site.
650  0 $a South Africans $z Sweden $v Fiction.
650  0 $a Nuclear weapons $v Fiction.
650  0 $a Twins $v Fiction.
651  0 $a Sweden $x Kings and rulers $v Fiction.
700 1  $a Willson-Broyles, Rachel.
596    $a 1 6 7 16 24 25
926    $a CHA $b AF $c F JON $d BOOK $f 4
926    $a CHA $b CHECKEDOUT $c F JON $d BOOK $e 9/7/2016 $f 5
926    $a CHA $b AF $c F JON $d BOOK $f 6
926    $a COR $b AF $c F JON $d BOOK $f 1
926    $a MON $b CHECKEDOUT $c F JON $d BOOK $e 2/7/2016 $f 1
926    $a STR $b AF $c F JON $d BOOK $f 1
926    $a SUM $b AF $c F JON $d BOOK $f 1

nextResultSetPosition = 2
Elapsed: 0.401591

The app decodes the MARC record and deduces that there are two copies available at my local branch in Charlottetown:

926    $a CHA $b AF $c F JON $d BOOK $f 4
926    $a CHA $b AF $c F JON $d BOOK $f 6

At this point my app could open up a web browser to:

http://catalogue.library.pe.ca/uhtbin/cgisirsi.exe/x/0/0/5?searchdata1=9781443431590

which is a deep link to this book in the library catalogue. From this point I could place a hold on the book and then go to the library to pick up a copy:

Screen shot of mobile phone placing a hold on a book

Z39.50 is open data in its finest form, and our Provincial Library System’s catalogue has been speaking Z39.50 for many years. We owe a debt of gratitude to librarians past and present for breaking the trail.

🗓️

After a delicious meal at the Red Door in Stanley Bridge we drove home through PEI National Park and stopped at the shore to watch the sun go down.

🗓️

Here’s Catherine simultaneously talking on the phone to her nieces, receiving a birthday birdhouse, and blowing out the candle on her Chinese Birthday Bun.

🗓️

I recorded this with my phone on approach to Charlottetown Airport last Saturday morning. I was flying in an Air Canada Beechcraft 1900D, a tiny 18 seat plane that’s used on the Halifax-Charlottetown runs. The sun was positioned perfectly for the plane to be able to chase its shadow home. The scene opens as we fly over the Atlantic Superstore and the University of Prince Edward Island.

🗓️
Charlottetown  •  Air Canada  •  Beechcraft

If Ethan ever records an album, this will be the cover image.

Ethan at Hopewell Rocks

🗓️

🗓️

Without any fanfare, the Province of Prince Edward Island launched a new website today, PrinceEdwardIsland.ca, and the most exciting aspect of the new site is that it telegraphs the Province’s plans for open data.

Under Online Services > Open Data, you’ll find a list of data sets.

Like this one, with data about the popularity of the various conservation license plates in recent years. There’s a link to a CSV file at the bottom of that page; open it in a spreadsheet and it looks like this:

Conservation Plates CSV

It’s nice, clean, CSV, not just “File > Save As > Excel” data, and that makes it easy to quickly create charts like this, graphically illustrating the popularity of the plates for last year:

PEI License Plates, 2014-2015

(I thought I was in the elite squad of Red Fox plate-owners; turns out I was just following the herd).

You won’t find all the data the province holds online – this is the first toe in the water – but it’s certainly a very good start: there’s everything from data about doctors to data about oysters. And the province’s license, principles and standards, modeled after the Government of Canada’s, appear sound. It’s hard not to love an effort that has non-discrimination as one of its core principles:

Non-discriminatory access to data should enable any person to access the data at any time without having to identify themself or provide any justification for doing so.

Wearing my Hacker in Residence hat, I spent much of last year talking to public servants about open data; although greater forces than I have conjured up the political will to make this happen, I’m happy to have a played a small nudging role in this effort. I’m excited to see what comes next, not only in terms of data sets, but in the gradual migration to an attitude in the public service where institutional street cred is derived from being more open, more often.

🗓️

Back in the early 1990s, shortly after moving to Prince Edward Island, Catherine and I had our first occasion to take the Borden ferry to the mainland, as part of a trip to Halifax to visit friends.

Following the crowd from the vehicle decks up to the cafeteria, we spotted Roger Younker, then the host of CBC Compass, the supper-hour television news cast. We were (or perhaps, more accurately, I was) star struck: a God walked among us. And he was enjoying two eggs over easy.

As we became acclimated to Island life in subsequent years I came to realize that spotting Roger Younker on the ferry wasn’t as much of a deal as it initially seemed, but that impression of the cafeteria as the agora in which Islanders of all walks of life could break bread together before heading out into the cruel indignities of the mainland remained with me.

And when the ferry was replaced by the Confederation Bridge it was that absence I missed the most.

Last week I had occasion to chat with a colleague at The Old Farmer’s Almanac about his family’s vacation to the Maritimes last summer; he pulled out his mobile phone and showed me some of the photos he’d taken at Hopewell Rocks in New Brunswick, site of the highest tides in the world. I realized that, in the 23 years we’ve lived on the Island, we’ve never been across to see the Bay of Fundy, and upon returning home on Saturday this fact loomed large; I could have suggested a family trip later in the season, but I feared that, like the last 23 years, it would be pushed to the bottom of the pile and remain a dream unrealized.

And so after breakfast yesterday I suggested we take an impromptu trip to Hopewell Rocks. Right away.

Catherine and Oliver are nothing if not game for the impromptu trip, and so 15 minutes later we were on the road.

I suspect that I’m not unique in feeling, when driving toward the Bridge, that as soon as you reach the greater Crapaud-Tryon area you have escaped something of the gravitational pull of Charlottetown and attained escape velocity; a new sense of calm comes over the car at this point, as a collective sigh of relief is breathed.

Historically it was inside this breath – sometimes punctuated by an extended wait in the ferry line – that one would have breakfast with Roger Younker; on Sunday we replaced this with a visit to Scapes, the improbably-located restaurant on the fringe of Gateway Village, the simulated community at the lip of the bridge.

While the balance of Gateway Village is a simulacrum, Scapes is a very much real, delightful place to grab a bite to eat, owned and operated by Sarah Bennetto O’Brien, a passionate chef who cares deeply about local, healthy food.

We enjoyed a lunch of scratch-made fish cakes (for Catherine and me) and a BLT (for Oliver), served by friendly staff in a tiny pleasant room.

Sitting on a stool at the front of Scapes waiting for my fish cakes, I realized that it’s the new way to prepare for embarkation: the new culinary precipice from which we can gather ourselves to confront life onshore.

Our Family at Scapes in Borden

If Sarah could arrange for Roger Younker to drop in occasionaly, the scene would be perfect.

🗓️
Borden-Carleton  •  Confederation Bridge  •  Restaurants  •  Scapes  •  Compass

About This Blog

Photo of Peter RukavinaI am . I am a writer, letterpress printer, and a curious person.

To learn more about me, read my /now, look at my bio, listen to audio I’ve posted, read presentations and speeches I’ve written, see things I’ve favourited elsewhere, or get in touch (peter@rukavina.net is the quickest way).

I have been writing here since May 1999: you can explore the 25+ years of blog posts in the archive.

You can subscribe to an RSS feed of posts, an RSS feed of comments, an RSS feed of favourites elsewhere, or a podcast RSS feed that just contains audio posts. You can also receive a daily digests of posts by email. I also publish an OPML blogroll.

InstagramYouTubeVimeoORCIDOpenStreetMapInternet ArchivePEI.artDrupalGithub.