Fri - December
26, 2008
Overdrive for Mac
I downloaded Overdrive's new console for mac.
It worked quite well. Let's hope our Overdrive
circulation stats pick up now that MP3's are available. I think it's a big plus
for all our iPod-owning patrons.
Posted at 04:46 PM
Read More
Wed - October 29, 2008
Autodialer Script
This AppleScript
GetCallList.applescript
lives on our MacMini running PhoneHerald which calls our patrons about their
holds. It merges the separate calling lists generated by the horizon receipt
printer programs running on each circ station, weeds the duplicate patron
barcodes, then it GUI scripts PhoneHerald to import the text file as a new
group, and starts a new calling run with that list. I have a separate script for
our branch library, which uses a different calling template, but this example
should give you the gist of how it works.
The file provided here is the simple text version of
the script. The real script is saved as an AppleScript, extension .scpt , and I
use iCal to trigger it. We run two call jobs a day, one at 10 a.m., and another
around 3:45 p.m.
Some
notes:
Our file server is a Windows
2003 box.
The Mac Mini is a 1.66 GHz
Intel Core Duo with 512MB of RAM running OS X
10.4.11.
The voice modem that comes
with PhoneHerald is USB, and it dials out on an extra fax line that we have.
This machine is also used to run our
Ruby on Rails apps: the pull list app, which sorts and formats our Horizon pull
lists, and our ordering app that grabs info via Amazon. I've also set up the
pull list app to sort and format our NA lists.
Posted at 03:48 PM
Read More
Python Version of Horizon Receipt Printer App
This is the code for the new version of the receipt
printer application
horizon_receipt_printer.py
. If you've ever written code in both Visual
Basic and Python, you'll know why I wrote it in Python. ;-)
I've also attached the various ini files it depends
on: the routes.ini file
routes.ini
and the setup.ini file
setup.ini
.Before you get going, I recommend
that you install the VB version, because
that will create all the basics for you, i.e., the Receipt Printer directory,
and explain how to set up Horizon properly. This Python version takes the place
of that program, and not as neatly as Dean designed the installer. So, when
all's said and done, if you want to replace the VB version completely, you will
need to delete the VB executable, and set the Python executable version to start
up on login. You will also replace the default .ini files in the Receipt Printer
directory with the .ini files
above.This new code was written in
Python. To use it, you need to install Python and IronPython. Also, if
you haven't gotten it already, you'll want to get at least the 2.0 release of
the .Net Framework. I've written earlier about why I used IronPython, namely to
use the file system watcher function, but other than that, the code is basic
Python.The work setup at the library
is pretty good. We have a circ station in the back of the circ office, that we
can use as the guinea pig. If the code works, then we compile an executable to
copy to the other circ stations. The other stations need Python installed, but
not IronPython. The executable also needs two DLL's that must reside in the same
directory as the executable: IronMath.DLL and
IronPython.DLL.The only modifications
I've made to the code available for download is to sanitize it, taking out phone
numbers, web addresses, mail server names, etc. Just remember to add the correct
information before compiling. If you want to be able to send receipts via email,
you will need to have access to a mail server. If you don't want to generate a
text file of patrons who need to be called, simply delete or comment out the
relevant code. We use our list to feed our autodialer, which is PhoneHerald,
running on a Mac Mini.Once you install
it, the IronPython directory has a number of useful things in it. Be sure to
read the tutorial, which has a basic file system watcher
example.To compile an executable out
of IronPython code, you will need to download the pyc sample zipped directory
from this
page. I keep the pyc.py file plus the two DLL's in the root of my
IronPython folder, where the horizon_receipt_printer.py file is. When I'm all
ready, I navigate to my IronPython folder within the command line, then execute
this:ipy.exe pyc.py
/main:horizon_receipt_printer.pyYou
will have a new file, horizon_receipt_printer.exe, ready for distribution. Make
sure it works on the machine where you created it before you start passing it
out. Sometimes the permissions on the circ stations need to be
tweaked.If you have questions, feel
free to email me: ckupec@me.com
Posted at 01:51 PM
Read More
Wed - October 22, 2008
Back-to-back TV Commercials
Who's the adman who first came up with this
double-barreled shotgun technique for TV advertising?
It involves two 15-second or two thirty second ads
for the same sponsor, back-to-back. I wonder if it's analogous to the invention
of the stadium wave. Many fathers. I do notice that McDonald's uses the method
an awful lot. Does it work?
Posted at 02:12 PM
Read More
Fri - September 26, 2008
So where is Overdrive's Mac-compatible Console?
I wish Overdrive would get a move on and release the
Mac-compatible version of their Console application.
As it stands, if you want to get any Overdrive MP3's
onto your iPod, it needs to be formatted for PC, and you have to use a PC to
transfer them over. Another complaint, none of the MP3 titles are multiple-user.
Until these problems are rectified, our download circs are going to remain like
they have been, anemic. We are taking another look at MP3 CD's for our patrons.
They're a hell of a lot cheaper than what Overdrive charges, and they give us
better circ numbers. They can be returned in the same day, unlike the
downloadable versions, with their draconian restrictions. Meanwhile, our
consortium still is buying WMA versions of titles. Dumb, dumb, dumb. When the
budget crunch comes, all this stuff is going to get cut, and we'll be stuck with
nothing but a digital albatross.
Posted at 09:50 AM
Read More
Mon - July 7, 2008
Ruby on Rails, Python, Lua
I've been teaching myself Ruby and Python, and a
little Lua, mostly for fun, then I've been trying to apply it to what we do at
the library.
RUBY So
far, I'm using Ruby on Rails to maintain our online statistics database, process
our daily pull lists, and speed up and automate our selection/acquisitions
system.
For our stats database, I
quit using Excel, and switched to the RoR + mySQL method. I probably cut an
hour off of my monthly stats collection by creating it. I hooked up Gruff, a
Ruby gem which generates quick graphs, to use with it. It's simple and
efficient. Visual display of quantitative information is the way to go. I use it
to compare fiscal years as well as month to month. I like creating algorithms in
Ruby and Python so much better than in anything Microsoft offers, i.e., Excel,
VB. With macros, I never felt like I was in complete control.
The daily pull list database takes a
downloaded text file we export from our ILS, and sorts and reformats it into
separate PDF's for the various departments who hunt the items down. I actually
have an off-shoot of this that I use with my iPhone. As I find the items, I tap
on them, and remove them from my list, via Ajax. Unfortunately, there's no quick
mechanism to update the item records in the ILS, so that has to be done item by
item.
The consortium doesn't have an
acquisitions module with its ILS, so each library fends for itself. Our
historical record keeping still depends on FileMaker, but I've been able to move
the data entry method over to Rails. It's pretty cool. I added a GreaseMonkey
script to trigger the data grab from Amazon. I used to do the same thing with
FileMaker and AppleScript, but once Amazon updated their AWS, I had to migrate
it. It's actually better with Rails. The challenge now is to duplicate the
acquisitions side of the FileMaker database, i.e., ordering, reception,
accounting. Batch ordering via Amazon is pretty seamless. Exporting CSV files
for Ingram and Baker & Taylor works alright, if you've got ISBN's. For AV
materials, it's not so good. B&T doesn't have a method to batch import UPC
codes yet, even though they allow one to search individually on UPC's.
PYTHON I
started learning Python after I watched the Google App Engine demo that's
available online. The App Engine is kind of like what Heroku is doing with Ruby
on Rails. With Google, it's Python plus Django. That setup didn't look as
straight forward as RoR, but I did take a shine to Python itself. I looked
around for something to do with it, and I decided to redo the consortium's
Receipt Printer application, that was originally written in Visual Basic. The
core function of the receipt printer script is the file system watcher. I surfed
around looking for a python version of the watcher, and while I didn't find
anything useful, I did come across IronPython. What's more, inside the
IronPython tutorial is a quick file system watcher example. So I modified that,
and retooled the rest of the printer script using pure Python as much as
possible. The Python code looks so much cleaner and easier to understand. I like
it a lot. I wish I didn't have to use the .Net stuff at all, but better than
nothing. Plus IronPython is in Microsoft's stable, so it's got active
support.
LUA I
wrote a quick Lua program to reformat an extremely long emailed report from the
consortium we get once a month or so. Lua is extremely fast, almost C speed, so
if you have need to zoom through megabytes of text, parsing, etc., check it out.
It's a popular programming language for game add-ons, especially
WoW.
Posted at 04:59 PM
Read More
Wed - March 19, 2008
Receipt Printer App Email Capable
I've had a commented-out sub-routine in my library's
receipt printer code that can email the receipt rather than print it for some
time now. It required me to use Horizon's table editor to modify our receipt
slip to include the patron email address. But now, with our push to go green and
cut costs, I've done further testing on it, and it looks good to
go.
The logic is pretty basic. If an email address
exists for the patron, the program generates an email with the formatted data
and sends it off piggy-backing on the consortium's mail server. No receipt gets
printed. It looks like the 3M self-checkout stations we have do essentially the
same thing, so I think it's kosher. The staff member at the circ desk gets
feedback two ways: I added a "beep" line, and I write to the console window that
the email was sent and where. What's really nice is that the emailed receipts
are perfectly formatted for my iPhone. I didn't have to tweak
anything.
If the mail gets sent, but
the address is bad, we get the bounceback through our normal channels, which is
great. I'm now just putting a little "try" loopback that will print out a
receipt for email users only in the case that the mail server is unavailable. I
think that patrons who sign up for email notification services will really like
it. I'm just waiting for final approval from the consortium's mail server
administrators.
Knowing this is
possible, it was very disheartening to discover that there isn't yet any way to
get isbns out. Horizon's kind of clunky when it comes to customizations like
that. For now, I think the only bib record info that can come out to the
checkout receipt is the title. It's too bad, because once the isbns can come
out, a lot of nice apps could use that data, e.g., LibraryThing, Delicious
Library, etc.
Posted at 09:27 AM
Read More
Mostly good news from Overdrive
Overdrive sent out a PLA preview to its customers
that says they will soon begin offering MP3 downloads as well as their usual DRM
WMA fare. Also that they are going to provide a Mac version of their Console
application to download those MP3s. The downside is that their titles from
Random House will continue to be WMA, PC only, no-iPod garbage, which isn't
their fault, but Random House's.
I think it's great that Overdrive is working to
expand their range. Our consortium will probably lean heavily toward buying the
MP3 titles, and shunning the WMA stuff, hearing the news. We're serving a niche
market with the WMA's as it is. Once we can offer downloadable audio for folks
with iPods, the floodgates are going to open for Overdrive. Good for them, and
good for public libraries. Until Random House Audio opens up their model, I
recommend that public libraries avoid buying their downloadable audio. Stick to
buying their CDs and tapes.
Posted at 08:29 AM
Read More
Fri - March 7, 2008
iPhone SDK released
Apple released their developer kit for iPhone
yesterday. I watched the presentation
off their website this morning. Yowza. That whole market is just gonna explode.
I will be very surprised if Apple's iPhone doesn't end up dominating mobile.
Even now, they're impressive.
It's interesting that Apple has made iPhone
development only possible via a Mac running Leopard. Hell, I can't even use it!
Gotta get Leopard. It was kind of like Vista with me. BFD. I was also happy to
hear them to tout the Model-Controller-View philosophy. I'm all over that,
having been messing with Ruby on Rails for the last few months.
For big companies, the news that
Exchange Server will be accessible via iPhones must be good news. The demos that
various companies showed were worth watching: EA Games, Epocrates,
SalesForce.com, AOL. The premise of that game
Spore
from EA was funny. You start out as a paramecium, a slime mold, or something
like that and work your way up. Kinda like you and me. Karma Heights. Available
upgrades: spinal column, gills, opposable thumbs, massive Chess Club brain, etc.
I don't know. I'm making most of that stuff up. I did see a spine in there
though.
Anyhoo, the bottom line is that
iPhones are probably going to do what everyone hoped PDA's and Blackberries
would do. As I've said before, Apple gets it. Sure, they're like Microsoft,
control freaks, yadda yadda, but unlike Microsoft, they get it. And that's why
they're successful. What is it they get, you ask? Aesthetics, simplicity, logic,
coolness. Something Microsoft can't buy. Even Microsoft's wanna-purchases are
uncool. Yahoo? Come on.
So, what can
libraries do with iPhones? Practically any report you run can be made paperless
and mobile. Straight to PDF is the simplest, but for interaction, I've been
toying with Ruby on Rails. Using Rails, you can omit items from your list once
you've found them, tag problems, upload changes back to the ILS. Talking to the
ILS is the biggest problem.
I've been
working on a method to run our pull lists, so that a staff member using an
iPhone can do it all, eliminating the need for a paper copy. We still need to
generate the list within Horizon, then export that text file. From there, it's
uploaded to a Rails app that slices and dices the report for us. If I could get
the last activity date info out from the ILS, then we could give up printing it
entirely. I'm envisioning that this pull list formatter/archiver could reside at
the central site, and all agencies within our consortium would use it.
I have an iPhone library success story
of my own: I was working the reference desk, and a patron needed to make some
color copies, which we don't offer. So, I told him about Staples, FedEx/Kinko's,
etc. I was about to look up the location of a Kinko's on the web for him, when
it dawned on me that I had my iPhone. I went to Google Maps, searched on Kinkos,
and it displayed all the locations in my area. I tapped on the pin closest to my
location, and up popped the phone number, URL, etc. of that location. I tapped
the phone number, and when their answering machine told me they were closed, I
was able to tell the patron to save himself a trip. Not as cool as searching for
all the Thai restaurants in my area, but still. I was impressed. The patron was
too.
If you're a reference librarian
or a systems librarian, I would recommend getting an iPhone.
Posted at 01:14 PM
Read More
Wed - February 27, 2008
Random House Giving Up DRM
Now that Random House is going to sell their digital
audiobooks DRM-free to all vendors, I can only hope that Overdrive and Audible
open up their systems. Once Audible becomes a full-fledged part of Amazon, I
think they'll change their ways, but Overdrive? They're probably too beholden to
the Microsoft DRM mess to retool. If they don't retool, I hope they wither and
die, frankly. The only thing Overdrive offers libraries is a legal way to check
out digital audio. We don't own the files, can't take them anywhere else...who
needs that?
What libraries need is a stand alone mechanism that
can store files and serve them up via some kind of SIP authentication,
integrated somehow with the ILS. Any vendors doing that? I could probably tool
something together using Ruby on Rails, but the ol' ILS in and out, my droogies,
there's the rub.Plan
B:Instead of Playaways, which we have
been buying, we could just get a couple of eMusic accounts, each account
allowing two monthly audiobook downloads for $19.99 a month, and buy some cheap
mp3 players that have displays, and circ those. If the iPod shuffle only had a
display. The price is right: $49. Those would take care of the folks who don't
have computers or their own players, then we could allow the technophiles come
in and download onto their own devices. We could even burn the files to MP3 CD
for circulation. Still not the optimal solution, but better and cheaper than
what we give them now: Playaways, Books on CD, and Overdrive.
Blech.Link to the Random
House Story on Boing Boing
Posted at 08:41 AM
Read More
Fri - November 9, 2007
Guitar Hero Episode on South Park
This week's episode poked fun at the Guitar Hero
phenomenon.
I really enjoyed when Stan's dad whips out his
guitar and starts playing Kansas' "Wayward Son", telling the boys, "see, I can
play it on a real guitar!", and the boys aren't impressed at all. That's my
house. Only my youngest son contemplates (can you contemplate something when
you're only six?) stepping up to a real guitar. He's already halfway there. He's
got attitude: "When I have my own band, I'm gonna
rock!"
We just got
Guitar Hero III : Legends of
Rock, which actually is Guitar Hero IV, if you
include Guitar Hero Encore: Rocks the
80s. It came with a wireless controller/guitar
that looks like a Stratocaster, which is sort of interesting, since Gibson must
have paid for exclusive rights to be the only guitar maker in the
game.
Some of the songs are ancient,
which is funny. "Sunshine of Your Love", "Paint It Black", "Black Magic Woman"?
Those songs were old when I was a kid. Plus it has what must be the requisite
Sabbath and ZZ Top songs. Like all the games in the series, the final set of
songs sucks. "Devil Went Down To Georgia"? WTF?
Posted at 12:48 PM
Read More
Tue - October 2, 2007
I Love Lucy, The Daughter of the Devil
What's good on TV? My vote is for
Lucy, the Daughter of the
Devil.
This show is on Cartoon Network's Adult Swim. It's a
fifteen minute mini-show, so minus the commercials, it's probably ten minutes
max. The basic premise is that Lucy is a typical teenage girl, dating someone
her father doesn't approve of, etc. Plus she's the Anti-Christ. Hilarity ensues.
It's on Sunday nights.A couple of
mentions: Loren Bouchard, the creator,
who worked on Dr.
Katz, was also responsible, along with Brendon
Small, for Home
Movies. Here's an interview with
him. He and the interviewer talk about
Animal
Collective in there coincidentally. Plus he
mentions the "Jealous Guy" cover by Donnie Hathaway, who sounds like Stevie
Wonder, which you can find on Soul
Sides : Volume One. Place a hold
today! Ein kleine Welt, mein Freund.H.
Jon Benjamin provides the voice of the devil, among other characters on the
show. He is a very talented voice actor/comedian, who hails from Worcester,
Massachusetts. He has done the voice of Dr. Katz' son, as well as Jason and
Coach McGuirk on Home
Movies. He gets around. I just heard his voice
in a Family
Guy episode too.
Highly recommended. The pilot can be
found on YouTube: Lucy Daughter of the
Devil, while additional episodes
can be purchased on iTunes.
Posted at 11:11 AM
Read More
Thu - September 27, 2007
DRM must die
With Amazon debuting their beta MP3 download site,
the time has come for libraries to really start thinking about the future of
digital.
I gave it a whirl yesterday. Amazon's selection
isn't the best, and their classification scheme is weak, but the purchase and
transfer parts of the deal worked pretty well. And that's on a mac, folks. The
files were imported without a hitch into my iTunes library. There is a small
program Amazon has you download to facilitate the transfer into your music
library, but that wasn't painful like Overdrive's system is. Bring on the price
wars!
Finally, cheap, easy to download
DRM-free MP3s. eMusic is another website offering up DRM free files. What's
more, they have audiobooks available. So, how will libraries get into the act?
Will we buy the files, burn a disc, and then circ the disc? What about
circulating iPod fatties? What are we going to do? Is there anything we can do
that doesn't break the law?
If we put
the material on devices, and circulate the devices, why is that considered
different from a library buying a book and circulating it? If the worry is that
we might put the same title on two devices at the same time, why can't we pay a
simple licensing fee to do that sort of thing? Why does DRM have to be
involved?
Having said DRM must die,
maybe I should qualify that. The way it works now sucks. Maybe we should revisit
the idea of DRM working something like PGP. The product is unfettered. Perhaps
we could circulate it, with our own key pair, based on patron barcode and PIN,
as opposed to a platform-dependent, software-dependent, model. I know that it's
been thought about, but I can't say what the problems with that model are. Or
how about a simple DRM, that opens up with the PGP, and shuts down three weeks
later. It registers renewals on the library server. The server keeps tabs on
residuals, and we pay the publishers that. One price to purchase the title, a
lower price to renew, since that's no sweat off the publisher's back at all. We
need to create an open source, secure, cross-platform compliant, transaction
method that doesn't line anyone's pockets, or tie us into a single
vendor.
Posted at 01:26 PM
Read More
Big Doings in the Wacky World of Warcraft
Blizzard Entertainment just released a new patch to
its wildly popular MMPORG, World of Warcraft. The two big things are voice chat
and movie recording.
I've bought a few machinima books for the library,
and having seen the work of folks out on YouTube who've made machinima via WoW,
I can see its appeal. So this update, that will allow players to record their
play within the game seems to address that popularity. I haven't tried it out
yet, but I might try my hand at it, and pop a short demo here. I think my kids
might run with it.
Voice chat, the
other new thing, isn't actually running yet. My oldest son is all fired up,
because voice chat is really useful when running instances, and he was actually
trying to get me to shell out for a Ventrio account. If you've ever seen the
"Make Love, Not Warcraft" episode of South Park (Season 10), you might
understand what I'm talking about. Wow as a standalone application doesn't have,
or at least it didn't use to have, voice chat. It was all text chat. Voice chat,
in the form that Cartman, Kyle, Stan, and Kenny are using, works outside of
Blizzard's software, via voice chat servers. Ventrio is one of these companies
that offers voice chat. So, seeing this the next day as a free upgrade was a
godsend. What's it gonna be like? I don't know. One thought I did have is that
it would be harder to disguise your gender, plus it would be obvious to other
players when I'm playing a character versus my son playing the same character.
Stay tuned.
And then on top of all
that, there's another expansion coming this fall, the Wrath of the Lich King. I
guess it will be the size of the Burning Crusade expansion, i.e., it'll raise
the top level to 80, throw in a few new areas, new quests, new classes or races
maybe. The boys are psyched.
Which
brings me to the topic of gaming and reading. My two older sons read a lot about
their games. Not just cheats, walkthroughs, but the storyline stuff. I find it
rather amusing. They will talk about characters in their games as if they really
existed. Everything gets kinda blurry. But it's good to see them reading,
huh?
Posted at 01:01 PM
Read More
Fri - May 11, 2007
Making the receipt printer program better
Our head of circulation came back from the regional
library delivery meeting with the news that we might be changing our routing
codes. She asked me whether it would be a problem for our receipt printer
program. I told her that I'd mess around with it and give her a reply. So, I've
been working on taking the location specific code, i.e., library names, routing
codes, exceptions, etc. out of the receipt printer program, and making them
external ini files that can be changed without recompiling the
source.
I banged out a rough version to send to Dean for the
once over, and it made the cut, then I just got off the phone with Michele who
has modified the code for NOBLE. I asked her to send me some samples of the text
files that their ILS spits out, specifically the In Transit slips. I want to
integrate her work into one program "to rule them all". A grand unified program
for our regional delivery system. Alles klar, Herr Kommissar? Schmeckt
gut!
What I've done is make three new
ini files: routing_codes.ini, exceptions.ini, and main_locations.ini to take
care of the problem. If an agency string isn't found in the routing codes, the
program looks in the exceptions "table", which tells if the exception is a
branch or a alternate spelling/name, then gets the appropriate routing code.
With the routing code known, it then goes back to the main locations table to
get the name for the route
location.
The folks that sort for the
region don't need to worry about the subdivisions of the individual libraries,
so I continued to keep the main location name and routing number prominent, but
for the benefit of "in-house" sorting, e.g., when the staff at Chelmsford's main
library sort the items going to their branch, I emphasized the word "branch". I
still have the original name printed on the slip, but lower
down.
Once Michele shows me what her
slip input looks like, and we get that system's routing handled, we'll be able
to put a line for consortium name in the setup.ini, and use a single program for
both consortia. And then it might be usable on any Horizon or III system. It
might be worth setting up a source forge collaboration for the future, if it
pans out.
Posted at 03:50 PM
Read More
Moving Autodialer Over to an Intel Mac Mini
Computers in Libraries 2007
Genetic Line of Succession
Apple and EMI announce DRM-free downloads
The Daedalus Project
Yes, it IS a popularity contest!
Computers in Libraries 2007 & WoW
Free Publicity!
Yahoo! Message Boards
Boston Overreacts to ATHF ads
LPT1, COM1, HIHRD1
Pull List Workflow
Calling Patron Holds on the Cheap
Advanced Receipt Printing Solutions for Horizon 7.3
Use iTunes Store Info to Search Your Public Library's Catalog
|
Quick Links
Calendar
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat
|
Categories
Archives
XML/RSS Feed
Contact Me
Extreme Tracking Web Counter
Statistics
Total entries in this blog:
Total entries in this category:
Published On: Dec 26, 2008 04:46 PM
|