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 - November 12, 2008

"Minha Menina" Lyrics Translated


I've been getting a lot of hits from folks looking for the English translation of Os Mutantes' "Minha Menina", so here's my take on it. "Smelling happiness" sounds odd, but that's basically what "cheirando a alegria" means.

She's my girl
And I'm her boy
She's my love
And I'm her love completely

The silvery moon hid itself
And the golden sun appeared
A beautiful day dawned
Smelling happiness
Since I dreamt
And woke up thinking of her

Because she's my girl
And I'm her boy
She's my love
And I'm her love completely

The rose bush already blossomed
And she's the rose that I won
For her I put my heart
In front of reason
And I'm gonna tell
everyone
How I love her

Posted at 09:07 AM     Read More  


Wed - October 29, 2008

Ralph Stanley Playing Clinch Mountain Backstep


Oh, man, I love this song. I think Boing Boing had linked to it a little while back.

I grew up listening to the Nitty Gritty Dirt Band's version, off the Uncle Charlie and His Dog Teddy LP. There's another short clip on YouTube of Steve Sparkman , Ralph Stanley's banjo player playing it. His bell-like tone is outstanding.

BTW, it made me very happy to hear that the good Doctor made a radio ad for Obama. One week to go. YEE HAW!

Posted at 04:15 PM     Read More  

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.py

You 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  


Wed - October 1, 2008

Turn off iTunes Store Links in iTunes 8


After going crazy trying to find out where Apple hid the preference checkbox to turn off the arrows that link to the iTunes Store, I read that they removed the GUI method. Luckily, the Terminal method still holds.

Paste this line into Terminal.app and hit return:

defaults write com.apple.iTunes show-store-arrow-links -bool FALSE

The next time you fire up iTunes, those annoying arrows should be gone.

Posted at 10:18 AM     Read More  


Fri - September 26, 2008

Pandora the explorer


I've been using Pandora on my iPhone more and more. My favorite stations lately: Luna Radio and Flaming Lips Radio.

One such song played on one of those "stations" that I've recently taken a shine to: M. Ward's "Hi-Fi", off of his 2005 album Transistor Radio. The guitar is quite good, and when he goes into his falsetto...yeah.

Posted at 10:22 AM     Read More  

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  


Sat - September 6, 2008

Os Mutantes' "A Minha Menina" in McDonald's Commercial


I'm a little late to the party. I read that this ad first played during the NBA finals, but still, I was surprised to see and hear it. The setting is a kids soccer game, with the losing team getting McDonalds, and the winners envying them. Strange. Great song, though. I saw it while either watching the Daily Show or Colbert.

The song, "A Minha Menina ", was written by Jorge Ben for Os Mutantes. It has a cool sound, with fuzz guitar and all. There's also an album of theirs called Technicolor, in which they translated a lot of their songs into English with different arrangements. Some folks love it, others hate it. Os Mutantes have a lot of fans: Belle and Sebastian, Beck, Of Montreal, Band of Bees, David Byrne. In fact, David Byrne made the first album in Luaka Bop's Brazil Psychedelic Classics series, Everything Is Possible, a compilation of Os Mutantes' hits. And they reunited for a tour in 2006. There's a live album from London on Luaka Bop also. On the original cut from the 1968 eponymous album by Os Mutantes, I think that's Jorge Ben's voice opening the song, and he seems to be playing acoustic guitar on it as well. Jorge Ben Jor was just in NYC for the Brazilian Day festival on 46th street along with Lulu Santos. We just missed them, que pena.

Posted at 11:24 AM     Read More  


Wed - July 16, 2008

iPhone Apps


I don't know how all the corporate world/exchange server stuff is doing on the iPhone, but for music and gaming, the update's pretty cool. If you're purchasing music for your library especially, you gotta get an iPhone.

iPhone Music Apps that I find interesting:

1. Pandora for the iphone
For exploring unfamiliar bands you might like, this service is really neat. There's also the regular Pandora website to try, if you're interested. Their licensing agreements with the record companies only allow six skips per "station" per hour, and it feels like it's ramming certain artists down your throat sometimes, so it could be better, but it's still worth exploring.

2. Midomi
This is showing up on other phones too. If you go to a movie theater, Verizon has an extra-long ad for one of their phones with this type of service. It might be Midomi, for all I know. The idea is for you to sing or record a bit of a song on your phone, then this service attempts to figure out what song it is. Great in theory, but... Popular music works pretty well: I tested it on some Gorillaz, Gladys Knight, Fred Astaire. Classical, international searches fail. I tried some Vivaldi piece, and the response was some Mary J. Blige song. Hit or miss. It uses music & lyrics to figure it out. I gave it the intro to Same Old Song & Dance by Aerosmith, before the singing starts, and it nailed it. I gave it "Speak Low" by Billie Holiday, and it failed. I gave it "Body & Soul" off the same album, and it succeeded.

3. AOLRadio
Basically WiFi radio, so it's got the satellite radio feel. It works pretty well. Good method to mark the songs you like too.


With all this great gadgetry and wireless, the main problem now is power consumption. Laptops, phones, ipods.They suck it up! I'm living with the first version of the phone, and I heard it's been improved with the 3G version.

Posted at 12:52 PM     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  
Random House Giving Up DRM
Kopfreise
Librarian Gets Burned By iTunes-Exclusive Track, Lives
Guitar Hero Episode on South Park
I Love Lucy, The Daughter of the Devil
DRM must die
Big Doings in the Wacky World of Warcraft
Zeppelin reunion in November
Radio David Byrne
The Future That Never Happened
Learning Ruby on Rails
iPhone Hijinks
Making the receipt printer program better
Moving Autodialer Over to an Intel Mac Mini
Foghorn Stringband


©