tag:blogger.com,1999:blog-6399733635091870942017-08-18T15:56:39.322-04:00Loquacious ThesisBlah, blah, bullshit. And cat pictures.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-639973363509187094.post-21637733237842441122012-12-04T21:10:00.001-05:002012-12-23T14:57:12.856-05:00Advanced Receipt/Printing Features in Evergreen 2.2+I had plans to post all kinds of things here, but it appears that only Evergreen software changes have been motivating enough to make me mash words together. Maybe someday I'll say something about <a href="http://www.openstreetmap.org/" target="_blank">OpenStreetMap</a>, which is incredibly neat, but usually if I think about it at all I just end up nudging things around town because it has (had) some glaring errors and missing streets.<br /><br />Today, however, it's going to be some of the weird and wonderful ways you can bend Evergreen 2.2+'s printing system to your twisted will. There are 3 big user-facing features that people need to at least be aware of, in increasing levels of import: the new %INCLUDE()% macro, new receipt templates, and user-selectable contexts for receipt templates.<br /><br />Here they are again, in decreasing order of import:<br /><br /><br /><b>User-Selectable Contexts for Receipt Templates</b><br />So you've mastered printer context setup, eh? One machine can print to your desktop, receipt, and label printers effortlessly? Well it&nbsp;<i>could</i>, now you may have some work to do.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-l3W-v8JwaAI/UHtWdLgHegI/AAAAAAAAATE/dFlefXASAtY/s1600/Context.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-l3W-v8JwaAI/UHtWdLgHegI/AAAAAAAAATE/dFlefXASAtY/s1600/Context.png" /></a></div><div class="separator" style="clear: both; text-align: center;">Well, hello there.</div><div class="separator" style="clear: both; text-align: center;"></div><br />You can see from the screenshot that I've selected receipt for the (obviously?) receipt-oriented Checkout template. Selected? Receipt wasn't the default? No! This option is initially blank, so after upgrading Evergreen to 2.2 or later, libraries may have receipts printing who-knows-where. Not ideal. In a panic to get things working as expected, perhaps you changed the default printer context to use your receipt printer, but by modifying the receipt templates directly you can correct this and receipts can use the receipt context as expected.<br /><br />It occurs to me that after writing 100+ words about printer contexts that I've never actually written about them here, and don't currently know where to point anyone for more information about how to best make use of them. Rather than stretch this out with a lot of explanation, I'll just say that if things were working on Evergreen 2.1 or below and now that you've upgraded to 2.2 or above and people are freaking out about printers, just select each template, choose Receipt from the "Force Printer Context" drop down, click Save Locally, lather, rinse, repeat. You'll be much happier when you're finished.<br /><br />With that said, being able to select a specific printer context for each receipt template really helps when paired with new receipt templates.<br /><br /><br /><b>New Receipt Templates</b><br />In Evergreen 2.2 there are some receipt templates that are brand new: "holds_on_bib," "holds_for_patron," "holds_shelf," and "holds_pull_list" are some. There are others, but the only one that I know for certain is big-time fun is holds_pull_list. Much like it says on the tin, it's printed whenever you print a holds pull list for staff to pull items off the shelves to fill holds. Until Evergreen 2.2 it's been difficult to customize the layout of pull lists, but with this receipt template, and the previously mentioned context selector, you should be able to <a href="http://loquaciousthesis.blogspot.com/2012/01/receipt-series-1-isnt-good-enough-good.html" target="_blank">design</a> exactly the pull list your staff wants, be it for 3 inch printers or 8.5 x 11 inch printers. There are still 3 print buttons on the pull list page (sigh); just plain "Print" uses this template.<br /><br /><br /><b>Using %INCLUDE()% in Receipt Templates</b><br />Oh, man. Personally, this might be the most important printing-related change in Evergreen 2.2, but I'm trying to be realistic with regard to other people's expectations here. What this is is another difficult-to-discover text replacement placeholder, but it's one that takes arguments. If you don't know anything about programming or functions or whatever, don't worry, I just mean you can put different words between the parenthesis and get different results out of it. This is accomplished with Library Settings. For those unfamiliar, Library Settings are specified on the server and downloaded each time the client is logged in. To add one more (welcome) level of complexity, library settings can be defined at various (and multiple!) levels in your organizational unit hierarchy. I'll touch on that some more in a little bit.<br /><br />There are 5 different text replacements defined by default for use with <span style="font-family: Courier New, Courier, monospace;">%INCLUDE()%</span>: <span style="font-family: Courier New, Courier, monospace;">alert_text</span>, <span style="font-family: Courier New, Courier, monospace;">notice_text</span>, &nbsp;<span style="font-family: Courier New, Courier, monospace;">event_text</span>, <span style="font-family: Courier New, Courier, monospace;">header_text</span>, and <span style="font-family: Courier New, Courier, monospace;">footer_text</span>. Their names are just that: names; you could use <span style="font-family: Courier New, Courier, monospace;">notice_text</span> for all of your headers and <span style="font-family: Courier New, Courier, monospace;">footer_text</span> for all of your events, but don't; that would be terrible.<br /><br />As an example, to use header_text, I replaced most (not all!) of the text in many of my receipt template header section with this: <span style="font-family: Courier New, Courier, monospace;">%INCLUDE(header_text)%</span>. What that means is "Find the value of the header_text library setting, and put it here instead." So my header_text value is set to all of the HTML and CSS code that was common to all of the patron-facing receipts that we use. To do that, go to the Admin Menu, Local Administration, and then Library Settings Editor. To make it (much!) easier to find what you're looking for, type receipt into the text box at the top of the list, and click Filter. You should be left with a list of only 6 or 7 items that all include "receipt" somewhere in the name or description. The settings are named "<span style="font-family: Courier New, Courier, monospace;">Content of <i>X</i> include</span>" where <i>X</i> is one of the 5 names above. <b>A word of warning</b>: Settings aren't allowed to have multiple lines, so you have to edit your HTML/CSS into one long line before pasting it into your setting. That's painful, but not a show-stopper.<br /><br />I wouldn't recommend putting <i>everything</i> in your header section into <span style="font-family: Courier New, Courier, monospace;">header_text</span>, because no matter what template you are editing, %INCLUDE(header_text)% will always return the same thing, so it would't be good to have the word "checkout" in it, for instance. The best thing to put in the <span style="font-family: Courier New, Courier, monospace;">header_text</span> option is only what is common to every receipt that you want to have the same header. (Staff-only receipts probably don't need the same fancy header that the public gets, for instance.)<br /><br />Maybe this makes more sense with an example.<br /><br />I've made some changes since I last mentioned my library's <a href="http://loquaciousthesis.blogspot.com/2012/01/receipt-series-1-isnt-good-enough-good.html" target="_blank">receipts</a>, so things will look a little different if you've read that series.<br /><br />Here's what the new checkout receipts look like:<br /><br /><div style="border: 1px solid gray; font-family: Verdana, Arial, sans-serif; font-size: 10pt; padding: 4px; width: 3in;"><table style="margin: auto;"><tbody><tr><td rowspan="2"><img src="http://www.myjclibrary.org/receipts/EvergreenLogo.gif" style="border: 0; height: 57px; width: 64px;" /></td><td style="font-size: 16pt;">Jackson County</td></tr><tr><td style="font-size: 16pt;">Public Library</td></tr></tbody></table><div style="text-align: center;">Your Library Branch<br /><span style="font-size: 90%;"><img src="http://www.myjclibrary.org/receipts/handset.png" style="border: 0; height: 11px; padding: 0px; width: 8px;" />876-5309 <img src="http://www.myjclibrary.org/receipts/pointer.png" style="border: 0; height: 10px; padding: 0px; width: 10px;" /><a href="http://myjclibrary.org/">http://MyJCLibrary.org/</a></span></div><br />Jason checked out:<br /><div style="border-bottom: 2px solid black; border-left: 0px; border-right: 0px; border-top: 2px solid black; margin: 4px 0px 4px 0px; padding: 4px 0px 4px 0px;"><ol style="margin: 0in 0in 0in -.125in;"><li style="padding-bottom: 2px;"><span style="font-weight: bold;">Pizza: award winning pies for the home kitchen</span>, book by Pete Evans<br /><span style="font-size: 90%;">Due: <span style="font-weight: bold;">Wednesday, Oct 31</span><br />Barcode:&nbsp;<a href="http://valinor.ca/lis601_bc.html">3</a>1234000000014</span></li></ol></div><br />You saved $15.95 by using the library!<br /><br /><div style="font-size: 90%; text-align: center;"><img src="http://www.myjclibrary.org/receipts/facebook.png" style="border: 0; height: 12px; padding: 0px; width: 12px;" /><a href="http://facebook.com/MyJCLibrary" target="_blank">MyJCLibrary</a> <img src="http://www.myjclibrary.org/receipts/twitter.png" style="border: 0; height: 12px; padding: 0px; width: 12px;" /><a href="http://twitter.com/MyJCLibrary" target="_blank">@MyJCLibrary</a></div><span style="font-size: 80%;"><br />You were helped by Anne<br />YRLIB 2012-10-10 14:25<br /></span></div><br />There's a fair bit of HTML behind that, but because of <span style="font-family: Courier New, Courier, monospace;">%INCLUDE()%</span>, the receipt template itself has actually gotten shorter:<br /><br /><div style="border: 1px solid gray; font-family: 'Courier New', 'Courier', monospace; font-size: 80%;"><span class="Apple-style-span" style="color: #999999;">----Header----</span><br /><br />%INCLUDE(header_text)%<br />&lt;center id="alertinfo"&gt;&lt;br/&gt;&lt;b class="rcpt mod-EmptyHideParent"&gt;%INCLUDE(alert_text)%&lt;/b&gt;&lt;br/&gt;&lt;/center&gt;<br />&lt;center id="noticeinfo"&gt;&lt;br/&gt;&lt;b class="rcpt mod-EmptyHideParent"&gt;%INCLUDE(notice_text)%&lt;/b&gt;&lt;br/&gt;&lt;/center&gt;<br />&lt;br/&gt;<br />&lt;span class="rcpt xf-TitleCase"&gt;%PATRON_FIRSTNAME%&lt;/span&gt; checked out:<br />&lt;div id="bbox"&gt;<br />&lt;ol id="list"&gt;<br /><br /><br /><span class="Apple-style-span" style="color: #999999;">----Line Item----</span><br /><br />&lt;li style="padding-bottom:2px;"&gt;<br />&lt;span style="font-weight: bold;" class="rcpt xf-Trim"&gt;%title%&lt;/span&gt;&lt;span&gt;, &lt;span class="rcpt mod-EmptyHideParent mod-CircModToCode"&gt;%circ_modifier%&lt;/span&gt;&lt;/span&gt;&lt;span&gt; by &lt;span class="rcpt mod-EmptyHideParent xf-LastFirstToFirstLast"&gt;%author%&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;<br />&lt;span class="smaller"&gt;<br />Due: &lt;span style="font-weight: bold;" class="rcpt xf-DateToLongDate"&gt;%due_date%&lt;/span&gt;&lt;br /&gt;<br />Barcode: %barcode%<br />&lt;/span&gt;&lt;span style="display: none;" class="rcpt add-price"&gt;%price%&lt;/span&gt;<br />&lt;/li&gt;<br /><br /><br /><span class="Apple-style-span" style="color: #999999;">----Footer----</span><br /><br />&lt;/ol&gt;<br />&lt;/div&gt;<br />&lt;br/&gt;<br />&lt;span&gt;You saved $&lt;span class="rcpt total-price-2 mod-HideEmptyParent"&gt;&lt;/span&gt; by using the library!&lt;/span&gt;<br />&lt;center id="eventinfo"&gt;&lt;br/&gt;&lt;span class="rcpt mod-EmptyHideParent"&gt;%INCLUDE(event_text)%&lt;/span&gt;&lt;br/&gt;&lt;/center&gt;<br /><br />%INCLUDE(footer_text)%<br /><br /><br /></div><br />You can also see that I've also stashed the <span style="font-family: Courier New, Courier, monospace;">alert_text</span>, <span style="font-family: Courier New, Courier, monospace;">notice_text</span>, and <span style="font-family: Courier New, Courier, monospace;">event_text</span> includes in there just in case I have a good use for them later, such as putting upcoming events in a little table at the bottom of the receipts…<br /><br />Then to complete the receipts, I have to just go to the Library Settings Editor, find the "Content of header_text include" and "Content of footer_text include" options and set them like so:<br /><br /><br /><div style="border: 1px solid gray; font-family: 'Courier New', 'Courier', monospace; font-size: 80%;"><span class="Apple-style-span" style="color: #999999;">----Content of header_text include----</span><br />&lt;style type="text/css"&gt; body { font-family: Verdana, Arial, sans-serif; font-size: 10pt; margin: 0px; } .smaller { font-size: 85%; } #alertinfo { font-size: 85%; } #noticeinfo { font-size: 65%; } #eventinfo { font-size: 65%; } #eventinfo table { font-size: inherit; } #footerdata { font-size: 80% } #bbox { border: 2px solid black; border-right: 0px; border-left: 0px; margin: 4px 0px 4px 0px; padding: 4px 0px 4px 0px;} #list { margin: 0in 0in 0in -.125in; } &lt;/style&gt;&lt;center&gt;&lt;table&gt;&lt;tr&gt;&lt;td rowspan="2"&gt;&lt;img style="width: 64px; height: 57px; border: 0;" src="http://www.myjclibrary.org/receipts/EvergreenLogo.gif" /&gt;&lt;/td&gt;&lt;td style="font-size: 16pt;"&gt;Jackson County&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-size: 16pt;"&gt;Public Library&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;%LIBRARY%&lt;br/&gt;&lt;span style="font-size: 90%;"&gt;&lt;img style="width: 8px; height: 11px; border: 0;" src="http://www.myjclibrary.org/receipts/handset.png" /&gt;&lt;span class="rcpt xf-ShortNameToPhone"&gt;%SHORTNAME%&lt;/span&gt; &lt;img style="width: 10px; height: 10px; border: 0;" src="http://www.myjclibrary.org/receipts/pointer.png" /&gt;http://MyJCLibrary.org/&lt;/span&gt;&lt;/center&gt;<br /><br /><span class="Apple-style-span" style="color: #999999;">----Content of footer_text include----</span><br />&lt;center&gt;&lt;img style="width: 12px; height: 12px; border: 0;" src="http://www.myjclibrary.org/receipts/facebook.png" /&gt;MyJCLibrary &lt;img style="width: 12px; height: 12px; border: 0;" src="http://www.myjclibrary.org/receipts/twitter.png" /&gt;@MyJCLibrary&lt;/center&gt;&lt;br/&gt;&lt;span id="footerdata"&gt;You were helped by &lt;span class="rcpt xf-TitleCase"&gt;%STAFF_FIRSTNAME%&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;%SHORTNAME% %TODAY_TRIM%&lt;br/&gt;&lt;/span&gt;<br /><br /></div><br />Keeping in mind, of course, that both of those have to be entered as single lines. Eugh. Changes don't take effect until the next time staff clients log in. So if changes are made to includes late in the day, the next morning when staff log in everything will be updated.<br /><br />An aside for multi-branch libraries, or tiny consortia: Library settings are assigned to org units, and if the particular org unit your workstation is at doesn't have a setting defined, in most cases it will then see if the parent org unit defines that setting, and so on, until it hits the top level of the org unit tree and gives up. This means that things like headers and footers can be set for whole systems or the entire consortium by defining them "high enough" in the org tree. Things like events, notices, and alerts can then be defined as generally or as specifically as needed.<br /><br />Finally, if you are in a position where you manage your own server, it's possible to add additional include types. To do that, go to the Admin menu -&gt; Server Settings -&gt; Organization Unit Setting Types. Then click New Org Setting Type and fill in the fields like so:<br /><br /><table class="jbtable1px" style="font-family: Courier New, Courier, monospace;"><tbody><tr><td>name</td><td>circ.staff_client.NEW_INCLUDE_NAME</td></tr><tr><td>label</td><td>Content of NEW_INCLUDE_NAME include</td></tr><tr><td>datatype</td><td>String</td></tr><tr><td>description</td><td>Text/HTML/Macros to be inserted into receipt templates in place of %INCLUDE(NEW_INCLUDE_NAME)%</td></tr><tr><td>grp</td><td>receipt_template</td></tr></tbody></table><br />Instead of NEW_INCLUDE_NAME just enter whatever the new include should be: <span style="font-family: Courier New, Courier, monospace;">item_detail</span>, <span style="font-family: Courier New, Courier, monospace;">library_branding</span>, whatever your receipts demand. The name field is important; everything up to the NEW_INCLUDE_NAME must be exactly that, but the label and description can be whatever you like, these are just what the other settings look like.<br /><br /><br />Hopefully there is something here that is useful to someone, there are too many ways to customize the printed output of an Evergreen Library System for me to even mention them all. If you want to do something and don't know if it's possible, poke around; you might stumble on something good.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-943585066923200772012-08-01T23:15:00.000-04:002012-08-01T23:15:04.037-04:00Losing to WinSo how about that <a href="http://www.chicagotribune.com/sns-rt-oly-badm-day6scandal-pixl6e8j1btx-20120801,0,3470046,full.story" target="_blank">Olympic Badminton scandal</a>, eh? Not having ever played in a tournament where it's advantageous to lose, the whole thing made no sense to me when I first heard about it.<br /><br />Luckily someone out there (game designer <a href="http://sirlin.net/" target="_blank">David Sirlin</a>)&nbsp;<a href="http://www.sirlin.net/blog/2012/8/1/playing-to-win-in-badminton.html" target="_blank">explains how this goes down</a>.<br /><blockquote class="tr_bq">It's an embarrassing time for Olympic badminton. But not because some players lost on purpose—because someone created horrificly bad tournament rules and then tried to blame the competitors for playing to win.</blockquote><br />I also thought the explanations of kingmakers and lame-ducks was particularly interesting.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-49634563823033403222012-07-31T22:14:00.000-04:002012-07-31T22:14:28.434-04:00The 4 Flavors of iPhone BackupThere are four different methods to back up (or not) your iOS device, let's take a look at what each flavor of backup does.&nbsp;Android users may have more/fewer options; I don't know, but I really encourage you to find out, or&nbsp;if someone wants to give me an Android device I can look into those options as I have time. (I hear the Nexus 7 is nice, and it fits nicely into my&nbsp;<a href="http://loquaciousthesis.blogspot.com/2012/04/what-your-smartphones-default-email.html" target="_blank">Android buying guide</a>)<br /><br /><b>Rocky Road</b><br />In ye olden days of cell phones, if you broke your device everything was gone and you were sad. If you had a GSM phone with a SIM card, perhaps some or all of your address book could be stored there if you 1, knew about the option and 2, bothered to do it (not just once!). Not backing up your iPhone at all is a callback to these heady days where every trip to the restroom or walk under cloudy skies was skirting danger. Except that losing everything will drive you up the damn wall because you put months or years worth of data, logins, media, etc. into that phone because <i>they're computers now</i>, and now all of that is gone. The only consolation is that you won't have to re-purchase your apps or media, but that is a cold comfort when composing your second or third "I lost my phone, please send me your #" status update on Facebook.<br /><br /><b>Vanilla</b><br />If you sync your iPhone to your Mac or PC iTunes can backup your device as part of the process. Since iOS 5 you can also sync wirelessly, so you don't even have to take it out of your pocket if you don't want. When your device is connected, click on it in iTunes' Devices section. On the Summary tab, make sure "Back up to this computer" is selected. Just remember to sync now and then (it's a fine way to charge, you know) and you're set.<br />There is a <a href="http://support.apple.com/kb/HT4946" target="_blank">caveat</a> though: by default the "Keychain" (where your email account, website, and most app passwords are stored) cannot be restored to a new device. This means that if you drop your phone into a bucket of water, when you bring home your new phone, all of the media, apps, etc. will be put back just as they were, but you will have to re-enter every password. To enable restoration of your Keychain, you need to select the "Encrypt local backup" option and supply a password. Don't forget your password, or you'll lose the entire backup rather than just your Keychain.<br /><br /><b>French Vanilla</b><br />Since iOS 5 was released, it is becoming less and less necessary to ever connect an iOS device to a computer to manage it, including backup. Once a day your device is just backed up to Apple's iCloud servers automatically (though you can also trigger backups on demand). There are some rules though, the device has to be: 1. plugged in and charging, 2. locked, and 3. connected to a wireless network (3G will not do, as it would rapidly wreck your data limit). This can be turned on either by connecting the device to a computer and selecting the option in iTunes, or by going into the iCloud option in the Settings app.<br />You can tailor what is and isn't backed up to iCloud in the Settings app, and you'll likely want to keep an eye on that because you only have 5GB of space unless you purchase some. If you take a lot of photos, that will disappear faster than you think, though only using PhotoStream and not backing up your photos will (almost!) be as good. It is also important to note though that the list of items <a href="http://support.apple.com/kb/HT4859" target="_blank">backed up to iCloud</a> is much smaller than the list of items <a href="http://support.apple.com/kb/HT4946" target="_blank">backed up by iTunes</a>, and there is no way to restore a Keychain to a new device. Bear in mind that if you do have convenient access to a laptop or desktop that may be a better option. Or perhaps…<br /><br /><b>Cookie Dough</b><br />You can have your Keychain and eat it too, something like that anyway. Selecting the iCloud backup option disables <i>automatic</i> iTunes backups, but it doesn't stop you from doing them yourself. All you have to do is plug in your device each night to automatically backup to iCloud, and then when you want to do a full backup, connect the device to your computer, let it sync, and then right-click on it in iTunes' Devices section. There will be a Back Up option that you can choose to do a regular iTunes backup, even if you have iCloud backups enabled. It's only really necessary to backup to iTunes after telling a new app to remember your password, or changing an existing password in an app. Should disaster strike, iTunes can give you back your most recent full backup and your Keychain, and iCloud can fill in the gaps.<br /><br /><br />I wrote this for two reasons: 1, Everybody should be backing up their computers, and modern smartphones are just as much computers as the ones on your desk or lap; and 2, I have had occasion to test this recently. I frequently hook my iPhone up to my Mac, so I just use the iTunes backup (it's inconvenient for me to charge it overnight) and that's fine. This is also the fastest and easiest way to get new episodes of podcasts on the phone until the <a href="http://loquaciousthesis.blogspot.com/2012/07/lipstick-on-podcastsapp.html" target="_blank">Podcasts app</a> works properly.<br />A few weeks ago though, I was going to be in northern Indianapolis and for some time I'd had some trouble with my Home button working properly (that's kind of a big deal on an iPhone). I just thought I'd go see if the Apple Store had any ideas or a way to clean it, but about a minute after explaining my problem a newly refurbished phone was staring me in the face. I wasn't expecting to replace my phone that day, but I had backed my phone up the night before and that home button was really bugging me. Shortly after getting home I hooked up the new phone and restored my latest backup to it. Short of setting up the notification options for a few apps&nbsp;(push notifications are weird for boring and off-topic reasons), it was as if my phone never had a problem. It was easy and I didn't have to ask for phone numbers on Facebook with my hat in my hands.<br /><br />So, if you own an iPhone (or iPod Touch, iPad, etc.) check on your backup settings, you don't want to be learning about this stuff <i>after</i> your device is busted. For Android users I'm sure there's something similar, just look around, but be wary of anything that comes from the device manufacturer; the backup that Samsung software makes probably won't help you if you move to an HTC device later.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-16624041770058986532012-07-05T20:42:00.001-04:002012-07-05T20:42:10.868-04:00Lipstick on a Podcasts.appSince Apple's <a href="https://developer.apple.com/wwdc/" target="_blank">World Wide Developer's Conference</a>&nbsp;in early June, word has spread that iOS 6 will remove the Podcasts tab from the Music app, and in preparation, Apple has released a new app called <a href="http://itunes.apple.com/us/app/podcasts/id525463029?mt=8" target="_blank">Podcasts</a> into the app store.<br /><br />It's pretty. I'm pretty pissed off at it.<br /><br />First things first, it has some reaslly nice features, you can: subscribe to podcasts using the built-in Catalog or radio-inspired "Channels" section; set varying subscription/auto-download settings per podcast; and most importantly, receive new episodes over the air automatically.<br /><br /><strong>But.</strong><br /><br />There are some serious issues that honestly make me wonder if this wasn't an assignment given to an intern as a trial by fire; if that is the case, they have been burned.<br /><br /><strong>There are … pauses</strong><br />As soon as the app starts it shows you the Library and then … you wait. It's probably checking you Music app for un-synced podcasts or something over the network, but it's certainly not in any hurry to let you do things like scroll around, tap a podcast, or anything else. Occasionally it will just stop responding for seemingly no reason. It's like&nbsp;your brand new iPhone has changed into a 3+ year old HTC Frond.<br /><br /><strong>Car integration is completey busted</strong><br />What's a great place to listen to podcasts? In your car! Cars with "iPod integration" have a USB port (or more rarely, a dangling Apple 30-pin connector somewhere) that you can connect your iPod or iPhone to, and then use the car's play/pause, next and previous buttons to control playback. It's <em>awesome</em>, and in Apple's new Podcasts app, it only works for about 3-5 seconds, just about long enough for you to get on the road. Wretched. (I know it's busted for the 2010 Prius. Maybe another car works better? I can't really afford to test that.)<br /><br /><strong>There is no indication of new episodes</strong><br />The default view of your library is lists of podcast's album art in a scrollable list. Do new episodes show up as a badge, or is there maybe just a blue dot like in Mail.app? No! You get to poke around randomly and be dissapointed until you happen across one, or just give up and switch to the table view. The table view is also the only place to find a "playlist" of all unplayed episodes.<br /><br /><strong>Episodes won't download over 3G if they're larger than 50 MB</strong><br />This is greatly improved over the old limit of 10MB, but it's still stupid. If you stream the episode instead of downloading it, the whole thing still plays! Stop making me play games and download the damn thing.<br /><br />As released this app is awful, but maybe they can throw a few more developer hours at it before iOS 6 and the new iPhone come out in October. If not, I guess I'll have to start sizing up the third party options. This is hugely annoying because I don't need any fancy features, if this app simply worked properly I'd be perfectly happy.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-31859392438624329422012-05-30T21:23:00.000-04:002012-05-30T21:23:18.450-04:00Get Your Classics OnA neat find from John D. Cooks' blog, <a href="http://www.johndcook.com/blog" target="_blank">The Endeavor</a>: the organ works of JS Bach available from <a href="http://www.blockmrecords.org/bach/" target="_blank">James Kibbie</a>, and the Open Goldberg Variations from <a href="http://www.opengoldbergvariations.org/download" target="_blank">Kimiko Ishizaka</a>. Free to download in a variety of formats.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-39824531426914633782012-04-20T00:00:00.000-04:002012-04-20T00:00:08.350-04:00What your smartphone's default email signature says about what manufacturers think of youI would like to think that <a href="https://twitter.com/#!/thinkofthought/status/192967196413149185/photo/1" target="_blank">this</a> is a fake, a joke, someone having a lark. But in the end I know it probably isn't. It got me thinking, though, about these things. I turned off the "Sent from my iPhone" signature on my phone because I have no interest in attaching tiny ads to my emails, but if you compare the two they send rather different messages; let's explore.<br /><br /><b>Sent from my iPhone</b><br />This is technically an ad, yes, but it also sounds somewhat personal. <b>I</b> sent this email to you from <b>my</b> iPhone; implied is a mea culpa for any typos in the message. Perhaps I was walking down the hall, at lunch, whatever I do when I reply to email away from my desk. Taken this way you could almost believe (though not quite) that I actually&nbsp;<i>chose</i>&nbsp;this as an email signature just to convey that message. At the very least, marketing or not, it's <i>short</i>.<br /><br /><b>Sent via the Samsung Galaxy S™ II Skyrocket™, an AT&amp;T 4G LTE smartphone.</b><br />There is nothing technical about this; my default email signature is a blatant advertisement for both my phone and carrier, one of which likely exchanged large sums of money to be included in my every message in the hopes that my not caring or knowing how to change it will hopefully influence you into believing that one and/or the other of these companies offers a product/service worth a damn. I am unlikely to tell you face to face that I ever send anything <i>via</i> anything else. Neither am I likely to remember all <i>5 segments</i> of my smartphone's full name if ever quizzed about it. Please, the next time we meet in person, tell me what the Menu button in Android does so I might be able to change this. I am more than happy to stand there and let a sales person tell me that Android 2.3.5 is "<a href="http://www.samsung.com/us/mobile/cell-phones/SGH-I727MSAATT" target="_blank">state-of-the-art</a>" and neither crack a smile nor <a href="http://en.wikipedia.org/wiki/Android_version_history#v4.x_Ice_Cream_Sandwich" target="_blank">roll my eyes</a>. I promise you I don't know how to type ™ on this keyboard. I wish I didn't sign a two-year contract for this. Finally, if there are typos I'm sorry, I sent this from my phone because I decided it couldn't wait until I got back to my desk.<br /><br />I'll briefly drop the same advice here that I give to anyone that asks me in person:<br />So you want a smartphone? If you ever plan to ask me a question about it, you should get an iPhone. If you're going to ignore that sage wisdom, then the only Android phone worth owning at any time is whichever one has "Nexus" in the name this year. No, I don't know if you can get one at the Verizon/AT&amp;T Store.<br /><br />Does this mean I think you, gentle reader, have made a terrible error in buying whatever non-Nexus Android phone you might have? Not if you're a tech geek and knew full well ahead of time what you were getting into and decided "I really want this phone even though it will never be improved beyond its current state," or you plan to put <a href="http://www.cyanogenmod.com/" target="_blank">CyanogenMod</a> on it yourself. Have a good time with all of that (but don't ask me what's happening when it goes walkabout on you).Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-31934506098189975342012-04-12T10:18:00.001-04:002012-04-12T10:18:20.332-04:00Evergreen Receipts FollowupThis post is followup to a <a href="http://loquaciousthesis.blogspot.com/2012/01/receipt-series-1-isnt-good-enough-good.html">series</a>.<br /><br />At some point some of the modifications I wanted to preform on receipts were added as built-in text macros. The benefit of this is that if for some unfortunate reason you have to use text only receipts you can still modify them as you see fit - JavaScript customization only works in the "Mozilla" (browser) print mode. Thomas Berezansky was kind enough to mention them to me (over a month ago now, because I am terrible at following up on personal projects) and you can read how the built in date formatting, whitespace trimming, and substrings work at&nbsp;<a href="http://bstcon.com/receipts.txt">http://bstcon.com/receipts.txt</a> . The last line -&nbsp;"Doesn't even cover the default set of features that exist without a custom JS file defined in Mozilla print mode. ;)" - is more than a reminder that there is a lot of flexibility available "for free" in the receipt editor; it's also a reminder that nothing is documented except for the placeholders. Currently you can learn what's available by looking through the source code for that part of the Evergreen client or you can do your own thing, possibly duplicating existing functionality (though perhaps with nicer syntax).<br /><br />He also pointed out an available placeholder that I didn't notice: <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">%shelf_expire_time%</span>. This uses a library setting that you can configure in the client to determine your available hold expiration dates automatically. This is better than adding the date manually, and was either added sometime after I originally changed our receipts in 2008 or I just didn't know about it since I hadn't looked through most of the library settings at the time. Perhaps someone will find another use for <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mod-DateAdd</span>, but it's not necessary for hold expiration dates.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-62082460583226153012012-02-28T22:04:00.000-05:002012-03-02T14:16:58.571-05:00Receipt Editing in Evergreen 3This post is the last of a <a href="http://loquaciousthesis.blogspot.com/2012/01/receipt-series-1-isnt-good-enough-good.html">series</a>.<br /><br />There is, of course, at least one more consumer of receipts in a library setting: library staff. If items are pulled from the shelf to fill a hold they'll have receipts printed, the same if an item can fill a hold when it's checked in. Many libraries will only hold an item for a limited time before returning it to the shelf or letting another person have it, so you might want to write an expiration date on it. Also, if you have any &nbsp;holds volume to speak of, the items on the hold need to be kept in some kind of order or no one can find anything - so that's more writing, highlighting, or circling names on receipts.<br /><br />If only it were possible to simplify and automate this stuff.<br /><br /><div style="border: 1px solid gray; font-family: Verdana, Arial, sans-serif; font-size: 10pt; margin: 0px; width: 3.5in;"><style type="text/css"> .smaller { font-size: 90%; } </style>Route item to <b>Holds Shelf</b>:<br /><b>The Title of The Item</b><br /><span class="smaller">Barcode: 31234000000032<br />Request date: 2012-01-15<br /></span><br /><div style="font-size: .5in; font-weight: bold; text-align: center;">B<span style="font-size: 10pt; font-weight: normal;"><br />Expires:<br /></span>2/29</div><br />Hold for <span style="border-bottom-color: black; border-bottom-style: solid; border-bottom-width: 2px; border-left-color: black; border-left-style: solid; border-left-width: 2px; border-right-color: black; border-right-style: solid; border-right-width: 2px; border-top-color: black; border-top-style: solid; border-top-width: 2px; font-size: 125%; font-weight: bold;">Boyer, Jason</span><br /><span class="smaller">Barcode: 21234000000041<br />Notify by phone: 555-876-5309 </span><br /><span style="font-size: 80%;">Item checked by Jason<br /><br />YRLIB 2012-02-22 13:42 </span></div><br />Oh, right.<br /><br />Only 3 more CSS trigger classes are needed for this. Here are the rest of the classes defined in my custom_format.js, and below you can get a copy to add to, remove from, etc., along with templates if you're interested.<br /><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mod-DateAdd-<i>N</i></span>(<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">-d|w</span>)<br />If there's a date in the tag, N days (by default) or weeks are added to it. If the tag is empty, N days or weeks are just added to the current date.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="mod-DateAdd-7"&gt;2012-02-22 11:32 AM&lt;/span&gt;</td><td>2012-02-29</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-SubStr-<i>N1</i></span>(<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">-<i>N2</i></span>)<br />Maybe you don't want the full text of item or patron information. A substring of the tag's contents are taken starting from N1 (begins at 0), going either to the end of the string, or N2 characters long.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="xf-SubStr-3-4"&gt;BigTextTime&lt;/span&gt;</td><td>Text</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-DateToMonthDate</span><br />This takes a date and returns a month/date format. If there isn't a date in the tag, it uses today. It's not currently zero padded, if you care about that.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="xf-DateToMonthDate"&gt;2012-03-07&lt;/span&gt;</td><td>3/7</td></tr></tbody></table><br /><br />Having seen all of those transform classes, it might be nice to be able to actually use them. A generic copy of my&nbsp;<a href="https://sites.google.com/site/loquaciousthesisfiledump/files/custom_format.js?attredirects=0&amp;d=1">custom_format.js</a>&nbsp;is available that you can download and customize. The <a href="https://sites.google.com/site/loquaciousthesisfiledump/files/receipt_templates?attredirects=0&amp;d=1">receipt templates</a> are also available. A reminder: you need to save after changing each template. If you think you'll make changes to multiple templates and then only click Save Locally at the end, you're just going to get upset. I have been upset before; learn from that.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-45778162569226416362012-02-24T21:55:00.002-05:002012-03-02T14:14:32.905-05:00Receipt Editing in Evergreen 2Alternate title: Yo dawg, I heard you like spans…<br /><br />So what is the deal with all of those spans and their <a href="http://loquaciousthesis.blogspot.com/2012/01/receipt-series-1-isnt-good-enough-good.html">seemingly useless CSS classes</a>? To answer that, we'll have to take a brief detour into how receipt editing used to work in Evergreen before 2.1.<br /><br /><div style="border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-top-color: gray; border-top-style: solid; border-top-width: 1px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;"><div style="font-family: 'Times New Roman', Times, serif; font-size: 125%; text-align: center;">Ine Ye Olde Paste</div><div style="font-family: 'Times New Roman', Times, serif;">It used to be that you could simply in-line JavaScript whenever necessary to achieve an effect that wasn't possible with simple HTML and substitution. Such as:</div><div style="font-family: 'Times New Roman', Times, serif;"><br /></div><div style="border-bottom-color: gray; border-bottom-style: solid; border-bottom-width: 1px; border-left-color: gray; border-left-style: solid; border-left-width: 1px; border-right-color: gray; border-right-style: solid; border-right-width: 1px; border-top-color: gray; border-top-style: solid; border-top-width: 1px; font-family: 'Courier New', Courier, monospace; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px;">Your item is due:<br />&lt;script type="text/javascript"&gt;<br />var dt = new Date("%date_due%");<br />document.write(dt.getUTCMonth() + "/" + dt.getUTCDate() + "/" + dt.getUTCFullYear());<br />&lt;/script&gt;</div><div style="font-family: 'Times New Roman', Times, serif;"><br /></div><span class="Apple-style-span" style="font-family: 'Times New Roman', Times, serif;">Which would print&nbsp;</span><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Your item is due 02/29/2012</span><span class="Apple-style-span" style="font-family: 'Times New Roman', Times, serif;">.</span><br /><div style="font-family: 'Times New Roman', Times, serif;"><br /></div><span class="Apple-style-span" style="font-family: 'Times New Roman', Times, serif;">While it may not be great practice on a web page to inline a bunch of </span><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">document.write()</span><span class="Apple-style-span" style="font-family: 'Times New Roman', Times, serif;">'s all over the place, it worked just fine in this case. It's not as if we had to worry about how Internet Explorer would render it or a screen reader; if it worked in the preview, it worked, the end.</span><br /><div style="font-family: 'Times New Roman', Times, serif;"><br /></div><div style="font-family: 'Times New Roman', Times, serif;">At any rate, these heady times have come to a close, any script&nbsp;tags are stripped out as of 2.1. There is a new method for running JavaScript in receipts, but it's well hidden since there was no documentation when this hit me and the setting required to enable custom scripts didn't even exist by default. There's a little work to do, so let's leave the past behind and get back to the future.</div></div><br />It is possible that the setting oversight has been corrected by the time you read this; to check, log in to the Evergreen client, click the Admin menu, <b>Server</b> Administration, and Organization Unit Setting Types. Click next a dozen or so times, until you reach the types beginning with 'p'. If there is a setting type with the name of <b>print.custom_js_file</b>, remember its name and rejoice, the hard part is finished. If not, create one with that type, give it a name you can remember and give it a description (the other options aren't required). To actually set the option, go to the Admin menu, <b>Local</b> Administration, Library Settings Editor. Edit the setting with the name matching the print.custom_js_file type, and set it to a URL you control. http://example.com/receipt/custom.js or something similar would be great. Keep the location in mind because this is where you'll be putting your javascript file with all of your custom code. Now, to the heart of the matter.<br /><br />What is the point of this? Instead of inline JavaScript, you get 1 file in which to work your magic, its URL stored in the above setting, and one function in it that will be called: print_custom(type). This means that whatever you're going to do has to be based on element ids, DOM inspection, or CSS class names.<br /><br />I had a few requirements with regard to the effects I wanted to achieve. As of 2.1, receipt replacements still aren't global, so if you have two <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">%PATRON_FIRSTNAME%</span> replacements, only one of them is replaced with a name. Not great. So I needed a way to signal that one value should be copied to another location. And because a value that is repeated may need additional processing, the method used needed to allow multiple effects to be specified. Adding the fact that you can't easily use ids in the line item section (you could append <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">%LINE_NO%</span> to an id if you must, but only to one of them!), the simplest method then is using CSS classes. Because you can't tell the difference between placeholder and template text, each replacement that requires any modification is best wrapped directly in a tag. That's why there are so many of those spans running around, any effect or transformation requires a tag directly around its target.<br /><br />So, here are the CSS classes that trigger the transforms and modifications that I use to bend receipts to my will. A copy of this custom_format.js will be available in another post; use them as they are, or bend your receipts a different way.<br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">rcpt</span><br />This doesn't actually do anything, it's only a signal. All of the elements that need further processing are grabbed and then tested for the remaining classes.<br /><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">src-</span>(NAME) and <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">dest-</span>(NAME)<br />Classes that begin with <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">src-</span> have their contents copied into a dictionary keyed with the rest of the class name. Classes beginning with <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">dest-</span> signal that the dictionary should be checked for a key that matches the rest of it's name, and if a value exists, it's put into that tag. Fortunately, these tags are only temporary, because multiple receipt replacement is supposed to be fixed in Evergreen 2.2. I can't wait to get rid of them; they're irritating and incapable of handling certain situations. (not so easy to use in a URL, for instance.)<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt src-author"&gt;Petroski, Henry.&lt;/span&gt;&lt;br/&gt;&lt;span class="rcpt dest-author"&gt;&lt;/span&gt;</td><td><span class="Apple-style-span">Petroski, Henry.&nbsp;</span>Petroski, Henry<span class="Apple-style-span">.</span></td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mod-CircModToCode</span><br />The default representation of a circulation modifier is <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">code : name : description</span>, which can range from&nbsp;<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">book : book : book</span> to &nbsp;<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">book : Book : A monograph item</span>. No, sir.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt mod-CircModToCode"&gt;book : Book : monograph&lt;/span&gt;</td><td>book</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-Trim</span><br />Sometimes you don't want the extra punctuation that AACR2 or ISBD demand. (Some might argue that you <i>never</i> want it in this day and age, but that's for another time.) Extra hanging spaces are particularly maddening if you're adding your own punctuation, though, so this strips them out.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt xf-Trim"&gt;To Engineer Is Human<span style="white-space: nowrap;">&nbsp;&lt;/span&gt;;</span></td><td>To Engineer Is Human;</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-TitleCase</span><br />Bring patron information into the Title Cased Future, with only a minor chance of mangling their names. Since we only use first names on our receipts, I could avoid the whole "What to do about Mc and O'?" question entirely.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt xf-TitleCase"&gt;SUZIE&lt;/span&gt;</td><td>Suzie</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-LastFirstToFirstLast</span><br />I don't believe I've ever bragged about my skill at picking names… Anyway, when was the last time you told someone that your favorite author was King, Stephen? Never? Then it shouldn't be printed that way either. This transform also removes any silly vestigial punctuation used for printing catalog cards. ("Stephen. King," isn't any great improvement.)<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt xf-LastFirstToFirstLast"&gt;King, Stephen.&lt;/span&gt;</td><td>Stephen King</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-ShortNameToPhone</span><br />This is just how we get by using 1 set of templates for multiple locations and different phone numbers. It obviously requires customization before it will help anyone else.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt xf-ShortNameToPhone"&gt;YRLIB&lt;/span&gt;</td><td>867-5309</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">xf-DateToLongDate</span><br />This will take a date of the form <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">YYYY-MM-DD (etc.)</span> and change it to "DayName, MonthAbbrv Date, Year" form, dropping any time component.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">&lt;span class="rcpt xf-DateToLongDate"&gt;2012-02-29 11:59:59 PM&lt;/span&gt;</td><td>Wednesday, Feb 29, 2012</td></tr></tbody></table><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">mod-EmptyHideParent</span><br />Here's one that takes a little explanation. Our receipts print "Title, circ mod by Author" but if the circ modifier or author is blank, it turns ugly. So, the best way to fix that is to remove any unnecessary punctuation and spacing. Because you can't really use ids in line items, that means the simplest thing to do is to make use of relative DOM nodes, so this one requires 2 span tags, one that includes the punctuation and still within that, the one that contains the placeholder.<br /><br /><table class="jbtable1px50p"><tbody><tr><th>Template</th><th>Becomes</th></tr><tr><td style="font-family: 'Courier New', Courier, monospace;">Title&lt;span&gt;, by&lt;span class="rcpt mod-EmptyHideParent"&gt;&lt;/span&gt;&lt;/span&gt;</td><td>Title</td></tr></tbody></table><br /><br />So that's what is required to put together the updated checkout receipt I've shown, but there is one more receipt that sees a lot of use <i>inside</i> the library, and I think improving it makes a major difference behind the checkout desk. <a href="http://loquaciousthesis.blogspot.com/2012/02/receipt-editing-in-evergreen-3.html">It's coming up next</a>.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-71835688394277665712012-02-21T00:00:00.000-05:002012-04-17T21:06:16.610-04:00Receipt Editing in Evergreen 1I've worked at a <a href="http://myjclibrary.org/">library</a> for over 10 years. For most of that time, the receipts we've given people that check out our items have essentially been plain text, dot-matrix printouts of barely more than a title and date. In late 2008 we joined a consortium running the&nbsp;<a href="http://evergreen-ils.org/">Evergreen</a>&nbsp;Integrated Library System. Suddenly everything was different! This was better, that was worse, no one knew what this thing was, and those features weren't even there yet. The receipts, though, were very similar.<br /><br /><i>Something</i>&nbsp;about them is very different though. Now there is an option to change the templates for the receipts and mold them into whatever shape or style you might want. It doesn't require using any bizarre forms processing language or choosing from one or two equally bad layouts in an options file, these templates are made of regular HTML with a few placeholders for the patron or item specific information.<br /><br />Think about the other items given to your patrons as they walk out the door. Your program fliers probably aren't just a short paragraph typed up in Word's default font are they? Is your website a single page with dark Times New Roman on a light background? I thought not. (I <i>hope</i> not.)<br /><br /><br /><b>Update 4/17/2012</b>: I didn't see it until today, but <a href="http://walkingpaper.org/">Aaron Schmidt</a> wrote a great <a href="http://lj.libraryjournal.com/2012/02/opinion/aaron-schmidt/consider-the-checkout-slip-the-user-experience/#_" target="_blank">article</a> for the User Experience blog on LibraryJournal's site, explaining more about the reasons you might care about improving the looks and information usability of your receipts. He does a much better job of explaining the why; after you've read his article (go on, it's a short post) come back here for some how.<br /><br /><br />So, what is the default, anyway?<br /><br /><div style="border: 1px solid gray; font-family: 'Times New Roman', 'Courier New', serif; padding: 4px; width: 3.5in;">Welcome to Your Library Branch!<br />You checked out the following items:<br /><hr /><ol><li>Reading: the bookening<br />Barcode: <a href="http://valinor.ca/lis601_bc.html">3</a>1234000000014 Due: 2012-01-21 4:52 PM</li><li>Watching: the movening<br />Barcode: 31234000000023 Due: 2012-01-14 4:53 PM</li></ol><hr />YRLIB 2012-01-07 16:53<br />You were helped by JASON </div><br />The basic information is here; the book is due back in 2 weeks, the movie in 1, and the barcode is included in case you have cause to need it. You can parse out what you need, but aside from the subtitles you wouldn't know one is a book and the other a movie. The dates are also absolutely tape-on-the-glasses nerdstyles; I mean, I love me some <a href="http://en.wikipedia.org/wiki/Iso8601">ISO 8601</a>&nbsp;(this approximation, less so), but I don't know anyone that uses it for non-computer things.&nbsp;You can also see from the last line that we still enter all of our user information IN ALL CAPS. HELLO FROM 1985. (Don't tell me about postal this or that, <i>I don't care</i>.)<br /><br />At JCPL, anything handed to a patron or frequently used by staff is based on the following layout.<br /><br /><div style="border: 1px solid gray; font-family: Verdana, Arial, sans-serif; font-size: 10pt; padding: 4px; width: 3.5in;"><table style="margin: auto;"><tbody><tr><td rowspan="2">LOGO!</td><td style="font-size: 16pt;">Jackson County</td></tr><tr><td style="font-size: 16pt;">Public Library</td></tr></tbody></table><div style="text-align: center;">Your Library Branch</div><br />Suzie checked out: <br /><div style="border-bottom: 2px solid black; border-left: 0px; border-right: 0px; border-top: 2px solid black; margin: 4px 0px 4px 0px; padding: 4px 0px 4px 0px;"><ol style="margin: 0in 0in 0in -.125in;"><li style="padding-bottom: 2px;"><span style="font-weight: bold;">Reading: the bookening</span>, book by Author McWriter<br /><span style="font-size: 90%;">Due: <span style="font-weight: bold;">Saturday, Jan 21</span><br />Barcode:&nbsp;<a href="http://valinor.ca/lis601_bc.html">3</a>1234000000014</span></li><li style="padding-bottom: 2px;"><span style="font-weight: bold;">Watching: the movening</span>, dvd<br /><span style="font-size: 90%;">Due: <span style="font-weight: bold;">Saturday, Jan 14</span><br />Barcode:&nbsp;31234000000023</span></li></ol></div><div style="font-size: 90%; text-align: center;">Call us at (555) 876-5309<br />Visit us online at http://Example.com/</div><br /><span style="font-size: 80%;">You were helped by Jason<br /><br />YRLIB 2012-01-14 16:53<br /></span></div><br />Plenty of changes here, if you look closely at the second item there's obviously some kind of textomancy happening, the dates are also written in an easier to read manner, and there's almost nothing left that's in all caps (no database changes,&nbsp;for better or worse). There's also local library branding and the patron's first name. That adds a nice little touch of personalization and will really help those families where each child wants to check out their own items. To try to preserve my sanity, the branch name and phone number are workstation aware, so one set of templates is used at all of our locations without edits. Neat.<br /><br />Since Evergreen receipt templates are just HMTL, that's all you really need to know to make changes, but adding CSS is an easy way to up the attractiveness.&nbsp;To try to stay below&nbsp;<a href="http://en.wikipedia.org/wiki/LD-50">LD<sub>50</sub></a>&nbsp;levels of dull, I'll assume that everyone has a passing familiarity with both and I'll largely ignore that. You can make your receipts look however you want, or you can just borrow from my example. It's the Javascript that I'll get to later that will really make it shake.<br /><br />So, here's the template for that default receipt:<br /><br /><div style="border: 1px solid gray; font-family: 'Courier New', 'Courier', monospace; font-size: 80%;"><span class="Apple-style-span" style="color: #999999;">----Header----</span><br />Welcome to %LIBRARY%!&lt;br /&gt;<br />You checked out the following items:&lt;br /&gt;<br />&lt;hr /&gt;<br />&lt;ol&gt;<br /><br /><span class="Apple-style-span" style="color: #999999;">----Line Item----</span><br />&lt;li&gt;%title%&lt;br /&gt;<br />Barcode: %barcode% Due: %due_date%<br /><br /><span class="Apple-style-span" style="color: #999999;">----Footer----</span><br />&lt;/ol&gt;<br />&lt;hr /&gt;<br />%SHORTNAME% %TODAY_TRIM%&lt;br /&gt;<br />You were helped by %STAFF_FIRSTNAME% </div><br />Templates have header, line item, and footer sections. The line item section is repeated for each item checked out, renewed, etc.&nbsp;The text between percent signs are the library/patron/item text placeholders. Generally speaking the upper case placeholders work anywhere and the lower case only work in the line item. The good news is that there are many more than the ones we see here; to see them all, there's a Macros button in the template editor. Keep in mind that each receipt type (checkout, checkin, holds, etc.) has a different list, so check it out.<br /><br />So I upgraded the look of our checkout template, what does it look like now?<br /><br /><div style="border: 1px solid gray; font-family: 'Courier New', 'Courier', monospace; font-size: 80%;"><span class="Apple-style-span" style="color: #999999;">----Header----</span><br />&lt;style type="text/css"&gt;<br />&nbsp; body { font-family: Verdana, Arial, sans-serif; font-size: 10pt; margin: 0px; }<br />&nbsp; .smaller { font-size: 90%; }<br />&nbsp; #footerdata { font-size: 80% }<br />&nbsp; #bbox { border: 2px solid black; border-right: 0px; border-left: 0px; margin: 4px 0px 4px 0px; padding: 4px 0px 4px 0px;}<br />&nbsp; #list { margin: 0in 0in 0in -.125in; }<br />&lt;/style&gt;<br />&lt;table style="margin:auto;"&gt;<br />&lt;tr&gt;&lt;td rowspan="2"&gt;&lt;img style="width: 64px; height: 64px; border: 0;" src="http://example.com/receipts/Logo.gif" /&gt;&lt;/td&gt;&lt;td style="font-size: 16pt;"&gt;Jackson County&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td style="font-size: 16pt;"&gt;Public Library&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;div style="text-align: center;"&gt;%LIBRARY%&lt;/div&gt;<br />&lt;br /&gt;<br />&lt;span class="rcpt xf-TitleCase"&gt;%PATRON_FIRSTNAME%&lt;/span&gt; checked out:<br />&lt;div id="bbox"&gt;<br />&lt;ol id="list"&gt;<br /><br /><span class="Apple-style-span" style="color: #999999;">----Line Item----</span><br />&lt;li style="padding-bottom:2px;"&gt;<br />&lt;span style="font-weight: bold;" class="rcpt xf-Trim"&gt;%title%&lt;/span&gt;&lt;span&gt;, &lt;span class="rcpt mod-EmptyHideParent mod-CircModToCode"&gt;%circ_modifier%&lt;/span&gt;&lt;/span&gt;&lt;span&gt; by &lt;span class="rcpt mod-EmptyHideParent xf-LastFirstToFirstLast"&gt;%author%&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;<br />&lt;span class="smaller"&gt;<br />Due: &lt;span style="font-weight: bold;" class="rcpt xf-DateToLongDate"&gt;%due_date%&lt;/span&gt;&lt;br /&gt;<br />Barcode: %barcode%<br />&lt;/span&gt;<br />&lt;/li&gt;<br /><br /><span class="Apple-style-span" style="color: #999999;">----Footer----</span><br />&lt;/ol&gt;<br />&lt;/div&gt;<br />&lt;div style="text-align:center;" class="smaller"&gt;Call us at (555) &lt;span class="rcpt src-ShortName xf-ShortNameToPhone"&gt;%SHORTNAME%&lt;/span&gt;&lt;br /&gt;<br />Visit us online at http://Example.com/&lt;/div&gt;<br />&lt;br /&gt;<br />&lt;span id="footerdata"&gt;<br />You were helped by &lt;span class="rcpt xf-TitleCase"&gt;%STAFF_FIRSTNAME%&lt;/span&gt;&lt;br/&gt;<br />&lt;br /&gt;<br />&lt;span class="rcpt dest-ShortName"&gt;&lt;/span&gt; %TODAY_TRIM%&lt;br/&gt;<br />&lt;/span&gt;<br /><br /></div><br />Witchcraft! What are all of these spans doing up in here? And whither these false CSS classes? The answers require a little <a href="http://loquaciousthesis.blogspot.com/2012/02/receipt-editing-in-evergreen-2.html">backstory</a>…Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.comtag:blogger.com,1999:blog-639973363509187094.post-6029171403557546402012-02-15T21:07:00.000-05:002012-02-21T21:13:45.007-05:00Who? What?Everyone has opinions, these are mine. Opinions&nbsp;on libraries, software, whisk(e)y, those weird little ridges on the F and J keys, damn near anything.&nbsp;Feel free to <a href="http://loquaciousthesis.blogspot.com/feeds/posts/default">enjoy</a> them, or <a href="http://www.google.com/">don't</a>; I'm told it's a big internet.Jason Boyerhttps://plus.google.com/110913797977185263447noreply@blogger.com
http://loquaciousthesis.blogspot.com/feeds/posts/default
loquaciousthesis.blogspot.com
crawl=CC-MAIN-2017-34
91019
application/http; msgtype=response
sha1:326RNSD37Y57IQHFUPXSBFNVHYZY3PGQ
<urn:uuid:0e21acd2-3526-4e19-afb1-8e089ea351a2>
2017-08-19T16:42:31Z
172.217.7.225
application/atom+xml
sha1:QHD2H2BFLFC4RQVTYYDZRJ2IJ2BBDUDH
<urn:uuid:6419003d-37ed-4ce2-9e61-1cddec4e66ea>
http://loquaciousthesis.blogspot.com/feeds/posts/default
response
<urn:uuid:b80d540b-f2b4-4b06-abd8-9aabf5934844>
robots: classic
hostname: ip-10-233-137-12.ec2.internal
software: Nutch 1.6 (CC)
isPartOf: CC-MAIN-2017-34
operator: Common Crawl Admin
description: Wide crawl of the web for August 2017
publisher: Common Crawl
format: WARC File Format 1.0
conformsTo: http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf