<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.code4lib.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrochkind</id>
		<title>Code4Lib - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.code4lib.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrochkind"/>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/Special:Contributions/Jrochkind"/>
		<updated>2026-04-08T20:16:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=MDC/2017/Registration&amp;diff=45416</id>
		<title>MDC/2017/Registration</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=MDC/2017/Registration&amp;diff=45416"/>
				<updated>2017-07-11T22:11:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registration for the [[MDC/2017| 2017 C4L DC/MD/VA]] Meetup.&lt;br /&gt;
&lt;br /&gt;
Registration is free, but please do register by adding your name to this list if you are planning to attend, so we can plan accordingly!  We have a maximum capacity of 48. &lt;br /&gt;
&lt;br /&gt;
You need to have a wiki account to update this page.  See instructions for requesting a new account on the [[Special:UserLogin|Login Page]]  Or, send email to [[User:BenWallberg|Ben Wallberg]], [mailto:wallberg@umd.edu wallberg@umd.edu] to be added to the list.&lt;br /&gt;
&lt;br /&gt;
# [[User:BenWallberg|Ben Wallberg]], University of Maryland Libraries&lt;br /&gt;
# [mailto:bkim@hshsl.umaryland.edu Bohyun Kim], University of Maryland, Baltimore, Health Sciences and Human Services Library&lt;br /&gt;
# [mailto:nicholas.kerelchuk@dc.gov Nick Kerelchuk], DC Public Libraries&lt;br /&gt;
# [mailto:RichardJM@si.edu Joel Richard], Smithsonian Libraries&lt;br /&gt;
# [mailto:katedohe@umd.edu Kate Dohe], University of Maryland Libraries&lt;br /&gt;
# [mailto:jame@loc.gov Jaime Mears], Library of Congress&lt;br /&gt;
# [mailto:racheltrent@gwu.edu Rachel Trent], George Washington University&lt;br /&gt;
# [mailto:eengland@jhu.edu Elizabeth England], Johns Hopkins University&lt;br /&gt;
# [mailto:lwoodford@jhu.edu Lora Woodford], Johns Hopkins University&lt;br /&gt;
# [mailto:lamandafrench@gwu.edu Amanda French], George Washington University&lt;br /&gt;
# [mailto:wmann@gmu.edu Wendy Mann], George Mason University&lt;br /&gt;
# [mailto:sweissman@stsci.edu Sarah Weissman], Space Telescope Science Institute, Mikulski Archive&lt;br /&gt;
# Sarah Hovde, Folger Shakespeare Library&lt;br /&gt;
# [mailto:abesottedphoenix@yahoo.com Brooke]&lt;br /&gt;
# [mailto:mlevy@ushmm.org Michael Levy], United States Holocaust Memorial Museum&lt;br /&gt;
# Laura Davis&lt;br /&gt;
# Rachel Curtis&lt;br /&gt;
# Tracy Meehleib&lt;br /&gt;
# [mailto:kbreneman@ubalt.edu Kyle Breneman], University of Baltimore&lt;br /&gt;
# [mailto:ccox@ubalt.edu Carolyn Cox], University of Baltimore&lt;br /&gt;
# [[User:DrewHeles|Drew Heles]], Johns Hopkins University&lt;br /&gt;
# [[User:AmyWickner|Amy Wickner]]&lt;br /&gt;
# Trey Gordner&lt;br /&gt;
# [mailto:plottel@gwu.edu Tina Plottel], George Washington University&lt;br /&gt;
# [mailto:matthew.m.pearson@nasa.gov Matthew Pearson]&lt;br /&gt;
# [mailto:mitchell.shelton@nasa.gov Mitchell Shelton]&lt;br /&gt;
# [mailto:adrienne.m.hieb@nasa.gov Adrienne Hieb]&lt;br /&gt;
# [mailto:jgottwig@umd.edu Jeremy Gottwig], University of Maryland Libraries&lt;br /&gt;
# [mailto:peichman@umd.edu Peter Eichman], University of Maryland Libraries&lt;br /&gt;
# [mailto:jfc100@georgetown.edu Joe Carrano], Georgetown University&lt;br /&gt;
# Beau Smith&lt;br /&gt;
# [[User:JefferyGerhard|Jeff Gerhard]], Georgetown Law Library&lt;br /&gt;
# [mailto:lwrubel@gwu.edu Laura Wrubel], George Washington University&lt;br /&gt;
# [[User:dkerchner|Dan Kerchner]], George Washington University&lt;br /&gt;
# [mailto:justinlittman@gwu.edu Justin Littman], George Washington University&lt;br /&gt;
# [mailto:sc1659@georgetown.edu Suzanne Chase], Georgetown University&lt;br /&gt;
# [mailto:mm3941@georgetown.edu Mike Marttila], Georgetown University&lt;br /&gt;
# [mailto:chrisg@gwu.edu Christopher Gross], George Washington University&lt;br /&gt;
# [mailto:westgard@umd.edu Joshua Westgard], University of Maryland Libraries&lt;br /&gt;
# [mailto:nepalomi@syr.edu Norma Palomino], Syracuse University and IDB&lt;br /&gt;
# [mailto:keith.gilbertson@gmail.com Keith Gilbertson], Virginia Tech and Accumulation of Data&lt;br /&gt;
# [mailto:kere@loc.gov Kelly Revak], American Folklife Center, Library of Congress&lt;br /&gt;
# Sarah Green&lt;br /&gt;
# [mailto:durden@umd.edu David Durden]&lt;br /&gt;
# [mailto:khes@loc.gov Kirk Hess] NDMSO, Library of Congress&lt;br /&gt;
# Emily Wahl, Folger Shakespeare Library&lt;br /&gt;
# Andrew Nagy&lt;br /&gt;
&lt;br /&gt;
== Waitlist ==&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=MDC/2017/Registration&amp;diff=45346</id>
		<title>MDC/2017/Registration</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=MDC/2017/Registration&amp;diff=45346"/>
				<updated>2017-06-23T15:40:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Registration for the [[MDC/2017| 2017 C4L DC/MD/VA]] Meetup.&lt;br /&gt;
&lt;br /&gt;
Registration is free, but please do register by adding your name to this list if you are planning to attend, so we can plan accordingly!  We have a maximum capacity of 48. &lt;br /&gt;
&lt;br /&gt;
You need to have a wiki account to update this page.  See instructions for requesting a new account on the [[Special:UserLogin|Login Page]]  Or, send email to [[User:BenWallberg|Ben Wallberg]], [mailto:wallberg@umd.edu wallberg@umd.edu] to be added to the list.&lt;br /&gt;
&lt;br /&gt;
# [[User:BenWallberg|Ben Wallberg]], University of Maryland Libraries&lt;br /&gt;
# [mailto:bkim@hshsl.umaryland.edu Bohyun Kim], University of Maryland, Baltimore, Health Sciences and Human Services Library&lt;br /&gt;
# [mailto:nicholas.kerelchuk@dc.gov Nick Kerelchuk], DC Public Libraries&lt;br /&gt;
# [mailto:RichardJM@si.edu Joel Richard], Smithsonian Libraries&lt;br /&gt;
# [mailto:katedohe@umd.edu Kate Dohe], University of Maryland Libraries&lt;br /&gt;
# [mailto:peggygriesinger@gmail.com Peggy Griesinger], George Mason University&lt;br /&gt;
# [mailto:jame@loc.gov Jaime Mears], Library of Congress&lt;br /&gt;
# [mailto:racheltrent@gwu.edu Rachel Trent], George Washington University&lt;br /&gt;
# [mailto:eengland@jhu.edu Elizabeth England], Johns Hopkins University&lt;br /&gt;
# [mailto:lwoodford@jhu.edu Lora Woodford], Johns Hopkins University&lt;br /&gt;
# [mailto:lamandafrench@gwu.edu Amanda French], George Washington University&lt;br /&gt;
# Esmé Cowles, Princeton University&lt;br /&gt;
# [mailto:wmann@gmu.edu Wendy Mann], George Mason University&lt;br /&gt;
# [mailto:sweissman@stsci.edu Sarah Weissman], Space Telescope Science Institute, Mikulski Archive&lt;br /&gt;
# Sarah Hovde, Folger Shakespeare Library&lt;br /&gt;
# [mailto:abesottedphoenix@yahoo.com Brooke]&lt;br /&gt;
# [mailto:mlevy@ushmm.org Michael Levy], United States Holocaust Memorial Museum&lt;br /&gt;
# Laura Davis&lt;br /&gt;
# Rachel Curtis&lt;br /&gt;
# Tracy Meehleib&lt;br /&gt;
# [mailto:kbreneman@ubalt.edu Kyle Breneman], University of Baltimore&lt;br /&gt;
# [mailto:ccox@ubalt.edu Carolyn Cox], University of Baltimore&lt;br /&gt;
# Lorena Ramirez-Lopez&lt;br /&gt;
# [[User:DrewHeles|Drew Heles]], Johns Hopkins University&lt;br /&gt;
# [[User:AmyWickner|Amy Wickner]]&lt;br /&gt;
# Trey Gordner&lt;br /&gt;
# [mailto:plottel@gwu.edu Tina Plottel], George Washington University&lt;br /&gt;
# [mailto:matthew.m.pearson@nasa.gov Matthew Pearson]&lt;br /&gt;
# [mailto:mitchell.shelton@nasa.gov Mitchell Shelton]&lt;br /&gt;
# [mailto:adrienne.m.hieb@nasa.gov Adrienne Hieb]&lt;br /&gt;
# [mailto:jgottwig@umd.edu Jeremy Gottwig], University of Maryland Libraries&lt;br /&gt;
# [mailto:peichman@umd.edu Peter Eichman], University of Maryland Libraries&lt;br /&gt;
# [mailto:jfc100@georgetown.edu Joe Carrano], Georgetown University&lt;br /&gt;
# Beau Smith&lt;br /&gt;
# [[User:JefferyGerhard|Jeff Gerhard]], Georgetown Law Library&lt;br /&gt;
# [mailto:lwrubel@gwu.edu Laura Wrubel], George Washington University&lt;br /&gt;
# [[User:dkerchner|Dan Kerchner]], George Washington University&lt;br /&gt;
# [mailto:justinlittman@gwu.edu Justin Littman], George Washington University&lt;br /&gt;
# Jonathan Rochkind, CHF&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=41813</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=41813"/>
				<updated>2014-10-09T00:30:40Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36622</id>
		<title>2013 social activities</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36622"/>
				<updated>2013-02-12T20:10:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Newcomer Dinner, Tuesday 2/12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Aviary: super-crazy cocktails. http://www.molecularrecipes.com/molecular-mixology/aviary-cocktails/ . List your name if you're interested, whether Sunday, Monday, and/or Tuesday (after newcomer dinners) work, and whether you're just interested in stopping by, or doing a 7 cocktail tasting flight.*&lt;br /&gt;
** statsfool: sunday/monday/tuesday, either drinks or flight.&lt;br /&gt;
** Amyhannah: monday/tuesday, drinks, probably not the flight.&lt;br /&gt;
** anarchivist: sunday/monday, prefer drinks over flight but could be convinced&lt;br /&gt;
** [[User:highermath|highermath]]: monday (could use 10 cocktails after Drupal subCon, I am sure). Uber now works in Chicago, so I would do the flight.&lt;br /&gt;
** [[User:pberry|pberry]]: any night but Wednesday (that's  Goose Island night) and I'd be up for drinks or flight, although leaning away from flight.&lt;br /&gt;
** [[User:thatandromeda|thatandromeda]] oh my gosh yes, any time, probably not the flight.&lt;br /&gt;
** [[User:Gdave|gdave]] beautiful site, I would be interested, Sun,Mon,Tues.  either drink or flight.&lt;br /&gt;
** [[User:shawnc12|shawnc12]]: sunday/monday, either drink or flight&lt;br /&gt;
** wdenton: any night, either drink or flight&lt;br /&gt;
** beatricep: sunday/monday drink, highly susceptible to flight by peer pressure..&lt;br /&gt;
** ryan hess: sunday/monday drink or flight&lt;br /&gt;
** infosoph: sunday/monday yes/yes!!&lt;br /&gt;
** [[User:Pfeeley|Pfeeley]]: sunday/monday/tuesday, either drink or flight&lt;br /&gt;
** [[User:Ksprague|Ksprague]]: tuesday, drink or flight&lt;br /&gt;
** [[User:schwartzray|schwartzray]]: anything on any day&lt;br /&gt;
* Brewery tour - some possible candidates would be Goose Island, Brew Bus http://www.chicagobrewbus.com/, Piece, Revolution, Half Acre.&lt;br /&gt;
* Library field trips - because we're library geeks. Possible places include Newberry and Read/Write.--Read/Write Library confirmed for February 11.--Newberry Library confirmed for February 14.&lt;br /&gt;
* Art Institute of Chicago - Only open until 5pm, but possible for people coming in early enough on Sunday. There seems to be enough interest here to actually have a group, when and where should we meet? I added my email so that we could discuss details off the wiki.&lt;br /&gt;
** escowles: I'm getting in around noon on Sunday, and interested in this.&lt;br /&gt;
** pgrayove at gmail dot com: I'm getting in around noon on Sunday too.  I'm interested.&lt;br /&gt;
** ranti: And I am. &lt;br /&gt;
** tshearerlib: Coming in at around the same time and hope to get to the museum by 1:00.  Lunch first?&lt;br /&gt;
* Local Option http://localoptionbier.com/ - So you've heard of Hopleaf, you've heard of Maproom. Come to Chicago's *ahem* best kept secret for good food and an evening session on Monday. We will need a tally to make requisite arrangements. Target for arrival at bar: 7ish. Probably a group gathering to head north around 6:30 in hotel lobby (if you want to take the #8 Halsted bus that is).&lt;br /&gt;
** kayiwa&lt;br /&gt;
** Linda Ballinger&lt;br /&gt;
** Courtney Greene&lt;br /&gt;
** John Pillans&lt;br /&gt;
** +6 from NCSU incl one Bret Davidson&lt;br /&gt;
** Megan Kudzia&lt;br /&gt;
** Andrew Darby&lt;br /&gt;
** erinrwhite&lt;br /&gt;
** Will Clarke&lt;br /&gt;
** Cody Hanson&lt;br /&gt;
** Jesse Brown&lt;br /&gt;
** Matt Cordial +1 (my friend and I were already planning a Monday trip here)&lt;br /&gt;
** Ray Schwartz&lt;br /&gt;
** Eric Larson&lt;br /&gt;
** David Cliff&lt;br /&gt;
** Ken Irwin&lt;br /&gt;
** Dileshni Jayasinghe&lt;br /&gt;
&lt;br /&gt;
== Planned Events ==&lt;br /&gt;
&lt;br /&gt;
===Read/Write Library Field Trip, Monday 2/11===&lt;br /&gt;
Field trip to the [http://readwritelibrary.org/ Read/Write Library] 6:30PM-9PM &lt;br /&gt;
&lt;br /&gt;
Drop in whenever during this time.&lt;br /&gt;
&lt;br /&gt;
Come help catalog the Read/Write Library catalog and hack on the library catalog. We will get food or go to a nearby restaurant depending on interest. We will also invite friends from Code for America to hang out and talk civic data. Bring your laptop along if you have one.&lt;br /&gt;
&lt;br /&gt;
Let us know if you are coming so we can figure out food:&lt;br /&gt;
* Margaret Heller&lt;br /&gt;
* Ranti Junus&lt;br /&gt;
* Wayne Schneider&lt;br /&gt;
* jrochkind will try to make it&lt;br /&gt;
* emily shaw (may be a little late)&lt;br /&gt;
* &amp;lt;strike&amp;gt;kenirwin - bailed on acct of pre-conf brain death&amp;lt;/strike&amp;gt;&lt;br /&gt;
* Andromeda - yes, unless someone gets Aviary reservations&lt;br /&gt;
* Chris Clement - may attend&lt;br /&gt;
(hey, there are great bars in that neighborhood!)&lt;br /&gt;
* wdenton&lt;br /&gt;
&lt;br /&gt;
'''Directions to the library from UIC:'''&lt;br /&gt;
&lt;br /&gt;
''Bus''&lt;br /&gt;
&lt;br /&gt;
Take the #8 Halsted Bus north to Chicago (Bus will say &amp;quot;#8 Halsted/79th North to Broadway/Waveland&amp;quot;)&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
''Train + Bus (slightly faster/more reliable, but only by about 5-10 minutes)''&lt;br /&gt;
&lt;br /&gt;
Walk to the UIC/Halsted Blue Line &lt;br /&gt;
Take the O'Hare train (toward the Loop) and go all the way through the Loop and back west. Get off at Chicago and use the exit that says &amp;quot;North side of Chicago Ave&amp;quot; (or something similar — I don't remember exactly).&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
=== Newcomer Dinner, Tuesday 2/12 ===&lt;br /&gt;
&lt;br /&gt;
First time at code4lib? Join fellow c4l newbies and veterans for an evening of food, socializing, and stimulating &amp;lt;strike&amp;gt;discussions about&amp;lt;/strike&amp;gt; demonstrations of the many uses of &amp;lt;strike&amp;gt;bacon&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;dongles&amp;lt;/strike&amp;gt; XML.&lt;br /&gt;
&lt;br /&gt;
Code4Lib veterans, you're invited too. Join us in welcoming the newcomers!&lt;br /&gt;
&lt;br /&gt;
'''Plans'''&lt;br /&gt;
* When: Tuesday evening (2/12)&lt;br /&gt;
* Time: 6 PM (ish) or whenever you can get your group together&lt;br /&gt;
* Mastermind (if you have any questions): [mailto:yoosebec@grinnell.edu Becky Yoose]&lt;br /&gt;
&lt;br /&gt;
''Guidelines:''&lt;br /&gt;
*Max of '''6''' per group&lt;br /&gt;
**Please, no waitlisting&lt;br /&gt;
*ID yourselves so we can get a good mix of new people and veterans in each group&lt;br /&gt;
**New folks - n&lt;br /&gt;
**c4l vets - v&lt;br /&gt;
*One leader needed for each location (declare yourself! - '''Vets are highly encouraged to lead the group''')&lt;br /&gt;
**Leader duties&lt;br /&gt;
***Make reservations if required; otherwise make sure that the restaurant can handle a group of 6 rowdy library tech type folks&lt;br /&gt;
***Herd folks from hotel to restaurant (know where you're going!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants within .25 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.athenarestaurantchicago.com/index.php Athena] (Greek)&lt;br /&gt;
&lt;br /&gt;
* Al Cornish - v (leader)&lt;br /&gt;
* Carolyn Cole - n&lt;br /&gt;
* Dileshni Jayasinghe - v&lt;br /&gt;
* Will Clark - n&lt;br /&gt;
* Adam Constabaris - v&lt;br /&gt;
* Patrick Hogan - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.dinerestaurant.com/ Dine] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;[http://www.girlandthegoat.com/ Girl and the Goat] (American) Top Chef fans take note! This is Stephanie Izard's award-winning resto.&amp;lt;/del&amp;gt; Totally booked.&lt;br /&gt;
&lt;br /&gt;
[http://littlegoatchicago.com/ Little Goat]&lt;br /&gt;
&lt;br /&gt;
Izard just opened a diner across the street from G&amp;amp;G that is walk-in only. (very good, probably a wait but they also have a bar in the back --wickr)&lt;br /&gt;
&lt;br /&gt;
We'll meet in the lobby of the hotel at 6:30 and walk over. No reservations.&lt;br /&gt;
&lt;br /&gt;
* Mark Matienzo (leader) - v&lt;br /&gt;
* Andromeda Yelton - n&lt;br /&gt;
* Hillel Arnold (intern) - veteran newbie&lt;br /&gt;
* Kelly Lucas - n&lt;br /&gt;
* Chris Clement - n&lt;br /&gt;
* Erin Fahey -n&lt;br /&gt;
* Beatrice Pulliam - n &lt;br /&gt;
* '''CAPPED AT 7'''&lt;br /&gt;
&lt;br /&gt;
[http://www.haymarketbrewing.com/ Haymarket Pub &amp;amp; Brewery] (Pub food) - Reservations at 6:30pm. Meet in conference hotel lobby at 6:10pm&lt;br /&gt;
&lt;br /&gt;
* Ryan Wick (leader) - v&lt;br /&gt;
* Sean Purcell - v&lt;br /&gt;
* Dan Fehrenbach - n&lt;br /&gt;
* Pierre Nault - n&lt;br /&gt;
* Minh-Quang Nguyen - n&lt;br /&gt;
* Matt Bernhardt - n&lt;br /&gt;
* David Gonzalez - n&lt;br /&gt;
* '''Capped at 7'''&lt;br /&gt;
&lt;br /&gt;
[http://www.karynsongreen.com/ Karyn’s on Green] (Vegan)&lt;br /&gt;
Completely vegan and close to the conference hotel. We'll meet in the conference hotel at around 6:45 (reservation at 7:00 for 6). Google maps says it is a 5 minute walk.&lt;br /&gt;
&lt;br /&gt;
*Jason Ronallo (leader)- v&lt;br /&gt;
*Alicia Cozine - n&lt;br /&gt;
*Mark Mounts - v&lt;br /&gt;
*Amy Deschenes - n&lt;br /&gt;
*Adam Strohm - n&lt;br /&gt;
*Jacob Reed - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://niarestaurant.com/nia-restaurant-mediterranean-cuisine/ Nia] (Mediterranean tapas)&lt;br /&gt;
&lt;br /&gt;
[http://www.pegasuschicago.com/index.php Pegasus] (Greek) - reservation at 6:30 for 6. We'll meet in the hotel lobby at 6:15 and walk down.&lt;br /&gt;
*Erin White (leader) - v&lt;br /&gt;
* Don Mennerich -n&lt;br /&gt;
* John MacGillivray &lt;br /&gt;
* Santi Thompson - n&lt;br /&gt;
* Jan Waterhouse - n&lt;br /&gt;
* Nell Taylor - v&lt;br /&gt;
*'''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.roditys.com/index.html Roditys] (Greek) -- Reservations made for 6:30pm.  Let's meet in the hotel lobby at 6pm and walk over from there.  Its ok if you're a bit late to the lobby, we'll wait.  If you have any questions email Rosalyn (Rosy) rosalynmetz at gmail dot com&lt;br /&gt;
&lt;br /&gt;
* Rosalyn Metz (leader) - v&lt;br /&gt;
* [[User:highermath|Cary Gordon]] - v&lt;br /&gt;
* [[User:Jacobandresen|Jacob Andresen]] - n&lt;br /&gt;
* Karen Miller - n&lt;br /&gt;
* Dre - v&lt;br /&gt;
* Mahria Lebow - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .25 miles and .5 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
Code4lib Chicago Celery Salt Society - [http://www.alsbeef.com/ Al's Beef]&lt;br /&gt;
&lt;br /&gt;
* Jason Casden (leader) - v - No reservations. We can walk from the hotel at 7.&lt;br /&gt;
* Charlie Morris - n&lt;br /&gt;
* Cory Lown - v&lt;br /&gt;
* Carolina Garcia - n&lt;br /&gt;
* Cody Hanson - n&lt;br /&gt;
* Ken Varnum - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://avecrestaurant.com/# Avec] (Small plate)&lt;br /&gt;
Family-style small plate and tapas.  Great Yelp reviews.  We'll meet in the conference hotel at 6:00 &amp;lt;strike&amp;gt;6:45&amp;lt;/strike&amp;gt; (they don't take reservations, but have stuff to sip on if there's a wait).  Less than 10 minute walk from hotel.&lt;br /&gt;
&lt;br /&gt;
* Shaun Ellis (leader) - v&lt;br /&gt;
* Jon Stroop - v&lt;br /&gt;
* Paula Gray-Overtoom - n&lt;br /&gt;
* Emily Zervas - n&lt;br /&gt;
* Cynthia Ng - neither&lt;br /&gt;
* Sarah Dooley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.babavillage.com/ Baba’s Village] (Indian/Pakistani)&lt;br /&gt;
&lt;br /&gt;
[http://blackbirdrestaurant.com/ Blackbird] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
(Since the reservation is late, does anyone want to meet for drink in the hotel bar beforehand? There's really no place to wait at the restaurant, and there's no nice bar nearby that I can recall. cm)&lt;br /&gt;
* Justin Coyne (reserver) - v - Reservation for Blackbird for 6 at 8:30pm  (justin at curationexperts.com)&lt;br /&gt;
* Matt Cordial - v&lt;br /&gt;
* [http://wiki.code4lib.org/index.php/User:Camcclure Christine McClure - n]&lt;br /&gt;
* Devin Higgins - n (devinhiggins at gmail)&lt;br /&gt;
* Ken Irwin&lt;br /&gt;
* Tad Merchant - n (tadoneus @ gmail)&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.carnivalechicago.com/menu Carnivale] (Nuevo Latino)&lt;br /&gt;
* Nettie Lagace (OpenTable says they can seat 6 at 8 pm or 6 pm - I'll reserve the 8 pm and will call directly this pm) - n/v&lt;br /&gt;
* Rebecca Jones - n/v&lt;br /&gt;
* Ben Burbridge  - n&lt;br /&gt;
* Andrea Schurr - n/v&lt;br /&gt;
* &lt;br /&gt;
* James Staub - n &amp;gt; v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://decero.hellotacos.com/ De Cero] (Mexican)&lt;br /&gt;
&lt;br /&gt;
[http://www.dragonflymandarin.com/  Dragonfly] (Chinese, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://giordanos.com/ Giordano's] (Chicago Style Pizza) This place should be able to handle multiple groups...&lt;br /&gt;
&lt;br /&gt;
* Andrew Nagy (leader) - v&lt;br /&gt;
* Virginia Schilling - n&lt;br /&gt;
* Jane Sandberg - n&lt;br /&gt;
* Richard Aroksaar - n&lt;br /&gt;
* Jesse Brown - n (jfbrown78 at gmail dot com)&lt;br /&gt;
* Bob Haschart -v&lt;br /&gt;
* Alicia Morris&lt;br /&gt;
* Ayla Stein - n&lt;br /&gt;
* Sharona Ginsberg - n&lt;br /&gt;
* Andrew Myers - n&lt;br /&gt;
* Jim LeFager - n&lt;br /&gt;
* Stephen Eisenhauer - n&lt;br /&gt;
* hnayak -n&lt;br /&gt;
* Xiaoming Wang -n&lt;br /&gt;
* Greg Murry -n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.grangehallburgerbar.com/ Grange Hall Burger Bar] (Local food)&lt;br /&gt;
&lt;br /&gt;
[http://www.idreamoffalafel.com/  I Dream of Falafel] (Mediterranean) -- No reservations -- this is a casual place. Supposed to be an 8 minute walk from the hotel. Let's meet at 6:20pm in the Crowne Plaza lobby. I have chin-length brown hair and probably will be holding a paper scribbled with 'falafel.'&lt;br /&gt;
&lt;br /&gt;
* Emily Lynema (leader) - v&lt;br /&gt;
* Christie Peterson - n&lt;br /&gt;
* James Stuart - v&lt;br /&gt;
* Emily Shaw - n (emilyfshaw at gmail dot com)&lt;br /&gt;
* Ian Chan - n (ichan@csusm.edu)&lt;br /&gt;
* Zeno Tajoli - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.jaipurchicago.com/ Jaipur] (Indian; Reservation made for 6 at 6:30)&lt;br /&gt;
-- Let's meet in the crowne plaza lobby @ 6:15; it's supposed to be a 6 minute walk&lt;br /&gt;
&lt;br /&gt;
* Andrew Darby (leader) - v&lt;br /&gt;
* Josh Wilson (joshwilsonnc at gmail) - n&lt;br /&gt;
* Tim Thompson - n&lt;br /&gt;
* Mariela Hristova - n&lt;br /&gt;
* ryan hess - n&lt;br /&gt;
* Patrick Feeley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://lasardine.com/ La Sardine] (French)&lt;br /&gt;
&lt;br /&gt;
[http://www.mythaitakumi.com/index.html MyThai Takumi] (Japanese Thai) Reservation at 6:15. Meet in the hotel lobby at 6 pm. Look for the women in a trench coat and hat.&lt;br /&gt;
&lt;br /&gt;
*Becky Yoose (leader) b dot yoose at gmail - v&lt;br /&gt;
*May Chan - n&lt;br /&gt;
*David Anderson - newby&lt;br /&gt;
*Terry Brady - new&lt;br /&gt;
* Dave Menninger - n&lt;br /&gt;
*Shawn Carraway -n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nellcoterestaurant.com/ Nellcôte] (French)&lt;br /&gt;
&lt;br /&gt;
[http://chicago.provincerestaurant.com/ Province] (American with Central/South American/Spanish influence)&lt;br /&gt;
&lt;br /&gt;
[http://thepublicanrestaurant.com/ The Publican] (Seafood)&lt;br /&gt;
&lt;br /&gt;
* Jay Luker (eater) - v - Rezzie is for 8pm&lt;br /&gt;
* &amp;lt;del&amp;gt;Mark Matienzo (tweeter) - v&amp;lt;/del&amp;gt; started a new newcomer dinner!&lt;br /&gt;
* Devon Smith (pickle eater) - repeat offender&lt;br /&gt;
* Chris Sharp (dead horse beater) - v&lt;br /&gt;
* Michael B. Klein (greeter) - v&lt;br /&gt;
* Bill McMillin (meeter) - n&lt;br /&gt;
* Tom Johnson&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://saigonsisters.tumblr.com/ Saigon Sisters] (Vietnamese) Reservation for 6:15, meet in hotel lobby&lt;br /&gt;
* Margaret Heller - v and leader&lt;br /&gt;
* Sharon Clapp - n&lt;br /&gt;
* Sean Crowe - n&lt;br /&gt;
* Meghan Finch - n&lt;br /&gt;
* Maccabee Levine - v&lt;br /&gt;
* James Griffin - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.thaiurbankitchen.com/ Thai Urban Kitchen] (Thai, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://www.trattoriaisabellachicago.com/rest.html Trattoria Isabella] (Italian)&lt;br /&gt;
&lt;br /&gt;
[http://www.vivo-chicago.com/homepage-2 Vivo] (Italian) &lt;br /&gt;
&lt;br /&gt;
[http://www.wishbonechicago.com/dining/westloop/ Wishbone] (Southern Reconstruction)&lt;br /&gt;
&lt;br /&gt;
* Rachel Shaevel (herder, self-proclaimed dictator, and reservation maker) - n  (we're on for 6:15!)&lt;br /&gt;
* Myrna E Morales (follower) - n&lt;br /&gt;
* Sarah Thorngate - n&lt;br /&gt;
* Steven Marsden - n&lt;br /&gt;
* David Lacy - v&lt;br /&gt;
* Luke Gaudreau - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .5 miles and .75 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://currentsontheriver.com/ Currents on the River] (Eclectic)&lt;br /&gt;
&lt;br /&gt;
[http://n9ne.com/ N9NE Steakhouse] (Steak)&lt;br /&gt;
&lt;br /&gt;
[http://www.verachicago.com/menu Vera Chicago] (Spanish)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .75 miles and 1 mile of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.theberghoff.com/default.aspx The Berghoff] (German)&lt;br /&gt;
* Declan Fleming - v (leader)  I checked reservations, and for 6 people, the first time open after the conf is 7:30, so I grabbed that.&lt;br /&gt;
** Let's meet in the lobby at 7p and cab over (or would people rather walk?)&lt;br /&gt;
* Dave Green - n &lt;br /&gt;
* Steven Villereal - n&lt;br /&gt;
* Peter Murray - v&lt;br /&gt;
* Trey Terrell - n&lt;br /&gt;
* Mike Giarlo - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.yelp.com/biz/frontera-grill-chicago Frontera] (a Rick Bayliss Mex-American restaurant) Reservations are for 7:30, so perhaps the group could get a drink in the lobby beforehand.  Either way, we'll depart at 7pm.&lt;br /&gt;
: (''note: the drinks at the bar at frontera are very tasty.'')&lt;br /&gt;
*Dan Suchy (leader and over-eater) - v&lt;br /&gt;
*Matt Critchlow - v&lt;br /&gt;
*Carmen Mitchell - v&lt;br /&gt;
*Maureen Callahan - n&lt;br /&gt;
*David Cliff - n&lt;br /&gt;
* Patrick Berry - 3rd year red-shirt freshman&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nativefoods.com/ Native Foods] (Vegan) lots of vegan, vegetarian, gluten free options. No reservations needed. We could meet near the convention center or Daley library around 6 and take the train together. Lots of places to get drinks afterwards. &lt;br /&gt;
&lt;br /&gt;
I will wait at 5:30 at outside the UIC forum for anyone who wants to meet here. We'll pick up everyone else at Daley library at 6, then walk to the train station together. &lt;br /&gt;
&lt;br /&gt;
*Annie Pho(potential leader) - n &lt;br /&gt;
*Lauren Magnuson - n&lt;br /&gt;
*Bennett Magnino - n (meeting outside the Daley library sounds good)&lt;br /&gt;
*Kelly Thompson - n&lt;br /&gt;
*Audrey Altman - n&lt;br /&gt;
*Mackenzie Brooks - n&lt;br /&gt;
*Steven Bassett - n (Can't wait! Native Foods is awesome!).&lt;br /&gt;
* '''Capped at 7''' Unless you can handle more folks!&lt;br /&gt;
&lt;br /&gt;
'''Restaurants more than 1 mile from the hotel'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.greenzebrachicago.com/index.html Green Zebra] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://honkytonkbbqchicago.com/ Honky Tonk Barbeque] (BBQ) ---- I'm interested in Game Night this evening, so I'll make reservations for early dinner at lunch time (when there's some hope of the HT answering the phone).  Please let me know if 6:30 is not OK.  Lets leave from the UIC Library (front door) at 6:10.  It's a moderate walk (a bit less than a mile) from campus; I also have a car, and can drive a couple people if you want.&lt;br /&gt;
*Allan Berry (leader) - n&lt;br /&gt;
*Jason Raitz - n&lt;br /&gt;
*Brian Wu - n (pwu14 at illinois dot edu)(EDIT: Plans sound good. I am also interested in game night. If somehow we don't make it, I have a 4 player game in my hotel room.)&lt;br /&gt;
*Gary Maixner - n&lt;br /&gt;
*Keith Nickum -v&lt;br /&gt;
*&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.karynraw.com/cooked Karyn’s Cooked] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://www.latabernatapas.com/ La Taberna Tapas] (Mediterranean)&lt;br /&gt;
&lt;br /&gt;
[http://www.morganschicago.com/ Morgan's on Maxwell] (Pub food)&lt;br /&gt;
&lt;br /&gt;
[http://www.chezjoelbistro.com/ Chez Joël] (French/Tangiers food) I am leaning towards an early dinner of 6:15 as I have to take-off to make sure the Game Night takes off without a hitch. So leave the conference hotel by 5:45 if it is walk weather or 6PM if it is taxi weather.&lt;br /&gt;
&lt;br /&gt;
* Francis Kayiwa (knackered leader) - v&lt;br /&gt;
* Megan O'Neill Kudzia - n&lt;br /&gt;
* Esther Verreau - n&lt;br /&gt;
* Michael Neidhardt - n&lt;br /&gt;
* Rikke Willer - n&lt;br /&gt;
* Esme Cowles - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
=== Veg*n Dinner ===&lt;br /&gt;
&lt;br /&gt;
Let's have dinner at a veg*n-friendly place one night of the conference. Folks of all eating styles welcome.&lt;br /&gt;
&lt;br /&gt;
Max *6* people per party this year.&lt;br /&gt;
&lt;br /&gt;
'''Party #1: Chicago Diner''', Wednesday Night http://www.veggiediner.com/ &amp;quot;meat free since '83&amp;quot; &lt;br /&gt;
Will they easily be able to accommodate 6 folks walking in?&lt;br /&gt;
We'll plan on meeting in the conference hotel at 6pm and taking the 8 bus up there (3411 N. Halsted St  Chicago, IL 60657). &lt;br /&gt;
# Jason Ronallo (jronallo@gmail.com)&lt;br /&gt;
# Linda Ballinger (linda dot ballinger at gmail)&lt;br /&gt;
# May Chan (msuicat at gmail dot com)&lt;br /&gt;
# Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
# David Uspal (david dot uspal at villanova dot edu) In for the Country Fried StAEk and/or the Soul Bowl.  Ex-Vegetarian (which may make it a crime for me to go), so if the list is full and you still want in, feel free to email me and I'll gladly turn over my spot to an actual Veg*n.&lt;br /&gt;
# Cynthia Ng (cynthia dot s dot ng at gmail)&lt;br /&gt;
Capped at 6&lt;br /&gt;
&lt;br /&gt;
=== Code4lib/Goose Island Brewing Pull Request ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 8:00 PM to 11:00 PM&lt;br /&gt;
&lt;br /&gt;
More information and sign up at [https://code4lib2013-estw.eventbrite.com/|https://code4lib2013-estw.eventbrite.com/]&lt;br /&gt;
&lt;br /&gt;
=== Bourbon and barbecue ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 7:00 PM&lt;br /&gt;
&lt;br /&gt;
Friend of mine tells me his cousin manages a Chicago restaurant, Chicago q, and I should go there and tell him my friend sent me.  [http://www.chicagoqrestaurant.com/menus/dinner.php Menu] keeps talking about artisanal barbecue and extensive bourbon options.  DONE.&lt;br /&gt;
&lt;br /&gt;
Reservation is at 7 for a party of 8.  Add yourselves.  &lt;br /&gt;
&lt;br /&gt;
We can take the number 20 bus to the Red Line. We should plan to meet in the lobby at 6:10; that way we can work with the bus tracker and make a leisurely trip over. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Andromeda Yelton&lt;br /&gt;
* Chris Day [cday2 at saic.edu]&lt;br /&gt;
* Abigail Goben &lt;br /&gt;
* Rosalyn Metz [rosalynmetz at gmail dot com]&lt;br /&gt;
* Dileshni Jayasinghe [d dot jayasinghe at utoronto dot ca]&lt;br /&gt;
* Ray Mathew&lt;br /&gt;
* Dre (Barbecue, yes. Bourbon... well, we'll see.) akorphan at ncsu.edu&lt;br /&gt;
* Sean Chen schen at law.duke.edu&lt;br /&gt;
&lt;br /&gt;
=== Non-beery get together ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, Meet at hotel lobby at around 6:30 (and take public transport over to the park) OR meet us at the rink at 6:45, skating rink closes at 8 PM&lt;br /&gt;
&lt;br /&gt;
'''Where:''' [https://www.cityofchicago.org/city/en/depts/dca/supp_info/ice_skating_at_themccormicktribuneicerink.html McCormick Tribune Ice Rink]&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' @dchud, @ranti, @yo_bj (b dot yoose at gmail), @wendyrlibrarian&lt;br /&gt;
&lt;br /&gt;
'''Cost:''' $10 skate rental, people watching free&lt;br /&gt;
&lt;br /&gt;
Come and (attempt to) skate with us! This is also a good people watching opportunity, so if you don't want to skate, there will be places to hang out around the rink and the park. There is a [http://www.parkgrillchicago.com/cafe/food-menu cafe] near the rink as well, with hot drinks and food.&lt;br /&gt;
&lt;br /&gt;
FYI - For those of you who want something else to munch on while hanging out, there's a [http://www.garrettpopcorn.com/chicago-locations/4-east-madison-street/ Garrett Popcorn Shop] a couple blocks away.&lt;br /&gt;
&lt;br /&gt;
# Chris Sharp (indicating interest)&lt;br /&gt;
# Becky Yoose (ready to fall on her butt repeatedly for the entertainment of others)&lt;br /&gt;
# Peter Murray&lt;br /&gt;
# Shawn Carraway&lt;br /&gt;
# Karen Coombs&lt;br /&gt;
# Michael Levy&lt;br /&gt;
# Christie Peterson&lt;br /&gt;
# Andrew Pasterfield&lt;br /&gt;
# Virginia Schilling&lt;br /&gt;
# Al Cornish&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Kalee Sprague&lt;br /&gt;
# Luis Baquera (ready to distract everyone with his own fantastic wipeouts while Becky composes herself)&lt;br /&gt;
# Maccabee Levine&lt;br /&gt;
# Sarah Shealy (I'm pretty sure I'll fall spectacularly as well :) )&lt;br /&gt;
# Emily Lynema (interested!)&lt;br /&gt;
&lt;br /&gt;
=== Flying Trapeze ===&lt;br /&gt;
'''When:''' Monday, 2/11, TBD&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' rosalynmetz at gmail dot com&lt;br /&gt;
&lt;br /&gt;
'''Class is full.'''&lt;br /&gt;
&lt;br /&gt;
No this is not a joke. If you haven't heard Rosy is an aspiring trapeze artists and wants to bring the fun to her friends in Code4Lib.  There is a trapeze rig in Chicago and she plans on visiting it and hopes that some of you can come along as well.  If its your first time taking a trapeze class, they'll start you off learning [http://www.youtube.com/watch?v=_oqPi_zuX7A a knee hang] and depending on how that goes you might be able to catch it at the end of class.  If you have any questions about whether or not this is for you, [http://chicago.trapezeschool.com/classes/trapeze.php TSNY Chicago's website] should have the answer, if not feel free to contact Rosy.&lt;br /&gt;
&lt;br /&gt;
Trapeze classes are $57, last 2 hours, and are limited to 10 people.  Currently TSNY Chicago hasn't release their class schedule for February -- they should be doing that around Jan. 1.  If we can get enough people interested before then, we can buy out a whole class.  If not it'll be first come, first serve (along with the general public).&lt;br /&gt;
&lt;br /&gt;
If you're interested in signing up, feel free to add your name and contact info to the list below.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Jay Luker (first!)&lt;br /&gt;
# Bill McMillin&lt;br /&gt;
# Bess Sadler&lt;br /&gt;
# Karen Coyle&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Rosalyn Metz (because I'm organizing)&lt;br /&gt;
# Alicia Cozine&lt;br /&gt;
# Gabriel Farrell&lt;br /&gt;
&lt;br /&gt;
=== Game Night! ===&lt;br /&gt;
&lt;br /&gt;
See the http://wiki.code4lib.org/index.php/2013_game_night page for the latest details and to sign up for individual games or add games you're willing to lead/teach!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moved this from idea to an actual event.  Still getting some details, but here's what we know:&lt;br /&gt;
&lt;br /&gt;
Game Night!  Type of games might vary due to interest and what people bring. Looks like interest right now is mostly on light to mediumish games with a dash of abstracts ;). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rough Schedule:&lt;br /&gt;
* 7:30  setup&lt;br /&gt;
* 7:45  start playing games!&lt;br /&gt;
* 10:00 start winding down (don't start new games)&lt;br /&gt;
* 10:30 all done, turn off the lights&lt;br /&gt;
&lt;br /&gt;
* I highly recommend that people walk in groups to get back to their respective lodgings. I'll ask folks still around at the end to help me clean up so we can walk back to the conference hotel*&lt;br /&gt;
&lt;br /&gt;
Please bring your badge with.  (You don't need to wear it on the way, but that'll help us make sure everyone in the room is supposed to be there.)&lt;br /&gt;
&lt;br /&gt;
We have a conference room at the UIC library (Richard J. Daley Library MC 234, 801 S. Morgan, Chicago) reserved for 7:30 on Tuesday the 11th. I'll try to show up at the lobby and hang out there for at about 7:15.  I'll be the guy with a code4lib nametag and a box of games ;). Not sure how late we'll play, it looks like the library is open till 1:00am, but I suspect I will for now put a rough ending time of 11pm.  &lt;br /&gt;
&lt;br /&gt;
(Note, there's also some discussion on Cards Against Humanity.  I will try to make sure there's an alternative game, but I don't know if I want to prohibit any games. I would say though to remember to be respectful and courteous to those around you. I will probably be pondering this issue for a while)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The original list of people who signed up is below.&lt;br /&gt;
&lt;br /&gt;
I (Jon Gorman) will bring some board games and pick up some cards. Add your name to the list below if you're interested in attending. Also not if you can bring games. Bringing games is NOT REQUIRED. If you can bring a game you can teach, that's great and will make sure we're not just stuck playing the games I bring.&lt;br /&gt;
&lt;br /&gt;
(I've added some comments to the game lists below)&lt;br /&gt;
* jtgorman, aka Jon Gorman: I'll bring Time's Up: Total Recall, Tsuro, Hey, That's My Fish, Hive, and some more I haven't decided on yet.  (My profile over at http://www.boardgamegeek.com/ is jtgorman as well if you want to browse my games and make requests)&lt;br /&gt;
* yo_bj: I have some games I can bring as well (Kill Doctor Lucky, Fluxx, Godzilla: Stomp, Munchkin Zombies, etc.). Monday doesn't have anything major planned... &lt;br /&gt;
*danwho:  I 'll bring the Cards Against Humanity set.&lt;br /&gt;
*escowles (Mon/Tue preferred): I've got lots of games I could bring like Settlers of Catan, Carcassonne, Ticket to Ride, Age of Renaissance, Elfenland, Agricola, Le Havre, Smallworld, RoboRally, etc. etc. &lt;br /&gt;
** Take your pick! All good games.  I'll try to finalize my list of games before Friday - JonG &lt;br /&gt;
*jen_young: I'm local and I have quite a few games. Just about every version of Fluxx, Bananagrams, Gloom, Munchkin Cthulu,Cards Against Humanity, Apples to Apples, Risk, Last Night on Earth, etc.) &lt;br /&gt;
**All good games! If you don't mind bringing a box that would be awesome.  I particularly like Apples to Apples, Last Night on Earth and Gloom  - JonG&lt;br /&gt;
* decasm: Interested in Go (aka igo, weiqi, baduk) anytime, not just game night. I can do Catan as well. (And as much as I love it, Cards Against Humanity is probably a violation of the new Code of Conduct.) &lt;br /&gt;
** I look forward to losing my first game of Go to you ;) - JonG&lt;br /&gt;
** I'd love to learn Go. &amp;lt;del&amp;gt;Perhaps after the newcomer dinner?&amp;lt;/del&amp;gt; Oof... won't make for Tues. But would still be interested to learn.  --ranti.&lt;br /&gt;
* csharp: I'm interested in playing games - whatever people bring.  I almost always travel with a pack or two of playing cards ;-).  Monday or Tuesday nights are fine.&lt;br /&gt;
* moneill: I would love to join in! I have a version of Catchphrase floating around somewhere, and I think I have Battleship...I need to go weed around in that drawer and see what else presents itself. Tuesday would be my preferred night, but I will make it work! &lt;br /&gt;
** Don't worry too much about bringing a game if transportation is a problem. One thing I've done w/ stuff like catchphrase is not take the box but to put pieces and cards in a bag - JOn G&lt;br /&gt;
* demiankatz: I'm always up for a game.  I'm hoping to travel light so probably shouldn't bring anything, but if there's a local game shop, I might be persuaded to pick up something new as a souvenir. &lt;br /&gt;
** Don't worry, I think there will be plenty of games - JonG&lt;br /&gt;
* sekjal: I've got [http://boardgamegeek.com/boardgame/36218/dominion Dominion], [http://boardgamegeek.com/boardgame/68448/7-wonders 7 Wonders], [http://boardgamegeek.com/boardgame/30933/bang-the-bullet Bang!], [http://boardgamegeek.com/boardgame/18333/ecofluxx EcoFluxx] and [http://boardgamegeek.com/boardgame/116/guillotine Guillotine] that I can bring.  ++ on Cards against Humanity!  Prefer non-conflict with beer night. &lt;br /&gt;
** Also all good games. I have 7 Wonders, but can bring some other games if you bring that. - Jon G&lt;br /&gt;
* arty: so totally interested. Unfortunately, I have no games to contribute.&lt;br /&gt;
** No prob.&lt;br /&gt;
* sanderson: I would be interested. I can bring [http://boardgamegeek.com/boardgame/478/citadels Citadels] (2-7 players)&lt;br /&gt;
** Citadels would be awesome and means I don't have to bring it ;) - JonG&lt;br /&gt;
* dvdndrsn: Definitely in! Can bring Innovation, Tichu, Dominion, but Cards Against Humanity sounds good. &lt;br /&gt;
** I'll put in a vote for Tichu, heard good things about it - Jon G &lt;br /&gt;
* smkiewel: I'm likely to join. Can bring Arkham Horror and Munchkin.&lt;br /&gt;
** Arkham Horror seems rather bulky to travel with, but if you want to play bring it ;) - Jon G&lt;br /&gt;
** mbutler: If someone actually brings Arkham Horror I'd throw down. Otherwise, whateve. &lt;br /&gt;
* jkwilson: I'd like to attend Monday or Tuesday. I have a bunch of games but I'd prefer not to travel with them, and anyway it sounds like they're covered above. I'll bring the 5-6 player Catan extension.&lt;br /&gt;
* ejlynema: Interested, but will probably attend Newcomer dinner on Tuesday. Like Dominion and 7 Wonders, but probably don't have room to bring in suitcase. Anyone bringing Tsuro? &lt;br /&gt;
** I can bring Tsuro  - Jon G&lt;br /&gt;
* Christie Peterson (save4use): Also interested, but also probably attending newcomer dinner on Tuesday. Can bring [http://boardgamegeek.com/boardgame/11/bohnanza Bohnanza] and one deck of [http://en.wikipedia.org/wiki/Set_%28game%29 Set].  &lt;br /&gt;
**Bohnanza and Set would be awesome - JonG&lt;br /&gt;
**Done! I will bring them both -- C&lt;br /&gt;
* dgcliff: I'd be interested. Can bring Ticket to Ride.&lt;br /&gt;
* mbklein: definitely interested. Will check on my (currently unpacked) games. I am dying to play Cards Against Humanity. If we can't find a way to reconcile it with the Code of Conduct, we need a different Code of Conduct.&lt;br /&gt;
** Considering that this is a public event, and that no one knows everyone's sensitivity levels in the room, it might not be a good idea to break out a crass, adult version of apples to apples in the middle of the gaming room. :cP (yo_bj)&lt;br /&gt;
* duspal:  In.  My board game collection is small but mighty (Arkham Horror, Catan, Vampire: Prince of the City, Deadlands: Battle for Slaughter Gulch, Arabian Nights, Diplomacy, Shogun, and Cosmic Encounter off the top of my head, amongst a few others).  Let me know ahead of time if anyone is interested, since they're all relatively big... &lt;br /&gt;
** If you really want to play Cosmic Encounter, I can bring my copy (Fantasy Flight edition, 3 expansions), just let me know - JonG&lt;br /&gt;
*librarywebchic: I'm willing to bring a set and teach folks how to play Majhong. Need at least three to play though.&lt;br /&gt;
**beatricep:  Uno gets no respect. ;-)  @librarywebchic: I have always wanted to learn to play Majhong.  If you're still bringing it, I'm in!&lt;br /&gt;
** Agreed, I don't know Majhong and I love learning new games. - JonG&lt;br /&gt;
** I actually know a few different rule sets. It's too bad I don't have a travel set or I'd bring a 2nd one -Arty&lt;br /&gt;
** I'm local and can bring a mahjong set. I've had no one to play with for years, so have probably forgotten how. -Linda B&lt;br /&gt;
* jcraitz: I'm in after the newcomer dinner.  I'll bring Citadels and Bang! &lt;br /&gt;
**I think someone higher in the list offered to bring citadels, but won't hurt to have two copies just in case one of you don't show ;) - JonG&lt;br /&gt;
**Aww no. left my games at the office.  Looks like I'll have to jump in someone else's game.&lt;br /&gt;
* julia: I'll be the freeloader who showed up and didn't bring any games.&lt;br /&gt;
* kenirwin: interested in attending&lt;br /&gt;
* sdellis: attending&lt;br /&gt;
* ianc: interested in attending, a little rusty but definitely up for a couple rounds of Mahjong, also want to try something new too!&lt;br /&gt;
* haschart: Interested in attending, if I can make it work with the newcomer dinner.  Big fan of Dominion lately, but probably cannot bring it `cause the &amp;quot;Big Box&amp;quot; with the base game and two expansion sets is bigger than my suitcase.  I could bring &amp;quot;Race for the Galaxy&amp;quot; if there's any interest.&lt;br /&gt;
* jessebrown: Interested in attending. I can bring Set and Zombie Fluxx.&lt;br /&gt;
* terrywbrady: I would like to attend&lt;br /&gt;
* dan fehrenbach (dnfehren): I would like to attend, can bring Pandemic if anyone is interested.&lt;br /&gt;
* dileshni: interested in attending. &lt;br /&gt;
* Corey Harper: definitely interested in attending if space allows.&lt;br /&gt;
* saverkamp: interested in attending.&lt;br /&gt;
* Emily Shaw: I like games. &lt;br /&gt;
* Alan Dyck: I play Carcassonne and Munchkin among others. I see those listed so I'm bringing a game some friends and I have been creating: Wandering Monster.&lt;br /&gt;
* Heidi Frank (hf36@nyu.edu) - I love card games like gin/rummy, but am open to anything.&lt;br /&gt;
* Sibyl Schaefer - attending, and will bring anything that fits in my carry-on&lt;br /&gt;
* cpsarason - I'm up for whatever!&lt;br /&gt;
&lt;br /&gt;
-- *Please, please, please, if you're signing up on this list, also sign up for a paritcular game slot to start out the evening or put your game in: http://wiki.code4lib.org/index.php/2013_game_night&lt;br /&gt;
we're having so many people sign up after Jan. 14th we're in risk of overflowing the room.  (I should have put in a cap limit, but given how late I realized this, I haven't *&lt;br /&gt;
&lt;br /&gt;
I have to confess, I started trying to organize what games certain people were bringing, but it got confusing fast and I don't want anyone to feel compelled to bring anything or feel bad if they can't make it.  So if there is something you're dying to play, let me know and I'll try to bring it if I have it.&lt;br /&gt;
&lt;br /&gt;
== Social Map - Places of Interest==&lt;br /&gt;
&lt;br /&gt;
https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0&lt;br /&gt;
&lt;br /&gt;
== Layar: augmented reality Code4Lib view of Chicago ==&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;Code4Lib 2013&amp;quot; layer in [http://www.layar.com/ Layar], an augmented reality app that runs on both Android and iOS. You can use it to scan around the city to see two kinds of things: 1) tweets using the #c4l13 or #code4lib hashtag (if the tweets are geolocated so they can be&lt;br /&gt;
nailed to a point) and 2) points of interest from the [https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0 shared Google Map]. &lt;br /&gt;
&lt;br /&gt;
To use it:&lt;br /&gt;
&lt;br /&gt;
* install Layar on your phone&lt;br /&gt;
* run it and click to go into Geo Layers mode&lt;br /&gt;
* search for &amp;quot;code4lib 2013&amp;quot;&lt;br /&gt;
* launch the layer and look around&lt;br /&gt;
&lt;br /&gt;
See Code4Lib people and events overlaid on top of Chicago, in real time! See an alternate view of the city that's all about libraries and coders!&lt;br /&gt;
&lt;br /&gt;
To make your own tweets appear, use the #c4l13 hashtag and make sure the tweet is geolocated.  In Twitter's client you need to do this by enabling geolocation in settings and then enabling it for each tweet.&lt;br /&gt;
&lt;br /&gt;
Source code running this: [https://github.com/wdenton/laertes Laertes]. Bill Denton set it up and is very curious to find out if it's useful, so let him know if you try it out.&lt;br /&gt;
&lt;br /&gt;
== Local Events ==&lt;br /&gt;
Events Listings&lt;br /&gt;
* Chicago Reader http://www.chicagoreader.com/&lt;br /&gt;
* The City of Chicago’s Events Guide: http://www.choosechicago.com/ &lt;br /&gt;
* Metromix Chicago: http://chicago.metromix.com/events &lt;br /&gt;
* Timeout Chicago: http://timeoutchicago.com/&lt;br /&gt;
* Chicago Studio Club's [http://www.google.com/calendar/embed?title=LIVE%20MUSIC%20in%20Chicagoland%20via%20Chicago%20Studio%20Club!%20&amp;amp;height=1000&amp;amp;wkst=1&amp;amp;hl=en&amp;amp;bgcolor=%2399ff99&amp;amp;src=info%40chicagostudioclub.net&amp;amp;color=%237A367A&amp;amp;ctz=America%2FChicago Live Music Google Calendar]&lt;br /&gt;
&lt;br /&gt;
== Local Food ==&lt;br /&gt;
== Local Drinks ==&lt;br /&gt;
==Chicago Events Feb 10-14==&lt;br /&gt;
&lt;br /&gt;
=== Sunday February 10===&lt;br /&gt;
Theater - [http://www.neofuturists.org/ Too Much Light Makes the Baby Go Blind] &amp;quot;...with its ever-changing &amp;quot;menu,&amp;quot; is an attempt to perform 30 plays in 60 minutes. &amp;quot; 7pm.&lt;br /&gt;
&lt;br /&gt;
Theater  - [http://www.chicagoreader.com/chicago/chunks/Event?oid=8557720 Chunks] :  Funny, Heartbreaking, Gross. 7pm &amp;amp; BYOB!&lt;br /&gt;
&lt;br /&gt;
===Monday February 11===&lt;br /&gt;
&lt;br /&gt;
Music - [http://www.hideoutchicago.com/event/208497-robbie-fulks-michael-miles-chicago/ Robbie Fulks at the Hideout]&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Tuesday, February 12===&lt;br /&gt;
&lt;br /&gt;
Concert - [http://www.thefatbabies.com/ The Fat Babies] playing at an awesome venue, [http://greenmilljazz.com/ The Green Mill].&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Wednesday, February 13===&lt;br /&gt;
===Thursday, February 14===&lt;br /&gt;
Tour of the [http://www.newberry.org/ Newberry Library] -- 3:30 p.m.&lt;br /&gt;
This will be a special tour for Code4Lib attendees, so please sign up below if you are interested, as I'll need to give the tour guide an estimate of how many people will come. Details on how to get to the Newberry will follow. Questions? Contact ballingerl at newberry dot org&lt;br /&gt;
&lt;br /&gt;
'''''Directions: '''''&lt;br /&gt;
The Newberry is at 60 W Walton St. It could take half an hour to get there from the conference hotel via CTA, so those of you who wish to take public transit as a group can meet me in the hotel lobby by 3:00. We will then go to the UIC-Halsted El stop (5 blocks from hotel), change trains in the Loop, then walk 3-4 blocks to the Newberry. Otherwise, plan on making your preferred way there and meet in the Newberry lobby by 3:30.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Michael Doran - doran@uta.edu&lt;br /&gt;
# William Denton - wtd@pobox.com&lt;br /&gt;
# Wayne Schneider - wschneider@hclib.org&lt;br /&gt;
# Matt Cordial - rev3lator [at] gmail.com&lt;br /&gt;
# ryan hess - mhess8 [at] depaul.edu&lt;br /&gt;
# [[User:ianc|Ian Chan]] ichan@csusm.edu&lt;br /&gt;
# Richard Aroksaar - richard_aroksaar@nps.gov&lt;br /&gt;
# [name] - [email address]&lt;br /&gt;
# Laurie Lee Moses - lmoses [at] colum.edu&lt;br /&gt;
# Ray Schwartz - schwartzr2@wpunj.edu&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
There's a [http://www.rdio.com/people/wdenton/playlists/2229053/Code4Lib_2013_in_Chicago/ Code4Lib 2013 in Chicago] collaborative playlist on Rdio. If you're a subscriber, have a look, and add something you think everyone would like to hear or use as their personal soundtrack while they're hacking and exploring Chicago.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36545</id>
		<title>2013 social activities</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36545"/>
				<updated>2013-02-12T17:28:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Newcomer Dinner, Tuesday 2/12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Aviary: super-crazy cocktails. http://www.molecularrecipes.com/molecular-mixology/aviary-cocktails/ . List your name if you're interested, whether Sunday, Monday, and/or Tuesday (after newcomer dinners) work, and whether you're just interested in stopping by, or doing a 7 cocktail tasting flight.*&lt;br /&gt;
** statsfool: sunday/monday/tuesday, either drinks or flight.&lt;br /&gt;
** Amyhannah: monday/tuesday, drinks, probably not the flight.&lt;br /&gt;
** anarchivist: sunday/monday, prefer drinks over flight but could be convinced&lt;br /&gt;
** [[User:highermath|highermath]]: monday (could use 10 cocktails after Drupal subCon, I am sure). Uber now works in Chicago, so I would do the flight.&lt;br /&gt;
** [[User:pberry|pberry]]: any night but Wednesday (that's  Goose Island night) and I'd be up for drinks or flight, although leaning away from flight.&lt;br /&gt;
** [[User:thatandromeda|thatandromeda]] oh my gosh yes, any time, probably not the flight.&lt;br /&gt;
** [[User:Gdave|gdave]] beautiful site, I would be interested, Sun,Mon,Tues.  either drink or flight.&lt;br /&gt;
** [[User:shawnc12|shawnc12]]: sunday/monday, either drink or flight&lt;br /&gt;
** wdenton: any night, either drink or flight&lt;br /&gt;
** beatricep: sunday/monday drink, highly susceptible to flight by peer pressure..&lt;br /&gt;
** ryan hess: sunday/monday drink or flight&lt;br /&gt;
** infosoph: sunday/monday yes/yes!!&lt;br /&gt;
** [[User:Pfeeley|Pfeeley]]: sunday/monday/tuesday, either drink or flight&lt;br /&gt;
** [[User:Ksprague|Ksprague]]: tuesday, drink or flight&lt;br /&gt;
** [[User:schwartzray|schwartzray]]: anything on any day&lt;br /&gt;
* Brewery tour - some possible candidates would be Goose Island, Brew Bus http://www.chicagobrewbus.com/, Piece, Revolution, Half Acre.&lt;br /&gt;
* Library field trips - because we're library geeks. Possible places include Newberry and Read/Write.--Read/Write Library confirmed for February 11.--Newberry Library confirmed for February 14.&lt;br /&gt;
* Art Institute of Chicago - Only open until 5pm, but possible for people coming in early enough on Sunday. There seems to be enough interest here to actually have a group, when and where should we meet? I added my email so that we could discuss details off the wiki.&lt;br /&gt;
** escowles: I'm getting in around noon on Sunday, and interested in this.&lt;br /&gt;
** pgrayove at gmail dot com: I'm getting in around noon on Sunday too.  I'm interested.&lt;br /&gt;
** ranti: And I am. &lt;br /&gt;
** tshearerlib: Coming in at around the same time and hope to get to the museum by 1:00.  Lunch first?&lt;br /&gt;
* Local Option http://localoptionbier.com/ - So you've heard of Hopleaf, you've heard of Maproom. Come to Chicago's *ahem* best kept secret for good food and an evening session on Monday. We will need a tally to make requisite arrangements. Target for arrival at bar: 7ish. Probably a group gathering to head north around 6:30 in hotel lobby (if you want to take the #8 Halsted bus that is).&lt;br /&gt;
** kayiwa&lt;br /&gt;
** Linda Ballinger&lt;br /&gt;
** Courtney Greene&lt;br /&gt;
** John Pillans&lt;br /&gt;
** +6 from NCSU incl one Bret Davidson&lt;br /&gt;
** Megan Kudzia&lt;br /&gt;
** Andrew Darby&lt;br /&gt;
** erinrwhite&lt;br /&gt;
** Will Clarke&lt;br /&gt;
** Cody Hanson&lt;br /&gt;
** Jesse Brown&lt;br /&gt;
** Matt Cordial +1 (my friend and I were already planning a Monday trip here)&lt;br /&gt;
** Ray Schwartz&lt;br /&gt;
** Eric Larson&lt;br /&gt;
** David Cliff&lt;br /&gt;
** Ken Irwin&lt;br /&gt;
** Dileshni Jayasinghe&lt;br /&gt;
&lt;br /&gt;
== Planned Events ==&lt;br /&gt;
&lt;br /&gt;
===Read/Write Library Field Trip, Monday 2/11===&lt;br /&gt;
Field trip to the [http://readwritelibrary.org/ Read/Write Library] 6:30PM-9PM &lt;br /&gt;
&lt;br /&gt;
Drop in whenever during this time.&lt;br /&gt;
&lt;br /&gt;
Come help catalog the Read/Write Library catalog and hack on the library catalog. We will get food or go to a nearby restaurant depending on interest. We will also invite friends from Code for America to hang out and talk civic data. Bring your laptop along if you have one.&lt;br /&gt;
&lt;br /&gt;
Let us know if you are coming so we can figure out food:&lt;br /&gt;
* Margaret Heller&lt;br /&gt;
* Ranti Junus&lt;br /&gt;
* Wayne Schneider&lt;br /&gt;
* jrochkind will try to make it&lt;br /&gt;
* emily shaw (may be a little late)&lt;br /&gt;
* &amp;lt;strike&amp;gt;kenirwin - bailed on acct of pre-conf brain death&amp;lt;/strike&amp;gt;&lt;br /&gt;
* Andromeda - yes, unless someone gets Aviary reservations&lt;br /&gt;
* Chris Clement - may attend&lt;br /&gt;
(hey, there are great bars in that neighborhood!)&lt;br /&gt;
* wdenton&lt;br /&gt;
&lt;br /&gt;
'''Directions to the library from UIC:'''&lt;br /&gt;
&lt;br /&gt;
''Bus''&lt;br /&gt;
&lt;br /&gt;
Take the #8 Halsted Bus north to Chicago (Bus will say &amp;quot;#8 Halsted/79th North to Broadway/Waveland&amp;quot;)&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
''Train + Bus (slightly faster/more reliable, but only by about 5-10 minutes)''&lt;br /&gt;
&lt;br /&gt;
Walk to the UIC/Halsted Blue Line &lt;br /&gt;
Take the O'Hare train (toward the Loop) and go all the way through the Loop and back west. Get off at Chicago and use the exit that says &amp;quot;North side of Chicago Ave&amp;quot; (or something similar — I don't remember exactly).&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
=== Newcomer Dinner, Tuesday 2/12 ===&lt;br /&gt;
&lt;br /&gt;
First time at code4lib? Join fellow c4l newbies and veterans for an evening of food, socializing, and stimulating &amp;lt;strike&amp;gt;discussions about&amp;lt;/strike&amp;gt; demonstrations of the many uses of &amp;lt;strike&amp;gt;bacon&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;dongles&amp;lt;/strike&amp;gt; XML.&lt;br /&gt;
&lt;br /&gt;
Code4Lib veterans, you're invited too. Join us in welcoming the newcomers!&lt;br /&gt;
&lt;br /&gt;
'''Plans'''&lt;br /&gt;
* When: Tuesday evening (2/12)&lt;br /&gt;
* Time: 6 PM (ish) or whenever you can get your group together&lt;br /&gt;
* Mastermind (if you have any questions): [mailto:yoosebec@grinnell.edu Becky Yoose]&lt;br /&gt;
&lt;br /&gt;
''Guidelines:''&lt;br /&gt;
*Max of '''6''' per group&lt;br /&gt;
**Please, no waitlisting&lt;br /&gt;
*ID yourselves so we can get a good mix of new people and veterans in each group&lt;br /&gt;
**New folks - n&lt;br /&gt;
**c4l vets - v&lt;br /&gt;
*One leader needed for each location (declare yourself! - '''Vets are highly encouraged to lead the group''')&lt;br /&gt;
**Leader duties&lt;br /&gt;
***Make reservations if required; otherwise make sure that the restaurant can handle a group of 6 rowdy library tech type folks&lt;br /&gt;
***Herd folks from hotel to restaurant (know where you're going!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants within .25 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.athenarestaurantchicago.com/index.php Athena] (Greek)&lt;br /&gt;
&lt;br /&gt;
* Al Cornish - v (leader)&lt;br /&gt;
* Carolyn Cole - n&lt;br /&gt;
* Dileshni Jayasinghe - v&lt;br /&gt;
* Will Clark - n&lt;br /&gt;
* Adam Constabaris - v&lt;br /&gt;
* Patrick Hogan - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.dinerestaurant.com/ Dine] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;[http://www.girlandthegoat.com/ Girl and the Goat] (American) Top Chef fans take note! This is Stephanie Izard's award-winning resto.&amp;lt;/del&amp;gt; Totally booked.&lt;br /&gt;
&lt;br /&gt;
[http://littlegoatchicago.com/ Little Goat] - Izard just opened a diner across the street from G&amp;amp;G that is walk-in only. (very good, probably a wait but they also have a bar in the back --wickr)&lt;br /&gt;
&lt;br /&gt;
[http://www.haymarketbrewing.com/ Haymarket Pub &amp;amp; Brewery] (Pub food) - Reservations at 6:30pm. Meet in conference hotel lobby at 6:10pm&lt;br /&gt;
&lt;br /&gt;
* Ryan Wick (leader) - v&lt;br /&gt;
* Sean Purcell - v&lt;br /&gt;
* Dan Fehrenbach - n&lt;br /&gt;
* Pierre Nault - n&lt;br /&gt;
* Minh-Quang Nguyen - n&lt;br /&gt;
* Matt Bernhardt - n&lt;br /&gt;
* David Gonzalez - n&lt;br /&gt;
* '''Capped at 7'''&lt;br /&gt;
&lt;br /&gt;
[http://www.karynsongreen.com/ Karyn’s on Green] (Vegan)&lt;br /&gt;
Completely vegan and close to the conference hotel. We'll meet in the conference hotel at around 6:45 (reservation at 7:00 for 6). Google maps says it is a 5 minute walk.&lt;br /&gt;
&lt;br /&gt;
*Jason Ronallo (leader)- v&lt;br /&gt;
*Alicia Cozine - n&lt;br /&gt;
*Mark Mounts - v&lt;br /&gt;
*Amy Deschenes - n&lt;br /&gt;
*Adam Strohm - n&lt;br /&gt;
&lt;br /&gt;
[http://niarestaurant.com/nia-restaurant-mediterranean-cuisine/ Nia] (Mediterranean tapas)&lt;br /&gt;
&lt;br /&gt;
[http://www.pegasuschicago.com/index.php Pegasus] (Greek)&lt;br /&gt;
&lt;br /&gt;
[http://www.roditys.com/index.html Roditys] (Greek) -- Reservations made for 6:30pm.  Let's meet in the hotel lobby at 6pm and walk over from there.  Its ok if you're a bit late to the lobby, we'll wait.  If you have any questions email Rosalyn (Rosy) rosalynmetz at gmail dot com&lt;br /&gt;
&lt;br /&gt;
* Rosalyn Metz (leader) - v&lt;br /&gt;
* [[User:highermath|Cary Gordon]] - v&lt;br /&gt;
* [[User:Jacobandresen|Jacob Andresen]] - n&lt;br /&gt;
* Karen Miller - n&lt;br /&gt;
* Dre - v&lt;br /&gt;
* Mahria Lebow - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .25 miles and .5 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
Code4lib Chicago Celery Salt Society - [http://www.alsbeef.com/ Al's Beef]&lt;br /&gt;
&lt;br /&gt;
* Jason Casden (leader) - v - No reservations. We can walk from the hotel at 7.&lt;br /&gt;
* Charlie Morris - n&lt;br /&gt;
* Cory Lown - v&lt;br /&gt;
* Carolina Garcia - n&lt;br /&gt;
* Cody Hanson - n&lt;br /&gt;
* Ken Varnum - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://avecrestaurant.com/# Avec] (Small plate)&lt;br /&gt;
Family-style small plate and tapas.  Great Yelp reviews.  We'll meet in the conference hotel at 6:00 &amp;lt;strike&amp;gt;6:45&amp;lt;/strike&amp;gt; (they don't take reservations, but have stuff to sip on if there's a wait).  Less than 10 minute walk from hotel.&lt;br /&gt;
&lt;br /&gt;
* Shaun Ellis (leader) - v&lt;br /&gt;
* Jon Stroop - v&lt;br /&gt;
* Paula Gray-Overtoom - n&lt;br /&gt;
* Emily Zervas - n&lt;br /&gt;
* Cynthia Ng - neither&lt;br /&gt;
* Sarah Dooley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.babavillage.com/ Baba’s Village] (Indian/Pakistani)&lt;br /&gt;
&lt;br /&gt;
[http://blackbirdrestaurant.com/ Blackbird] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
(Since the reservation is late, does anyone want to meet for drink in the hotel bar beforehand? There's really no place to wait at the restaurant, and there's no nice bar nearby that I can recall. cm)&lt;br /&gt;
* Justin Coyne (reserver) - v - Reservation for Blackbird for 6 at 8:30pm  (justin at curationexperts.com)&lt;br /&gt;
* Matt Cordial - v&lt;br /&gt;
* [http://wiki.code4lib.org/index.php/User:Camcclure Christine McClure - n]&lt;br /&gt;
* Devin Higgins - n (devinhiggins at gmail)&lt;br /&gt;
* Ken Irwin&lt;br /&gt;
* Tad Merchant - n (tadoneus @ gmail)&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.carnivalechicago.com/menu Carnivale] (Nuevo Latino)&lt;br /&gt;
* Nettie Lagace (oh hell, I'll host - I'll call over this afternoon(Tues)) - n/v&lt;br /&gt;
* Rebecca Jones - n/v&lt;br /&gt;
* Ben Burbridge  - n&lt;br /&gt;
* Andrea Schurr - n/v&lt;br /&gt;
* Andromeda Yelton - n&lt;br /&gt;
* Susan Price - n&lt;br /&gt;
&lt;br /&gt;
[http://decero.hellotacos.com/ De Cero] (Mexican)&lt;br /&gt;
&lt;br /&gt;
[http://www.dragonflymandarin.com/  Dragonfly] (Chinese, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://giordanos.com/ Giordano's] (Chicago Style Pizza) This place should be able to handle multiple groups...&lt;br /&gt;
&lt;br /&gt;
* Andrew Nagy (leader) - v&lt;br /&gt;
* Virginia Schilling - n&lt;br /&gt;
* Jane Sandberg - n&lt;br /&gt;
* Richard Aroksaar - n&lt;br /&gt;
* Jesse Brown - n (jfbrown78 at gmail dot com)&lt;br /&gt;
* John Macgillivray&lt;br /&gt;
* Alicia Morris&lt;br /&gt;
* Ayla Stein - n&lt;br /&gt;
* Sharona Ginsberg - n&lt;br /&gt;
* Andrew Myers - n&lt;br /&gt;
* Jim LeFager - n&lt;br /&gt;
&lt;br /&gt;
Giordano's Group Z (three newbies welcome to join, including folks from above if you want). &lt;br /&gt;
* Jonathan Rochkind (leader) -v&lt;br /&gt;
* rsinger -v&lt;br /&gt;
* ndushay -v&lt;br /&gt;
* -n&lt;br /&gt;
* -n&lt;br /&gt;
* -n&lt;br /&gt;
&lt;br /&gt;
[http://www.grangehallburgerbar.com/ Grange Hall Burger Bar] (Local food)&lt;br /&gt;
&lt;br /&gt;
[http://www.idreamoffalafel.com/  I Dream of Falafel] (Mediterranean) -- No reservations -- this is a casual place. Supposed to be an 8 minute walk from the hotel. Let's meet at 6:20pm in the Crowne Plaza lobby. I have chin-length brown hair and probably will be holding a paper scribbled with 'falafel.'&lt;br /&gt;
&lt;br /&gt;
* Emily Lynema (leader) - v&lt;br /&gt;
* Christie Peterson - n&lt;br /&gt;
* James Stuart - v&lt;br /&gt;
* Emily Shaw - n (emilyfshaw at gmail dot com)&lt;br /&gt;
* Ian Chan - n (ichan@csusm.edu)&lt;br /&gt;
* Zeno Tajoli - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.jaipurchicago.com/ Jaipur] (Indian; Reservation made for 6 at 6:30)&lt;br /&gt;
-- Let's meet in the crowne plaza lobby @ 6:15; it's supposed to be a 6 minute walk&lt;br /&gt;
&lt;br /&gt;
* Andrew Darby (leader) - v&lt;br /&gt;
* Josh Wilson (joshwilsonnc at gmail) - n&lt;br /&gt;
* Tim Thompson - n&lt;br /&gt;
* Mariela Hristova - n&lt;br /&gt;
* ryan hess - n&lt;br /&gt;
* Patrick Feeley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://lasardine.com/ La Sardine] (French)&lt;br /&gt;
&lt;br /&gt;
[http://www.mythaitakumi.com/index.html MyThai Takumi] (Japanese Thai) Reservation at 6:15. Meet in the hotel lobby at 6 pm. Look for the women in a trench coat and hat.&lt;br /&gt;
&lt;br /&gt;
*Becky Yoose (leader) b dot yoose at gmail - v&lt;br /&gt;
*May Chan - n&lt;br /&gt;
*David Anderson - newby&lt;br /&gt;
*Terry Brady - new&lt;br /&gt;
* Dave Menninger - n&lt;br /&gt;
*Shawn Carraway -n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nellcoterestaurant.com/ Nellcôte] (French)&lt;br /&gt;
&lt;br /&gt;
[http://chicago.provincerestaurant.com/ Province] (American with Central/South American/Spanish influence)&lt;br /&gt;
&lt;br /&gt;
[http://thepublicanrestaurant.com/ The Publican] (Seafood)&lt;br /&gt;
&lt;br /&gt;
* Jay Luker (eater) - v - Rezzie is for 8pm&lt;br /&gt;
* Mark Matienzo (tweeter) - v&lt;br /&gt;
* Devon Smith (pickle eater) - repeat offender&lt;br /&gt;
* Chris Sharp (dead horse beater) - v&lt;br /&gt;
* Michael B. Klein (greeter) - v&lt;br /&gt;
* Bill McMillin (meeter) - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://saigonsisters.tumblr.com/ Saigon Sisters] (Vietnamese) Reservation for 6:15, meet in hotel lobby&lt;br /&gt;
* Margaret Heller - v and leader&lt;br /&gt;
* Sharon Clapp - n&lt;br /&gt;
* Sean Crowe - n&lt;br /&gt;
* Meghan Finch - n&lt;br /&gt;
* Maccabee Levine - v&lt;br /&gt;
* James Griffin - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.thaiurbankitchen.com/ Thai Urban Kitchen] (Thai, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://www.trattoriaisabellachicago.com/rest.html Trattoria Isabella] (Italian)&lt;br /&gt;
&lt;br /&gt;
[http://www.vivo-chicago.com/homepage-2 Vivo] (Italian) &lt;br /&gt;
&lt;br /&gt;
[http://www.wishbonechicago.com/dining/westloop/ Wishbone] (Southern Reconstruction)&lt;br /&gt;
&lt;br /&gt;
* Rachel Shaevel (herder, self-proclaimed dictator, and reservation maker) - n  (we're on for 6:15!)&lt;br /&gt;
* Myrna E Morales (follower) - n&lt;br /&gt;
* Sarah Thorngate - n&lt;br /&gt;
* Steven Marsden - n&lt;br /&gt;
* David Lacy - v&lt;br /&gt;
* Luke Gaudreau - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .5 miles and .75 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://currentsontheriver.com/ Currents on the River] (Eclectic)&lt;br /&gt;
&lt;br /&gt;
[http://n9ne.com/ N9NE Steakhouse] (Steak)&lt;br /&gt;
&lt;br /&gt;
[http://www.verachicago.com/menu Vera Chicago] (Spanish)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .75 miles and 1 mile of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.theberghoff.com/default.aspx The Berghoff] (German)&lt;br /&gt;
* Declan Fleming - v (leader)  I checked reservations, and for 6 people, the first time open after the conf is 7:30, so I grabbed that.&lt;br /&gt;
** Let's meet in the lobby at 7p and cab over (or would people rather walk?)&lt;br /&gt;
* Dave Green - n &lt;br /&gt;
* Steven Villereal - n&lt;br /&gt;
* Peter Murray - v&lt;br /&gt;
* Trey Terrell - n&lt;br /&gt;
* Mike Giarlo - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.yelp.com/biz/frontera-grill-chicago Frontera] (a Rick Bayliss Mex-American restaurant) Reservations are for 7:30, so perhaps the group could get a drink in the lobby beforehand.  Either way, we'll depart at 7pm.&lt;br /&gt;
: (''note: the drinks at the bar at frontera are very tasty.'')&lt;br /&gt;
*Dan Suchy (leader and over-eater) - v&lt;br /&gt;
*Matt Critchlow - v&lt;br /&gt;
*Carmen Mitchell - v&lt;br /&gt;
*Maureen Callahan - n&lt;br /&gt;
*David Cliff - n&lt;br /&gt;
* Patrick Berry - 3rd year red-shirt freshman&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nativefoods.com/ Native Foods] (Vegan) lots of vegan, vegetarian, gluten free options. No reservations needed. We could meet near the convention center or Daley library around 6 and take the train together. Lots of places to get drinks afterwards. &lt;br /&gt;
&lt;br /&gt;
I will wait at 5:30 at outside the UIC forum for anyone who wants to meet here. We'll pick up everyone else at Daley library at 6, then walk to the train station together. &lt;br /&gt;
&lt;br /&gt;
*Annie Pho(potential leader) - n &lt;br /&gt;
*Lauren Magnuson - n&lt;br /&gt;
*Bennett Magnino - n (meeting outside the Daley library sounds good)&lt;br /&gt;
*Kelly Thompson - n&lt;br /&gt;
*Audrey Altman - n&lt;br /&gt;
*Mackenzie Brooks - n&lt;br /&gt;
*Steven Bassett - n (Can't wait! Native Foods is awesome!).&lt;br /&gt;
* '''Capped at 7''' Unless you can handle more folks!&lt;br /&gt;
&lt;br /&gt;
'''Restaurants more than 1 mile from the hotel'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.greenzebrachicago.com/index.html Green Zebra] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://honkytonkbbqchicago.com/ Honky Tonk Barbeque] (BBQ) ---- I'm interested in Game Night this evening, so I'll make reservations for early dinner at lunch time (when there's some hope of the HT answering the phone).  Please let me know if 6:30 is not OK.  Lets leave from the UIC Library (front door) at 6:10.  It's a moderate walk (a bit less than a mile) from campus; I also have a car, and can drive a couple people if you want.&lt;br /&gt;
*Allan Berry (leader) - n&lt;br /&gt;
*Jason Raitz - n&lt;br /&gt;
*Brian Wu - n (pwu14 at illinois dot edu)(EDIT: Plans sound good. I am also interested in game night. If somehow we don't make it, I have a 4 player game in my hotel room.)&lt;br /&gt;
*Gary Maixner - n&lt;br /&gt;
*Keith Nickum -v&lt;br /&gt;
*&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.karynraw.com/cooked Karyn’s Cooked] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://www.latabernatapas.com/ La Taberna Tapas] (Mediterranean)&lt;br /&gt;
&lt;br /&gt;
[http://www.morganschicago.com/ Morgan's on Maxwell] (Pub food)&lt;br /&gt;
&lt;br /&gt;
[http://www.chezjoelbistro.com/ Chez Joël] (French/Tangiers food) I am leaning towards an early dinner of 6:15 as I have to take-off to make sure the Game Night takes off without a hitch. So leave the conference hotel by 5:45 if it is walk weather or 6PM if it is taxi weather.&lt;br /&gt;
&lt;br /&gt;
* Francis Kayiwa (knackered leader) - v&lt;br /&gt;
* Megan O'Neill Kudzia - n&lt;br /&gt;
* Esther Verreau - n&lt;br /&gt;
* Michael Neidhardt - n&lt;br /&gt;
* Rikke Willer - n&lt;br /&gt;
* Esme Cowles - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
=== Veg*n Dinner ===&lt;br /&gt;
&lt;br /&gt;
Let's have dinner at a veg*n-friendly place one night of the conference. Folks of all eating styles welcome.&lt;br /&gt;
&lt;br /&gt;
Max *6* people per party this year.&lt;br /&gt;
&lt;br /&gt;
'''Party #1: Chicago Diner''', Wednesday Night http://www.veggiediner.com/ &amp;quot;meat free since '83&amp;quot; &lt;br /&gt;
Will they easily be able to accommodate 6 folks walking in?&lt;br /&gt;
We'll plan on meeting in the conference hotel at 6pm and taking the 8 bus up there (3411 N. Halsted St  Chicago, IL 60657). &lt;br /&gt;
# Jason Ronallo (jronallo@gmail.com)&lt;br /&gt;
# Linda Ballinger (linda dot ballinger at gmail)&lt;br /&gt;
# May Chan (msuicat at gmail dot com)&lt;br /&gt;
# Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
# David Uspal (david dot uspal at villanova dot edu) In for the Country Fried StAEk and/or the Soul Bowl.  Ex-Vegetarian (which may make it a crime for me to go), so if the list is full and you still want in, feel free to email me and I'll gladly turn over my spot to an actual Veg*n.&lt;br /&gt;
# Cynthia Ng (cynthia dot s dot ng at gmail)&lt;br /&gt;
Capped at 6&lt;br /&gt;
&lt;br /&gt;
=== Code4lib/Goose Island Brewing Pull Request ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 8:00 PM to 11:00 PM&lt;br /&gt;
&lt;br /&gt;
More information and sign up at [https://code4lib2013-estw.eventbrite.com/|https://code4lib2013-estw.eventbrite.com/]&lt;br /&gt;
&lt;br /&gt;
=== Bourbon and barbecue ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 7:00 PM&lt;br /&gt;
&lt;br /&gt;
Friend of mine tells me his cousin manages a Chicago restaurant, Chicago q, and I should go there and tell him my friend sent me.  [http://www.chicagoqrestaurant.com/menus/dinner.php Menu] keeps talking about artisanal barbecue and extensive bourbon options.  DONE.&lt;br /&gt;
&lt;br /&gt;
Reservation is at 7 for a party of 8.  Add yourselves.  &lt;br /&gt;
&lt;br /&gt;
We can take the number 20 bus to the Red Line. We should plan to meet in the lobby at 6:10; that way we can work with the bus tracker and make a leisurely trip over. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Andromeda Yelton&lt;br /&gt;
* Chris Day [cday2 at saic.edu]&lt;br /&gt;
* Abigail Goben &lt;br /&gt;
* Rosalyn Metz [rosalynmetz at gmail dot com]&lt;br /&gt;
* Dileshni Jayasinghe [d dot jayasinghe at utoronto dot ca]&lt;br /&gt;
* Ray Mathew&lt;br /&gt;
* Dre (Barbecue, yes. Bourbon... well, we'll see.) akorphan at ncsu.edu&lt;br /&gt;
* Sean Chen schen at law.duke.edu&lt;br /&gt;
&lt;br /&gt;
=== Non-beery get together ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, Meet at hotel lobby at around 6:30 (and take public transport over to the park) OR meet us at the rink at 6:45, skating rink closes at 8 PM&lt;br /&gt;
&lt;br /&gt;
'''Where:''' [https://www.cityofchicago.org/city/en/depts/dca/supp_info/ice_skating_at_themccormicktribuneicerink.html McCormick Tribune Ice Rink]&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' @dchud, @ranti, @yo_bj (b dot yoose at gmail), @wendyrlibrarian&lt;br /&gt;
&lt;br /&gt;
'''Cost:''' $10 skate rental, people watching free&lt;br /&gt;
&lt;br /&gt;
Come and (attempt to) skate with us! This is also a good people watching opportunity, so if you don't want to skate, there will be places to hang out around the rink and the park. There is a [http://www.parkgrillchicago.com/cafe/food-menu cafe] near the rink as well, with hot drinks and food.&lt;br /&gt;
&lt;br /&gt;
FYI - For those of you who want something else to munch on while hanging out, there's a [http://www.garrettpopcorn.com/chicago-locations/4-east-madison-street/ Garrett Popcorn Shop] a couple blocks away.&lt;br /&gt;
&lt;br /&gt;
# Chris Sharp (indicating interest)&lt;br /&gt;
# Becky Yoose (ready to fall on her butt repeatedly for the entertainment of others)&lt;br /&gt;
# Peter Murray&lt;br /&gt;
# Shawn Carraway&lt;br /&gt;
# Karen Coombs&lt;br /&gt;
# Michael Levy&lt;br /&gt;
# Christie Peterson&lt;br /&gt;
# Andrew Pasterfield&lt;br /&gt;
# Virginia Schilling&lt;br /&gt;
# Al Cornish&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Kalee Sprague&lt;br /&gt;
# Luis Baquera (ready to distract everyone with his own fantastic wipeouts while Becky composes herself)&lt;br /&gt;
# Maccabee Levine&lt;br /&gt;
# Sarah Shealy (I'm pretty sure I'll fall spectacularly as well :) )&lt;br /&gt;
# Emily Lynema (interested!)&lt;br /&gt;
&lt;br /&gt;
=== Flying Trapeze ===&lt;br /&gt;
'''When:''' Monday, 2/11, TBD&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' rosalynmetz at gmail dot com&lt;br /&gt;
&lt;br /&gt;
'''Class is full.'''&lt;br /&gt;
&lt;br /&gt;
No this is not a joke. If you haven't heard Rosy is an aspiring trapeze artists and wants to bring the fun to her friends in Code4Lib.  There is a trapeze rig in Chicago and she plans on visiting it and hopes that some of you can come along as well.  If its your first time taking a trapeze class, they'll start you off learning [http://www.youtube.com/watch?v=_oqPi_zuX7A a knee hang] and depending on how that goes you might be able to catch it at the end of class.  If you have any questions about whether or not this is for you, [http://chicago.trapezeschool.com/classes/trapeze.php TSNY Chicago's website] should have the answer, if not feel free to contact Rosy.&lt;br /&gt;
&lt;br /&gt;
Trapeze classes are $57, last 2 hours, and are limited to 10 people.  Currently TSNY Chicago hasn't release their class schedule for February -- they should be doing that around Jan. 1.  If we can get enough people interested before then, we can buy out a whole class.  If not it'll be first come, first serve (along with the general public).&lt;br /&gt;
&lt;br /&gt;
If you're interested in signing up, feel free to add your name and contact info to the list below.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Jay Luker (first!)&lt;br /&gt;
# Bill McMillin&lt;br /&gt;
# Bess Sadler&lt;br /&gt;
# Karen Coyle&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Rosalyn Metz (because I'm organizing)&lt;br /&gt;
# Alicia Cozine&lt;br /&gt;
# Gabriel Farrell&lt;br /&gt;
&lt;br /&gt;
=== Game Night! ===&lt;br /&gt;
&lt;br /&gt;
See the http://wiki.code4lib.org/index.php/2013_game_night page for the latest details and to sign up for individual games or add games you're willing to lead/teach!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moved this from idea to an actual event.  Still getting some details, but here's what we know:&lt;br /&gt;
&lt;br /&gt;
Game Night!  Type of games might vary due to interest and what people bring. Looks like interest right now is mostly on light to mediumish games with a dash of abstracts ;). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rough Schedule:&lt;br /&gt;
* 7:30  setup&lt;br /&gt;
* 7:45  start playing games!&lt;br /&gt;
* 10:00 start winding down (don't start new games)&lt;br /&gt;
* 10:30 all done, turn off the lights&lt;br /&gt;
&lt;br /&gt;
* I highly recommend that people walk in groups to get back to their respective lodgings. I'll ask folks still around at the end to help me clean up so we can walk back to the conference hotel*&lt;br /&gt;
&lt;br /&gt;
Please bring your badge with.  (You don't need to wear it on the way, but that'll help us make sure everyone in the room is supposed to be there.)&lt;br /&gt;
&lt;br /&gt;
We have a conference room at the UIC library (Richard J. Daley Library MC 234, 801 S. Morgan, Chicago) reserved for 7:30 on Tuesday the 11th. I'll try to show up at the lobby and hang out there for at about 7:15.  I'll be the guy with a code4lib nametag and a box of games ;). Not sure how late we'll play, it looks like the library is open till 1:00am, but I suspect I will for now put a rough ending time of 11pm.  &lt;br /&gt;
&lt;br /&gt;
(Note, there's also some discussion on Cards Against Humanity.  I will try to make sure there's an alternative game, but I don't know if I want to prohibit any games. I would say though to remember to be respectful and courteous to those around you. I will probably be pondering this issue for a while)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The original list of people who signed up is below.&lt;br /&gt;
&lt;br /&gt;
I (Jon Gorman) will bring some board games and pick up some cards. Add your name to the list below if you're interested in attending. Also not if you can bring games. Bringing games is NOT REQUIRED. If you can bring a game you can teach, that's great and will make sure we're not just stuck playing the games I bring.&lt;br /&gt;
&lt;br /&gt;
(I've added some comments to the game lists below)&lt;br /&gt;
* jtgorman, aka Jon Gorman: I'll bring Time's Up: Total Recall, Tsuro, Hey, That's My Fish, Hive, and some more I haven't decided on yet.  (My profile over at http://www.boardgamegeek.com/ is jtgorman as well if you want to browse my games and make requests)&lt;br /&gt;
* yo_bj: I have some games I can bring as well (Kill Doctor Lucky, Fluxx, Godzilla: Stomp, Munchkin Zombies, etc.). Monday doesn't have anything major planned... &lt;br /&gt;
*danwho:  I 'll bring the Cards Against Humanity set.&lt;br /&gt;
*escowles (Mon/Tue preferred): I've got lots of games I could bring like Settlers of Catan, Carcassonne, Ticket to Ride, Age of Renaissance, Elfenland, Agricola, Le Havre, Smallworld, RoboRally, etc. etc. &lt;br /&gt;
** Take your pick! All good games.  I'll try to finalize my list of games before Friday - JonG &lt;br /&gt;
*jen_young: I'm local and I have quite a few games. Just about every version of Fluxx, Bananagrams, Gloom, Munchkin Cthulu,Cards Against Humanity, Apples to Apples, Risk, Last Night on Earth, etc.) &lt;br /&gt;
**All good games! If you don't mind bringing a box that would be awesome.  I particularly like Apples to Apples, Last Night on Earth and Gloom  - JonG&lt;br /&gt;
* decasm: Interested in Go (aka igo, weiqi, baduk) anytime, not just game night. I can do Catan as well. (And as much as I love it, Cards Against Humanity is probably a violation of the new Code of Conduct.) &lt;br /&gt;
** I look forward to losing my first game of Go to you ;) - JonG&lt;br /&gt;
** I'd love to learn Go. &amp;lt;del&amp;gt;Perhaps after the newcomer dinner?&amp;lt;/del&amp;gt; Oof... won't make for Tues. But would still be interested to learn.  --ranti.&lt;br /&gt;
* csharp: I'm interested in playing games - whatever people bring.  I almost always travel with a pack or two of playing cards ;-).  Monday or Tuesday nights are fine.&lt;br /&gt;
* moneill: I would love to join in! I have a version of Catchphrase floating around somewhere, and I think I have Battleship...I need to go weed around in that drawer and see what else presents itself. Tuesday would be my preferred night, but I will make it work! &lt;br /&gt;
** Don't worry too much about bringing a game if transportation is a problem. One thing I've done w/ stuff like catchphrase is not take the box but to put pieces and cards in a bag - JOn G&lt;br /&gt;
* demiankatz: I'm always up for a game.  I'm hoping to travel light so probably shouldn't bring anything, but if there's a local game shop, I might be persuaded to pick up something new as a souvenir. &lt;br /&gt;
** Don't worry, I think there will be plenty of games - JonG&lt;br /&gt;
* sekjal: I've got [http://boardgamegeek.com/boardgame/36218/dominion Dominion], [http://boardgamegeek.com/boardgame/68448/7-wonders 7 Wonders], [http://boardgamegeek.com/boardgame/30933/bang-the-bullet Bang!], [http://boardgamegeek.com/boardgame/18333/ecofluxx EcoFluxx] and [http://boardgamegeek.com/boardgame/116/guillotine Guillotine] that I can bring.  ++ on Cards against Humanity!  Prefer non-conflict with beer night. &lt;br /&gt;
** Also all good games. I have 7 Wonders, but can bring some other games if you bring that. - Jon G&lt;br /&gt;
* arty: so totally interested. Unfortunately, I have no games to contribute.&lt;br /&gt;
** No prob.&lt;br /&gt;
* sanderson: I would be interested. I can bring [http://boardgamegeek.com/boardgame/478/citadels Citadels] (2-7 players)&lt;br /&gt;
** Citadels would be awesome and means I don't have to bring it ;) - JonG&lt;br /&gt;
* dvdndrsn: Definitely in! Can bring Innovation, Tichu, Dominion, but Cards Against Humanity sounds good. &lt;br /&gt;
** I'll put in a vote for Tichu, heard good things about it - Jon G &lt;br /&gt;
* smkiewel: I'm likely to join. Can bring Arkham Horror and Munchkin.&lt;br /&gt;
** Arkham Horror seems rather bulky to travel with, but if you want to play bring it ;) - Jon G&lt;br /&gt;
** mbutler: If someone actually brings Arkham Horror I'd throw down. Otherwise, whateve. &lt;br /&gt;
* jkwilson: I'd like to attend Monday or Tuesday. I have a bunch of games but I'd prefer not to travel with them, and anyway it sounds like they're covered above. I'll bring the 5-6 player Catan extension.&lt;br /&gt;
* ejlynema: Interested, but will probably attend Newcomer dinner on Tuesday. Like Dominion and 7 Wonders, but probably don't have room to bring in suitcase. Anyone bringing Tsuro? &lt;br /&gt;
** I can bring Tsuro  - Jon G&lt;br /&gt;
* Christie Peterson (save4use): Also interested, but also probably attending newcomer dinner on Tuesday. Can bring [http://boardgamegeek.com/boardgame/11/bohnanza Bohnanza] and one deck of [http://en.wikipedia.org/wiki/Set_%28game%29 Set].  &lt;br /&gt;
**Bohnanza and Set would be awesome - JonG&lt;br /&gt;
**Done! I will bring them both -- C&lt;br /&gt;
* dgcliff: I'd be interested. Can bring Ticket to Ride.&lt;br /&gt;
* mbklein: definitely interested. Will check on my (currently unpacked) games. I am dying to play Cards Against Humanity. If we can't find a way to reconcile it with the Code of Conduct, we need a different Code of Conduct.&lt;br /&gt;
** Considering that this is a public event, and that no one knows everyone's sensitivity levels in the room, it might not be a good idea to break out a crass, adult version of apples to apples in the middle of the gaming room. :cP (yo_bj)&lt;br /&gt;
* duspal:  In.  My board game collection is small but mighty (Arkham Horror, Catan, Vampire: Prince of the City, Deadlands: Battle for Slaughter Gulch, Arabian Nights, Diplomacy, Shogun, and Cosmic Encounter off the top of my head, amongst a few others).  Let me know ahead of time if anyone is interested, since they're all relatively big... &lt;br /&gt;
** If you really want to play Cosmic Encounter, I can bring my copy (Fantasy Flight edition, 3 expansions), just let me know - JonG&lt;br /&gt;
*librarywebchic: I'm willing to bring a set and teach folks how to play Majhong. Need at least three to play though.&lt;br /&gt;
**beatricep:  Uno gets no respect. ;-)  @librarywebchic: I have always wanted to learn to play Majhong.  If you're still bringing it, I'm in!&lt;br /&gt;
** Agreed, I don't know Majhong and I love learning new games. - JonG&lt;br /&gt;
** I actually know a few different rule sets. It's too bad I don't have a travel set or I'd bring a 2nd one -Arty&lt;br /&gt;
** I'm local and can bring a mahjong set. I've had no one to play with for years, so have probably forgotten how. -Linda B&lt;br /&gt;
* jcraitz: I'm in after the newcomer dinner.  I'll bring Citadels and Bang! &lt;br /&gt;
**I think someone higher in the list offered to bring citadels, but won't hurt to have two copies just in case one of you don't show ;) - JonG&lt;br /&gt;
**Aww no. left my games at the office.  Looks like I'll have to jump in someone else's game.&lt;br /&gt;
* julia: I'll be the freeloader who showed up and didn't bring any games.&lt;br /&gt;
* kenirwin: interested in attending&lt;br /&gt;
* sdellis: attending&lt;br /&gt;
* ianc: interested in attending, a little rusty but definitely up for a couple rounds of Mahjong, also want to try something new too!&lt;br /&gt;
* haschart: Interested in attending, if I can make it work with the newcomer dinner.  Big fan of Dominion lately, but probably cannot bring it `cause the &amp;quot;Big Box&amp;quot; with the base game and two expansion sets is bigger than my suitcase.  I could bring &amp;quot;Race for the Galaxy&amp;quot; if there's any interest.&lt;br /&gt;
* jessebrown: Interested in attending. I can bring Set and Zombie Fluxx.&lt;br /&gt;
* terrywbrady: I would like to attend&lt;br /&gt;
* dan fehrenbach (dnfehren): I would like to attend, can bring Pandemic if anyone is interested.&lt;br /&gt;
* dileshni: interested in attending. &lt;br /&gt;
* Corey Harper: definitely interested in attending if space allows.&lt;br /&gt;
* saverkamp: interested in attending.&lt;br /&gt;
* Emily Shaw: I like games. &lt;br /&gt;
* Alan Dyck: I play Carcassonne and Munchkin among others. I see those listed so I'm bringing a game some friends and I have been creating: Wandering Monster.&lt;br /&gt;
* Heidi Frank (hf36@nyu.edu) - I love card games like gin/rummy, but am open to anything.&lt;br /&gt;
* Sibyl Schaefer - attending, and will bring anything that fits in my carry-on&lt;br /&gt;
* Gary Maixner - Joining. Have a copy of Savage Worlds for roleplaying if anyone's interested.&lt;br /&gt;
* cpsarason - I'm up for whatever!&lt;br /&gt;
&lt;br /&gt;
-- *Please, please, please, if you're signing up on this list, also sign up for a paritcular game slot to start out the evening or put your game in: http://wiki.code4lib.org/index.php/2013_game_night&lt;br /&gt;
we're having so many people sign up after Jan. 14th we're in risk of overflowing the room.  (I should have put in a cap limit, but given how late I realized this, I haven't *&lt;br /&gt;
&lt;br /&gt;
I have to confess, I started trying to organize what games certain people were bringing, but it got confusing fast and I don't want anyone to feel compelled to bring anything or feel bad if they can't make it.  So if there is something you're dying to play, let me know and I'll try to bring it if I have it.&lt;br /&gt;
&lt;br /&gt;
== Social Map - Places of Interest==&lt;br /&gt;
&lt;br /&gt;
https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0&lt;br /&gt;
&lt;br /&gt;
== Layar: augmented reality Code4Lib view of Chicago ==&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;Code4Lib 2013&amp;quot; layer in [http://www.layar.com/ Layar], an augmented reality app that runs on both Android and iOS. You can use it to scan around the city to see two kinds of things: 1) tweets using the #c4l13 or #code4lib hashtag (if the tweets are geolocated so they can be&lt;br /&gt;
nailed to a point) and 2) points of interest from the [https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0 shared Google Map]. &lt;br /&gt;
&lt;br /&gt;
To use it:&lt;br /&gt;
&lt;br /&gt;
* install Layar on your phone&lt;br /&gt;
* run it and click to go into Geo Layers mode&lt;br /&gt;
* search for &amp;quot;code4lib 2013&amp;quot;&lt;br /&gt;
* launch the layer and look around&lt;br /&gt;
&lt;br /&gt;
See Code4Lib people and events overlaid on top of Chicago, in real time! See an alternate view of the city that's all about libraries and coders!&lt;br /&gt;
&lt;br /&gt;
To make your own tweets appear, use the #c4l13 hashtag and make sure the tweet is geolocated.  In Twitter's client you need to do this by enabling geolocation in settings and then enabling it for each tweet.&lt;br /&gt;
&lt;br /&gt;
Source code running this: [https://github.com/wdenton/laertes Laertes]. Bill Denton set it up and is very curious to find out if it's useful, so let him know if you try it out.&lt;br /&gt;
&lt;br /&gt;
== Local Events ==&lt;br /&gt;
Events Listings&lt;br /&gt;
* Chicago Reader http://www.chicagoreader.com/&lt;br /&gt;
* The City of Chicago’s Events Guide: http://www.choosechicago.com/ &lt;br /&gt;
* Metromix Chicago: http://chicago.metromix.com/events &lt;br /&gt;
* Timeout Chicago: http://timeoutchicago.com/&lt;br /&gt;
* Chicago Studio Club's [http://www.google.com/calendar/embed?title=LIVE%20MUSIC%20in%20Chicagoland%20via%20Chicago%20Studio%20Club!%20&amp;amp;height=1000&amp;amp;wkst=1&amp;amp;hl=en&amp;amp;bgcolor=%2399ff99&amp;amp;src=info%40chicagostudioclub.net&amp;amp;color=%237A367A&amp;amp;ctz=America%2FChicago Live Music Google Calendar]&lt;br /&gt;
&lt;br /&gt;
== Local Food ==&lt;br /&gt;
== Local Drinks ==&lt;br /&gt;
==Chicago Events Feb 10-14==&lt;br /&gt;
&lt;br /&gt;
=== Sunday February 10===&lt;br /&gt;
Theater - [http://www.neofuturists.org/ Too Much Light Makes the Baby Go Blind] &amp;quot;...with its ever-changing &amp;quot;menu,&amp;quot; is an attempt to perform 30 plays in 60 minutes. &amp;quot; 7pm.&lt;br /&gt;
&lt;br /&gt;
Theater  - [http://www.chicagoreader.com/chicago/chunks/Event?oid=8557720 Chunks] :  Funny, Heartbreaking, Gross. 7pm &amp;amp; BYOB!&lt;br /&gt;
&lt;br /&gt;
===Monday February 11===&lt;br /&gt;
&lt;br /&gt;
Music - [http://www.hideoutchicago.com/event/208497-robbie-fulks-michael-miles-chicago/ Robbie Fulks at the Hideout]&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Tuesday, February 12===&lt;br /&gt;
&lt;br /&gt;
Concert - [http://www.thefatbabies.com/ The Fat Babies] playing at an awesome venue, [http://greenmilljazz.com/ The Green Mill].&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Wednesday, February 13===&lt;br /&gt;
===Thursday, February 14===&lt;br /&gt;
Tour of the [http://www.newberry.org/ Newberry Library] -- 3:30 p.m.&lt;br /&gt;
This will be a special tour for Code4Lib attendees, so please sign up below if you are interested, as I'll need to give the tour guide an estimate of how many people will come. Details on how to get to the Newberry will follow. Questions? Contact ballingerl at newberry dot org&lt;br /&gt;
&lt;br /&gt;
'''''Directions: '''''&lt;br /&gt;
The Newberry is at 60 W Walton St. It could take half an hour to get there from the conference hotel via CTA, so those of you who wish to take public transit as a group can meet me in the hotel lobby by 3:00. We will then go to the UIC-Halsted El stop (5 blocks from hotel), change trains in the Loop, then walk 3-4 blocks to the Newberry. Otherwise, plan on making your preferred way there and meet in the Newberry lobby by 3:30.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Michael Doran - doran@uta.edu&lt;br /&gt;
# William Denton - wtd@pobox.com&lt;br /&gt;
# Wayne Schneider - wschneider@hclib.org&lt;br /&gt;
# Matt Cordial - rev3lator [at] gmail.com&lt;br /&gt;
# ryan hess - mhess8 [at] depaul.edu&lt;br /&gt;
# [[User:ianc|Ian Chan]] ichan@csusm.edu&lt;br /&gt;
# Richard Aroksaar - richard_aroksaar@nps.gov&lt;br /&gt;
# [name] - [email address]&lt;br /&gt;
# Laurie Lee Moses - lmoses [at] colum.edu&lt;br /&gt;
# Ray Schwartz - schwartzr2@wpunj.edu&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
There's a [http://www.rdio.com/people/wdenton/playlists/2229053/Code4Lib_2013_in_Chicago/ Code4Lib 2013 in Chicago] collaborative playlist on Rdio. If you're a subscriber, have a look, and add something you think everyone would like to hear or use as their personal soundtrack while they're hacking and exploring Chicago.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36492</id>
		<title>2013 Lightning Talks Signup</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36492"/>
				<updated>2013-02-12T16:12:16Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Tuesday, 4:20-5:20pm [12 slots] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Sign up for Lightning Talks!!'''&lt;br /&gt;
&lt;br /&gt;
Lightning talks are scheduled on all three days of the conference. A lightning talk is a fast-paced 5 minute talk on a topic of your choosing. Sign-ups for lightning talks will open immediately following the first keynote.&lt;br /&gt;
&lt;br /&gt;
Mark Jason Dominus has a nice page [http://perl.plover.com/lt/lightning-talks.html about lightning talks], which includes this summary of why you might want to do one:&lt;br /&gt;
&lt;br /&gt;
''Maybe you've never given a talk before, and you'd like to start small. For a Lightning Talk, you don't need to make slides, and if you do decide to make slides, you only need to make three.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you're nervous and you're afraid you'll mess up. It's a lot easier to plan and deliver a five minute talk than it is to deliver a long talk. And if you do mess up, at least the painful part will be over quickly.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you don't have much to say. Maybe you just want to ask a question, or invite people to help you with your project, or boast about something you did, or tell a short cautionary story. These things are all interesting and worth talking about, but there might not be enough to say about them to fill up thirty minutes.''&lt;br /&gt;
&lt;br /&gt;
You might also like Mark Fowler's's [http://www.perl.com/pub/2004/07/30/lightningtalk.html Advice for Giving a Lightning Talk].&lt;br /&gt;
&lt;br /&gt;
Have something to add but didn't get a chance to do it in Chicago?  Consider signing up to present at the [[Virtual Lightning Talks]] on April 3rd, 2013.&lt;br /&gt;
&lt;br /&gt;
'''LIGHTNING TALK SIGNUPS OPEN AT 10 AM EST ON FEBRUARY 12'''&lt;br /&gt;
&lt;br /&gt;
Those who already have presentation slots, please hold off and give those without slots lightning talk chances, to spread around the opportunity to talk to the conference. &lt;br /&gt;
&lt;br /&gt;
=== Tuesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# Cynthia Ng / RULA Bookfinder&lt;br /&gt;
# &lt;br /&gt;
# Bill Dueber -- Datamart report generator at UMich&lt;br /&gt;
# Jonathan Rochkind -- bento_search&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=== Wenesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# Rachel Frick -- LODLAM Summit 2013 and Challenge&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=== Thursday, 10:15-11:00am [9 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36484</id>
		<title>2013 Lightning Talks Signup</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36484"/>
				<updated>2013-02-12T16:00:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Sign up for Lightning Talks!!'''&lt;br /&gt;
&lt;br /&gt;
Lightning talks are scheduled on all three days of the conference. A lightning talk is a fast-paced 5 minute talk on a topic of your choosing. Sign-ups for lightning talks will open immediately following the first keynote.&lt;br /&gt;
&lt;br /&gt;
Mark Jason Dominus has a nice page [http://perl.plover.com/lt/lightning-talks.html about lightning talks], which includes this summary of why you might want to do one:&lt;br /&gt;
&lt;br /&gt;
''Maybe you've never given a talk before, and you'd like to start small. For a Lightning Talk, you don't need to make slides, and if you do decide to make slides, you only need to make three.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you're nervous and you're afraid you'll mess up. It's a lot easier to plan and deliver a five minute talk than it is to deliver a long talk. And if you do mess up, at least the painful part will be over quickly.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you don't have much to say. Maybe you just want to ask a question, or invite people to help you with your project, or boast about something you did, or tell a short cautionary story. These things are all interesting and worth talking about, but there might not be enough to say about them to fill up thirty minutes.''&lt;br /&gt;
&lt;br /&gt;
You might also like Mark Fowler's's [http://www.perl.com/pub/2004/07/30/lightningtalk.html Advice for Giving a Lightning Talk].&lt;br /&gt;
&lt;br /&gt;
Have something to add but didn't get a chance to do it in Chicago?  Consider signing up to present at the [[Virtual Lightning Talks]] on April 3rd, 2013.&lt;br /&gt;
&lt;br /&gt;
'''LIGHTNING TALK SIGNUPS OPEN AT 10 AM EST ON FEBRUARY 12'''&lt;br /&gt;
&lt;br /&gt;
Those who already have presentation slots, please hold off and give those without slots lightning talk chances, to spread around the opportunity to talk to the conference. &lt;br /&gt;
&lt;br /&gt;
=== Tuesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
=== Wenesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# Rachel Frick -- LODLAM Summit 2013 and Challenge&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=== Thursday, 10:15-11:00am [9 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36482</id>
		<title>2013 Lightning Talks Signup</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_Lightning_Talks_Signup&amp;diff=36482"/>
				<updated>2013-02-12T15:59:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Sign up for Lightning Talks!!'''&lt;br /&gt;
&lt;br /&gt;
Lightning talks are scheduled on all three days of the conference. A lightning talk is a fast-paced 5 minute talk on a topic of your choosing. Sign-ups for lightning talks will open immediately following the first keynote.&lt;br /&gt;
&lt;br /&gt;
Mark Jason Dominus has a nice page [http://perl.plover.com/lt/lightning-talks.html about lightning talks], which includes this summary of why you might want to do one:&lt;br /&gt;
&lt;br /&gt;
''Maybe you've never given a talk before, and you'd like to start small. For a Lightning Talk, you don't need to make slides, and if you do decide to make slides, you only need to make three.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you're nervous and you're afraid you'll mess up. It's a lot easier to plan and deliver a five minute talk than it is to deliver a long talk. And if you do mess up, at least the painful part will be over quickly.''&lt;br /&gt;
&lt;br /&gt;
''Maybe you don't have much to say. Maybe you just want to ask a question, or invite people to help you with your project, or boast about something you did, or tell a short cautionary story. These things are all interesting and worth talking about, but there might not be enough to say about them to fill up thirty minutes.''&lt;br /&gt;
&lt;br /&gt;
You might also like Mark Fowler's's [http://www.perl.com/pub/2004/07/30/lightningtalk.html Advice for Giving a Lightning Talk].&lt;br /&gt;
&lt;br /&gt;
Have something to add but didn't get a chance to do it in Chicago?  Consider signing up to present at the [[Virtual Lightning Talks]] on April 3rd, 2013.&lt;br /&gt;
&lt;br /&gt;
'''LIGHTNING TALK SIGNUPS OPEN AT 10 AM EST ON FEBRUARY 12'''&lt;br /&gt;
&lt;br /&gt;
Those who already have presentation slots, please hold off and give those without slots lightning talk chances, to spread around the opportunity to talk tot he conf. &lt;br /&gt;
&lt;br /&gt;
=== Tuesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
=== Wenesday, 4:20-5:20pm [12 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# Rachel Frick -- LODLAM Summit 2013 and Challenge&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
=== Thursday, 10:15-11:00am [9 slots] ===&lt;br /&gt;
&lt;br /&gt;
Enter ''Name'' -- ''Title of Talk''&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
# &lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36401</id>
		<title>2013 social activities</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2013_social_activities&amp;diff=36401"/>
				<updated>2013-02-11T20:28:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Aviary: super-crazy cocktails. http://www.molecularrecipes.com/molecular-mixology/aviary-cocktails/ . List your name if you're interested, whether Sunday, Monday, and/or Tuesday (after newcomer dinners) work, and whether you're just interested in stopping by, or doing a 7 cocktail tasting flight.*&lt;br /&gt;
** statsfool: sunday/monday/tuesday, either drinks or flight.&lt;br /&gt;
** Amyhannah: monday/tuesday, drinks, probably not the flight.&lt;br /&gt;
** anarchivist: sunday/monday, prefer drinks over flight but could be convinced&lt;br /&gt;
** [[User:highermath|highermath]]: monday (could use 10 cocktails after Drupal subCon, I am sure). Uber now works in Chicago, so I would do the flight.&lt;br /&gt;
** [[User:pberry|pberry]]: any night but Wednesday (that's  Goose Island night) and I'd be up for drinks or flight, although leaning away from flight.&lt;br /&gt;
** [[User:thatandromeda|thatandromeda]] oh my gosh yes, any time, probably not the flight.&lt;br /&gt;
** [[User:Gdave|gdave]] beautiful site, I would be interested, Sun,Mon,Tues.  either drink or flight.&lt;br /&gt;
** [[User:shawnc12|shawnc12]]: sunday/monday, either drink or flight&lt;br /&gt;
** wdenton: any night, either drink or flight&lt;br /&gt;
** beatricep: sunday/monday drink, highly susceptible to flight by peer pressure..&lt;br /&gt;
** ryan hess: sunday/monday drink or flight&lt;br /&gt;
** infosoph: sunday/monday yes/yes!!&lt;br /&gt;
** [[User:Pfeeley|Pfeeley]]: sunday/monday/tuesday, either drink or flight&lt;br /&gt;
** [[User:Ksprague|Ksprague]]: tuesday, drink or flight&lt;br /&gt;
** [[User:schwartzray|schwartzray]]: anything on any day&lt;br /&gt;
* Brewery tour - some possible candidates would be Goose Island, Brew Bus http://www.chicagobrewbus.com/, Piece, Revolution, Half Acre.&lt;br /&gt;
* Library field trips - because we're library geeks. Possible places include Newberry and Read/Write.--Read/Write Library confirmed for February 11.--Newberry Library confirmed for February 14.&lt;br /&gt;
* Art Institute of Chicago - Only open until 5pm, but possible for people coming in early enough on Sunday. There seems to be enough interest here to actually have a group, when and where should we meet? I added my email so that we could discuss details off the wiki.&lt;br /&gt;
** escowles: I'm getting in around noon on Sunday, and interested in this.&lt;br /&gt;
** pgrayove at gmail dot com: I'm getting in around noon on Sunday too.  I'm interested.&lt;br /&gt;
** ranti: And I am. &lt;br /&gt;
** tshearerlib: Coming in at around the same time and hope to get to the museum by 1:00.  Lunch first?&lt;br /&gt;
* Local Option http://localoptionbier.com/ - So you've heard of Hopleaf, you've heard of Maproom. Come to Chicago's *ahem* best kept secret for good food and an evening session on Monday. We will need a tally to make requisite arrangements. Target for arrival at bar: 7ish. Probably a group gathering to head north around 6:30 in hotel lobby (if you want to take the #8 Halsted bus that is).&lt;br /&gt;
** kayiwa&lt;br /&gt;
** Linda Ballinger&lt;br /&gt;
** Courtney Greene&lt;br /&gt;
** John Pillans&lt;br /&gt;
** +6 from NCSU incl one Bret Davidson&lt;br /&gt;
** Megan Kudzia&lt;br /&gt;
** Andrew Darby&lt;br /&gt;
** erinrwhite&lt;br /&gt;
** [[User:ianc|Ian Chan]]&lt;br /&gt;
** Will Clarke&lt;br /&gt;
** Cody Hanson&lt;br /&gt;
** Jesse Brown&lt;br /&gt;
** Sharon Clapp&lt;br /&gt;
** Matt Cordial +1 (my friend and I were already planning a Monday trip here)&lt;br /&gt;
** Ray Schwartz&lt;br /&gt;
&lt;br /&gt;
== Planned Events ==&lt;br /&gt;
&lt;br /&gt;
===Read/Write Library Field Trip, Monday 2/11===&lt;br /&gt;
Field trip to the [http://readwritelibrary.org/ Read/Write Library] 6:30PM-9PM &lt;br /&gt;
&lt;br /&gt;
Come help catalog the Read/Write Library catalog and hack on the library catalog. We will get food or go to a nearby restaurant depending on interest. We will also invite friends from Code for America to hang out and talk civic data. Bring your laptop along if you have one.&lt;br /&gt;
&lt;br /&gt;
Let us know if you are coming so we can figure out food:&lt;br /&gt;
* Margaret Heller&lt;br /&gt;
* Ranti Junus&lt;br /&gt;
* James Griffin&lt;br /&gt;
* Wayne Schneider&lt;br /&gt;
* jrochkind will try to make it&lt;br /&gt;
&lt;br /&gt;
'''Directions to the library from UIC:'''&lt;br /&gt;
&lt;br /&gt;
''Bus''&lt;br /&gt;
&lt;br /&gt;
Take the #8 Halsted Bus north to Chicago (Bus will say &amp;quot;#8 Halsted/79th North to Broadway/Waveland&amp;quot;)&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
''Train + Bus (slightly faster/more reliable, but only by about 5-10 minutes)''&lt;br /&gt;
&lt;br /&gt;
Walk to the UIC/Halsted Blue Line &lt;br /&gt;
Take the O'Hare train (toward the Loop) and go all the way through the Loop and back west. Get off at Chicago and use the exit that says &amp;quot;North side of Chicago Ave&amp;quot; (or something similar — I don't remember exactly).&lt;br /&gt;
Take the #66 Chicago Bus west to California (Bus will say either &amp;quot;#66 Chicago west to Austin&amp;quot; or &amp;quot;#66 Chicago West to Pulaski.&amp;quot; You can take either one because both Austin and Pulaski are further west than we are so both stop at California)&lt;br /&gt;
The Chicago bus stops on the west side of California, which is the side of the street we're on. On California, walk a block north to Walton.&lt;br /&gt;
&lt;br /&gt;
=== Newcomer Dinner, Tuesday 2/12 ===&lt;br /&gt;
&lt;br /&gt;
First time at code4lib? Join fellow c4l newbies and veterans for an evening of food, socializing, and stimulating &amp;lt;strike&amp;gt;discussions about&amp;lt;/strike&amp;gt; demonstrations of the many uses of &amp;lt;strike&amp;gt;bacon&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;dongles&amp;lt;/strike&amp;gt; XML.&lt;br /&gt;
&lt;br /&gt;
Code4Lib veterans, you're invited too. Join us in welcoming the newcomers!&lt;br /&gt;
&lt;br /&gt;
'''Plans'''&lt;br /&gt;
* When: Tuesday evening (2/12)&lt;br /&gt;
* Time: 6 PM (ish) or whenever you can get your group together&lt;br /&gt;
* Mastermind (if you have any questions): [mailto:yoosebec@grinnell.edu Becky Yoose]&lt;br /&gt;
&lt;br /&gt;
''Guidelines:''&lt;br /&gt;
*Max of '''6''' per group&lt;br /&gt;
**Please, no waitlisting&lt;br /&gt;
*ID yourselves so we can get a good mix of new people and veterans in each group&lt;br /&gt;
**New folks - n&lt;br /&gt;
**c4l vets - v&lt;br /&gt;
*One leader needed for each location (declare yourself! - '''Vets are highly encouraged to lead the group''')&lt;br /&gt;
**Leader duties&lt;br /&gt;
***Make reservations if required; otherwise make sure that the restaurant can handle a group of 6 rowdy library tech type folks&lt;br /&gt;
***Herd folks from hotel to restaurant (know where you're going!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants within .25 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.athenarestaurantchicago.com/index.php Athena] (Greek)&lt;br /&gt;
&lt;br /&gt;
* Al Cornish - v (leader)&lt;br /&gt;
* Carolyn Cole - n&lt;br /&gt;
* Dileshni Jayasinghe - v&lt;br /&gt;
* Will Clark - n&lt;br /&gt;
* Adam Constabaris - v&lt;br /&gt;
* Patrick Hogan - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.dinerestaurant.com/ Dine] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;del&amp;gt;[http://www.girlandthegoat.com/ Girl and the Goat] (American) Top Chef fans take note! This is Stephanie Izard's award-winning resto.&amp;lt;/del&amp;gt; Totally booked.&lt;br /&gt;
&lt;br /&gt;
[http://littlegoatchicago.com/ Little Goat] - Izard just opened a diner across the street from G&amp;amp;G that is walk-in only.&lt;br /&gt;
&lt;br /&gt;
[http://www.haymarketbrewing.com/ Haymarket Pub &amp;amp; Brewery] (Pub food)&lt;br /&gt;
&lt;br /&gt;
[http://www.karynsongreen.com/ Karyn’s on Green] (Vegan)&lt;br /&gt;
Completely vegan and close to the conference hotel. We'll meet in the conference hotel at around 6:45 (reservation at 7:00 for 6). Google maps says it is a 5 minute walk.&lt;br /&gt;
&lt;br /&gt;
*Jason Ronallo (leader)- v&lt;br /&gt;
*Alicia Cozine - n&lt;br /&gt;
*Mark Mounts - v&lt;br /&gt;
*Barbara Hui - n&lt;br /&gt;
*Amy Deschenes - n&lt;br /&gt;
*Adam Strohm - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://niarestaurant.com/nia-restaurant-mediterranean-cuisine/ Nia] (Mediterranean tapas)&lt;br /&gt;
&lt;br /&gt;
[http://www.pegasuschicago.com/index.php Pegasus] (Greek)&lt;br /&gt;
&lt;br /&gt;
[http://www.roditys.com/index.html Roditys] (Greek) -- Reservations made for 6:30pm.  Let's meet in the hotel lobby at 6pm and walk over from there.&lt;br /&gt;
&lt;br /&gt;
* Rosalyn Metz (leader) - v&lt;br /&gt;
* [[User:highermath|Cary Gordon]] - v&lt;br /&gt;
* [[User:Jacobandresen|Jacob Andresen]] - n&lt;br /&gt;
* Karen Miller - n&lt;br /&gt;
* Dre - v&lt;br /&gt;
* Mahria Lebow - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .25 miles and .5 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
Code4lib Chicago Celery Salt Society - [http://www.alsbeef.com/ Al's Beef]&lt;br /&gt;
&lt;br /&gt;
* Jason Casden (leader) - v - No reservations. We can walk from the hotel at 7.&lt;br /&gt;
* Charlie Morris - n&lt;br /&gt;
* Cory Lown - v&lt;br /&gt;
* Carolina Garcia - n&lt;br /&gt;
* Cody Hanson - n&lt;br /&gt;
* Ken Varnum - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://avecrestaurant.com/# Avec] (Small plate)&lt;br /&gt;
Family-style small plate and tapas.  Great Yelp reviews.  We'll meet in the conference hotel at 6:00 &amp;lt;strike&amp;gt;6:45&amp;lt;/strike&amp;gt; (they don't take reservations, but have stuff to sip on if there's a wait).  Less than 10 minute walk from hotel.&lt;br /&gt;
&lt;br /&gt;
* Shaun Ellis (leader) - v&lt;br /&gt;
* Jon Stroop - v&lt;br /&gt;
* Paula Gray-Overtoom - n&lt;br /&gt;
* Emily Zervas - n&lt;br /&gt;
* Cynthia Ng - neither&lt;br /&gt;
* Sarah Dooley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.babavillage.com/ Baba’s Village] (Indian/Pakistani)&lt;br /&gt;
&lt;br /&gt;
[http://blackbirdrestaurant.com/ Blackbird] (Contemporary)&lt;br /&gt;
&lt;br /&gt;
(Since the reservation is late, does anyone want to meet for drink in the hotel bar beforehand? There's really no place to wait at the restaurant, and there's no nice bar nearby that I can recall. cm)&lt;br /&gt;
* Justin Coyne (reserver) - v - Reservation for Blackbird for 6 at 8:30pm&lt;br /&gt;
* Matt Cordial - v&lt;br /&gt;
* [http://wiki.code4lib.org/index.php/User:Camcclure Christine McClure - n]&lt;br /&gt;
* Devin Higgins - n (devinhiggins at gmail)&lt;br /&gt;
* Ken Irwin&lt;br /&gt;
* Tad Merchant - n (tadoneus @ gmail)&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.carnivalechicago.com/menu Carnivale] (Nuevo Latino)&lt;br /&gt;
&lt;br /&gt;
[http://decero.hellotacos.com/ De Cero] (Mexican)&lt;br /&gt;
&lt;br /&gt;
[http://www.dragonflymandarin.com/  Dragonfly] (Chinese, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://giordanos.com/ Giordano's] (Chicago Style Pizza) This place should be able to handle multiple groups...&lt;br /&gt;
&lt;br /&gt;
* Andrew Nagy (leader) - v&lt;br /&gt;
* Virginia Schilling - n&lt;br /&gt;
* Jane Sandberg - n&lt;br /&gt;
* Richard Aroksaar - n&lt;br /&gt;
* Jesse Brown - n (jfbrown78 at gmail dot com)&lt;br /&gt;
* James Van Mil - n (james.vanmil at gmail)&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.grangehallburgerbar.com/ Grange Hall Burger Bar] (Local food)&lt;br /&gt;
&lt;br /&gt;
[http://www.idreamoffalafel.com/  I Dream of Falafel] (Mediterranean) -- No reservations -- this is a casual place. Supposed to be an 8 minute walk from the hotel. Let's meet at 6:20pm in the Crowne Plaza lobby. I have chin-length brown hair and probably will be holding a paper scribbled with 'falafel.'&lt;br /&gt;
&lt;br /&gt;
* Emily Lynema (leader) - v&lt;br /&gt;
* Christie Peterson - n&lt;br /&gt;
* James Stuart - v&lt;br /&gt;
* Emily Shaw - n (emilyfshaw at gmail dot com)&lt;br /&gt;
* Ian Chan - n (ichan@csusm.edu)&lt;br /&gt;
* Zeno Tajoli - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.jaipurchicago.com/ Jaipur] (Indian; Reservation made for 6 at 6:30)&lt;br /&gt;
-- Let's meet in the crowne plaza lobby @ 6:15; it's supposed to be a 6 minute walk&lt;br /&gt;
&lt;br /&gt;
* Andrew Darby (leader) - v&lt;br /&gt;
* Josh Wilson (joshwilsonnc at gmail) - n&lt;br /&gt;
* Tim Thompson - n&lt;br /&gt;
* Mariela Hristova - n&lt;br /&gt;
* ryan hess - n&lt;br /&gt;
* Patrick Feeley - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://lasardine.com/ La Sardine] (French)&lt;br /&gt;
&lt;br /&gt;
[http://www.mythaitakumi.com/index.html MyThai Takumi] (Japanese Thai) Reservation at 6:15. Meet in the hotel lobby at 6 pm. Look for the women in a trench coat and hat.&lt;br /&gt;
&lt;br /&gt;
*Becky Yoose (leader) b dot yoose at gmail - v&lt;br /&gt;
*May Chan - n&lt;br /&gt;
*David Anderson - newby&lt;br /&gt;
*Terry Brady - new&lt;br /&gt;
* Dave Menninger - n&lt;br /&gt;
*Shawn Carraway -n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nellcoterestaurant.com/ Nellcôte] (French)&lt;br /&gt;
&lt;br /&gt;
[http://chicago.provincerestaurant.com/ Province] (American with Central/South American/Spanish influence)&lt;br /&gt;
&lt;br /&gt;
[http://thepublicanrestaurant.com/ The Publican] (Seafood)&lt;br /&gt;
&lt;br /&gt;
* Jay Luker (eater) - v - Rezzie is for 8pm&lt;br /&gt;
* Mark Matienzo (tweeter) - v&lt;br /&gt;
* Devon Smith (pickle eater) - repeat offender&lt;br /&gt;
* Chris Sharp (dead horse beater) - v&lt;br /&gt;
* Michael B. Klein (greeter) - v&lt;br /&gt;
* Bill McMillin (meeter) - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://saigonsisters.tumblr.com/ Saigon Sisters] (Vietnamese) Reservation for 6:15, meet in hotel lobby&lt;br /&gt;
* Margaret Heller - v and leader&lt;br /&gt;
* Sharon Clapp - n&lt;br /&gt;
* Sean Crowe - n&lt;br /&gt;
* Meghan Finch - n&lt;br /&gt;
* Maccabee Levine - v&lt;br /&gt;
* James Griffin - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.thaiurbankitchen.com/ Thai Urban Kitchen] (Thai, sushi)&lt;br /&gt;
&lt;br /&gt;
[http://www.trattoriaisabellachicago.com/rest.html Trattoria Isabella] (Italian)&lt;br /&gt;
&lt;br /&gt;
[http://www.vivo-chicago.com/homepage-2 Vivo] (Italian) &lt;br /&gt;
&lt;br /&gt;
[http://www.wishbonechicago.com/dining/westloop/ Wishbone] (Southern Reconstruction)&lt;br /&gt;
&lt;br /&gt;
* Rachel Shaevel (herder, self-proclaimed dictator, and reservation maker) - n  (we're on for 6:15!)&lt;br /&gt;
* Myrna E Morales (follower) - n&lt;br /&gt;
* Sarah Thorngate - n&lt;br /&gt;
* Steven Marsden - n&lt;br /&gt;
* David Lacy - v&lt;br /&gt;
* Luke Gaudreau - n&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .5 miles and .75 miles of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://currentsontheriver.com/ Currents on the River] (Eclectic)&lt;br /&gt;
&lt;br /&gt;
[http://n9ne.com/ N9NE Steakhouse] (Steak)&lt;br /&gt;
&lt;br /&gt;
[http://www.verachicago.com/menu Vera Chicago] (Spanish)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants between .75 miles and 1 mile of the hotel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.theberghoff.com/default.aspx The Berghoff] (German)&lt;br /&gt;
* Declan Fleming - v (leader)  I checked reservations, and for 6 people, the first time open after the conf is 7:30, so I grabbed that.&lt;br /&gt;
** Let's meet in the lobby at 7p and cab over (or would people rather walk?)&lt;br /&gt;
* Dave Green - n &lt;br /&gt;
* Steven Villereal - n&lt;br /&gt;
* Peter Murray - v&lt;br /&gt;
* Trey Terrell - n&lt;br /&gt;
* Mike Giarlo - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.yelp.com/biz/frontera-grill-chicago Frontera] (a Rick Bayliss Mex-American restaurant) Reservations are for 7:30, so perhaps the group could get a drink in the lobby beforehand.  Either way, we'll depart at 7pm.&lt;br /&gt;
: (''note: the drinks at the bar at frontera are very tasty.'')&lt;br /&gt;
*Dan Suchy (leader and over-eater) - v&lt;br /&gt;
*Matt Critchlow - v&lt;br /&gt;
*Carmen Mitchell - v&lt;br /&gt;
*Maureen Callahan - n&lt;br /&gt;
*David Cliff - n&lt;br /&gt;
* Patrick Berry - 3rd year red-shirt freshman&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.nativefoods.com/ Native Foods] (Vegan)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Restaurants more than 1 mile from the hotel'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.greenzebrachicago.com/index.html Green Zebra] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://honkytonkbbqchicago.com/ Honky Tonk Barbeque] (BBQ)&lt;br /&gt;
*Allan Berry (leader) - n&lt;br /&gt;
*Dhanushka Samarakoon - v&lt;br /&gt;
*Jason Raitz - n&lt;br /&gt;
*Brian Wu - n&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
[http://www.karynraw.com/cooked Karyn’s Cooked] (Vegan)&lt;br /&gt;
&lt;br /&gt;
[http://www.latabernatapas.com/ La Taberna Tapas] (Mediterranean)&lt;br /&gt;
&lt;br /&gt;
[http://www.morganschicago.com/ Morgan's on Maxwell] (Pub food)&lt;br /&gt;
&lt;br /&gt;
[http://www.chezjoelbistro.com/ Chez Joël] (French/Tangiers food) I am leaning towards an early dinner of 6:15 as I have to take-off to make sure the Game Night takes off without a hitch. So leave the conference hotel by 5:45 if it is walk weather or 6PM if it is taxi weather.&lt;br /&gt;
&lt;br /&gt;
* Francis Kayiwa (knackered leader) - v&lt;br /&gt;
* Megan O'Neill Kudzia - n&lt;br /&gt;
* Esther Verreau - n&lt;br /&gt;
* Michael Neidhardt - n&lt;br /&gt;
* Rikke Willer - n&lt;br /&gt;
* Esme Cowles - v&lt;br /&gt;
* '''Capped at 6'''&lt;br /&gt;
&lt;br /&gt;
=== Veg*n Dinner ===&lt;br /&gt;
&lt;br /&gt;
Let's have dinner at a veg*n-friendly place one night of the conference. Folks of all eating styles welcome.&lt;br /&gt;
&lt;br /&gt;
Max *6* people per party this year.&lt;br /&gt;
&lt;br /&gt;
'''Party #1: Chicago Diner''', Wednesday Night http://www.veggiediner.com/ &amp;quot;meat free since '83&amp;quot; &lt;br /&gt;
Will they easily be able to accommodate 6 folks walking in?&lt;br /&gt;
We'll plan on meeting in the conference hotel at 6pm and taking the 8 bus up there (3411 N. Halsted St  Chicago, IL 60657). &lt;br /&gt;
# Jason Ronallo (jronallo@gmail.com)&lt;br /&gt;
# Linda Ballinger (linda dot ballinger at gmail)&lt;br /&gt;
# May Chan (msuicat at gmail dot com)&lt;br /&gt;
# Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
# David Uspal (david dot uspal at villanova dot edu) In for the Country Fried StAEk and/or the Soul Bowl.  Ex-Vegetarian (which may make it a crime for me to go), so if the list is full and you still want in, feel free to email me and I'll gladly turn over my spot to an actual Veg*n.&lt;br /&gt;
# Cynthia Ng (cynthia dot s dot ng at gmail)&lt;br /&gt;
Capped at 6&lt;br /&gt;
&lt;br /&gt;
=== Code4lib/Goose Island Brewing Pull Request ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 8:00 PM to 11:00 PM&lt;br /&gt;
&lt;br /&gt;
More information and sign up at [https://code4lib2013-estw.eventbrite.com/|https://code4lib2013-estw.eventbrite.com/]&lt;br /&gt;
&lt;br /&gt;
=== Bourbon and barbecue ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, 7:00 PM&lt;br /&gt;
&lt;br /&gt;
Friend of mine tells me his cousin manages a Chicago restaurant, Chicago q, and I should go there and tell him my friend sent me.  [http://www.chicagoqrestaurant.com/menus/dinner.php Menu] keeps talking about artisanal barbecue and extensive bourbon options.  DONE.&lt;br /&gt;
&lt;br /&gt;
Reservation is at 7 for a party of 8.  Add yourselves.  &lt;br /&gt;
&lt;br /&gt;
We can take the number 20 bus to the Red Line. We should plan to meet in the lobby at 6:10; that way we can work with the bus tracker and make a leisurely trip over. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Andromeda Yelton&lt;br /&gt;
* Chris Day [cday2 at saic.edu]&lt;br /&gt;
* Abigail Goben &lt;br /&gt;
* Rosalyn Metz [rosalynmetz at gmail dot com]&lt;br /&gt;
* Dileshni Jayasinghe [d dot jayasinghe at utoronto dot ca]&lt;br /&gt;
* Ray Mathew&lt;br /&gt;
* Dre (Barbecue, yes. Bourbon... well, we'll see.) akorphan at ncsu.edu&lt;br /&gt;
* Sean Chen schen at law.duke.edu&lt;br /&gt;
&lt;br /&gt;
=== Non-beery get together ===&lt;br /&gt;
'''When:''' Wednesday, 2/13, Meet at hotel lobby at around 6:30 (and take public transport over to the park) OR meet us at the rink at 6:45, skating rink closes at 8 PM&lt;br /&gt;
&lt;br /&gt;
'''Where:''' [https://www.cityofchicago.org/city/en/depts/dca/supp_info/ice_skating_at_themccormicktribuneicerink.html McCormick Tribune Ice Rink]&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' @dchud, @ranti, @yo_bj (b dot yoose at gmail), @wendyrlibrarian&lt;br /&gt;
&lt;br /&gt;
'''Cost:''' $10 skate rental, people watching free&lt;br /&gt;
&lt;br /&gt;
Come and (attempt to) skate with us! This is also a good people watching opportunity, so if you don't want to skate, there will be places to hang out around the rink and the park. There is a [http://www.parkgrillchicago.com/cafe/food-menu cafe] near the rink as well, with hot drinks and food.&lt;br /&gt;
&lt;br /&gt;
FYI - For those of you who want something else to munch on while hanging out, there's a [http://www.garrettpopcorn.com/chicago-locations/4-east-madison-street/ Garrett Popcorn Shop] a couple blocks away.&lt;br /&gt;
&lt;br /&gt;
# Chris Sharp (indicating interest)&lt;br /&gt;
# Becky Yoose (ready to fall on her butt repeatedly for the entertainment of others)&lt;br /&gt;
# Peter Murray&lt;br /&gt;
# Shawn Carraway&lt;br /&gt;
# Karen Coombs&lt;br /&gt;
# Michael Levy&lt;br /&gt;
# Christie Peterson&lt;br /&gt;
# Andrew Pasterfield&lt;br /&gt;
# Virginia Schilling&lt;br /&gt;
# Al Cornish&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Kalee Sprague&lt;br /&gt;
# Luis Baquera (ready to distract everyone with his own fantastic wipeouts while Becky composes herself)&lt;br /&gt;
# Maccabee Levine&lt;br /&gt;
# Sarah Shealy (I'm pretty sure I'll fall spectacularly as well :) )&lt;br /&gt;
&lt;br /&gt;
=== Flying Trapeze ===&lt;br /&gt;
'''When:''' Monday, 2/11, TBD&lt;br /&gt;
&lt;br /&gt;
'''Contact:''' rosalynmetz at gmail dot com&lt;br /&gt;
&lt;br /&gt;
'''Class is full.'''&lt;br /&gt;
&lt;br /&gt;
No this is not a joke. If you haven't heard Rosy is an aspiring trapeze artists and wants to bring the fun to her friends in Code4Lib.  There is a trapeze rig in Chicago and she plans on visiting it and hopes that some of you can come along as well.  If its your first time taking a trapeze class, they'll start you off learning [http://www.youtube.com/watch?v=_oqPi_zuX7A a knee hang] and depending on how that goes you might be able to catch it at the end of class.  If you have any questions about whether or not this is for you, [http://chicago.trapezeschool.com/classes/trapeze.php TSNY Chicago's website] should have the answer, if not feel free to contact Rosy.&lt;br /&gt;
&lt;br /&gt;
Trapeze classes are $57, last 2 hours, and are limited to 10 people.  Currently TSNY Chicago hasn't release their class schedule for February -- they should be doing that around Jan. 1.  If we can get enough people interested before then, we can buy out a whole class.  If not it'll be first come, first serve (along with the general public).&lt;br /&gt;
&lt;br /&gt;
If you're interested in signing up, feel free to add your name and contact info to the list below.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Jay Luker (first!)&lt;br /&gt;
# Bill McMillin&lt;br /&gt;
# Bess Sadler&lt;br /&gt;
# Karen Coyle&lt;br /&gt;
# Sibyl Schaefer&lt;br /&gt;
# Rosalyn Metz (because I'm organizing)&lt;br /&gt;
# Alicia Cozine&lt;br /&gt;
# Gabriel Farrell&lt;br /&gt;
&lt;br /&gt;
=== Game Night! ===&lt;br /&gt;
&lt;br /&gt;
See the http://wiki.code4lib.org/index.php/2013_game_night page for the latest details and to sign up for individual games or add games you're willing to lead/teach!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moved this from idea to an actual event.  Still getting some details, but here's what we know:&lt;br /&gt;
&lt;br /&gt;
Game Night!  Type of games might vary due to interest and what people bring. Looks like interest right now is mostly on light to mediumish games with a dash of abstracts ;). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rough Schedule:&lt;br /&gt;
* 7:30  setup&lt;br /&gt;
* 7:45  start playing games!&lt;br /&gt;
* 10:30 start winding down (don't start new games)&lt;br /&gt;
* 11:00 all done, turn off the lights&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have a conference room at the UIC library (Richard J. Daley Library MC 234, 801 S. Morgan, Chicago) reserved for 7:30 on Tuesday the 11th. I'll try to show up at the lobby and hang out there for at about 7:15.  I'll be the guy with a code4lib nametag and a box of games ;). Not sure how late we'll play, it looks like the library is open till 1:00am, but I suspect I will for now put a rough ending time of 11pm.  &lt;br /&gt;
&lt;br /&gt;
(Note, there's also some discussion on Cards Against Humanity.  I will try to make sure there's an alternative game, but I don't know if I want to prohibit any games. I would say though to remember to be respectful and courteous to those around you. I will probably be pondering this issue for a while)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The original list of people who signed up is below.&lt;br /&gt;
&lt;br /&gt;
I (Jon Gorman) will bring some board games and pick up some cards. Add your name to the list below if you're interested in attending. Also not if you can bring games. Bringing games is NOT REQUIRED. If you can bring a game you can teach, that's great and will make sure we're not just stuck playing the games I bring.&lt;br /&gt;
&lt;br /&gt;
(I've added some comments to the game lists below)&lt;br /&gt;
* jtgorman, aka Jon Gorman: I'll bring Time's Up: Total Recall, Tsuro, Hey, That's My Fish, Hive, and some more I haven't decided on yet.  (My profile over at http://www.boardgamegeek.com/ is jtgorman as well if you want to browse my games and make requests)&lt;br /&gt;
* yo_bj: I have some games I can bring as well (Kill Doctor Lucky, Fluxx, Godzilla: Stomp, Munchkin Zombies, etc.). Monday doesn't have anything major planned... &lt;br /&gt;
*danwho:  I 'll bring the Cards Against Humanity set.&lt;br /&gt;
*escowles (Mon/Tue preferred): I've got lots of games I could bring like Settlers of Catan, Carcassonne, Ticket to Ride, Age of Renaissance, Elfenland, Agricola, Le Havre, Smallworld, RoboRally, etc. etc. &lt;br /&gt;
** Take your pick! All good games.  I'll try to finalize my list of games before Friday - JonG &lt;br /&gt;
*jen_young: I'm local and I have quite a few games. Just about every version of Fluxx, Bananagrams, Gloom, Munchkin Cthulu,Cards Against Humanity, Apples to Apples, Risk, Last Night on Earth, etc.) &lt;br /&gt;
**All good games! If you don't mind bringing a box that would be awesome.  I particularly like Apples to Apples, Last Night on Earth and Gloom  - JonG&lt;br /&gt;
* decasm: Interested in Go (aka igo, weiqi, baduk) anytime, not just game night. I can do Catan as well. (And as much as I love it, Cards Against Humanity is probably a violation of the new Code of Conduct.) &lt;br /&gt;
** I look forward to losing my first game of Go to you ;) - JonG&lt;br /&gt;
** I'd love to learn Go. &amp;lt;del&amp;gt;Perhaps after the newcomer dinner?&amp;lt;/del&amp;gt; Oof... won't make for Tues. But would still be interested to learn.  --ranti.&lt;br /&gt;
* csharp: I'm interested in playing games - whatever people bring.  I almost always travel with a pack or two of playing cards ;-).  Monday or Tuesday nights are fine.&lt;br /&gt;
* moneill: I would love to join in! I have a version of Catchphrase floating around somewhere, and I think I have Battleship...I need to go weed around in that drawer and see what else presents itself. Tuesday would be my preferred night, but I will make it work! &lt;br /&gt;
** Don't worry too much about bringing a game if transportation is a problem. One thing I've done w/ stuff like catchphrase is not take the box but to put pieces and cards in a bag - JOn G&lt;br /&gt;
* demiankatz: I'm always up for a game.  I'm hoping to travel light so probably shouldn't bring anything, but if there's a local game shop, I might be persuaded to pick up something new as a souvenir. &lt;br /&gt;
** Don't worry, I think there will be plenty of games - JonG&lt;br /&gt;
* sekjal: I've got [http://boardgamegeek.com/boardgame/36218/dominion Dominion], [http://boardgamegeek.com/boardgame/68448/7-wonders 7 Wonders], [http://boardgamegeek.com/boardgame/30933/bang-the-bullet Bang!], [http://boardgamegeek.com/boardgame/18333/ecofluxx EcoFluxx] and [http://boardgamegeek.com/boardgame/116/guillotine Guillotine] that I can bring.  ++ on Cards against Humanity!  Prefer non-conflict with beer night. &lt;br /&gt;
** Also all good games. I have 7 Wonders, but can bring some other games if you bring that. - Jon G&lt;br /&gt;
* arty: so totally interested. Unfortunately, I have no games to contribute.&lt;br /&gt;
** No prob.&lt;br /&gt;
* sanderson: I would be interested. I can bring [http://boardgamegeek.com/boardgame/478/citadels Citadels] (2-7 players)&lt;br /&gt;
** Citadels would be awesome and means I don't have to bring it ;) - JonG&lt;br /&gt;
* dvdndrsn: Definitely in! Can bring Innovation, Tichu, Dominion, but Cards Against Humanity sounds good. &lt;br /&gt;
** I'll put in a vote for Tichu, heard good things about it - Jon G &lt;br /&gt;
* smkiewel: I'm likely to join. Can bring Arkham Horror and Munchkin.&lt;br /&gt;
** Arkham Horror seems rather bulky to travel with, but if you want to play bring it ;) - Jon G&lt;br /&gt;
** mbutler: If someone actually brings Arkham Horror I'd throw down. Otherwise, whateve. &lt;br /&gt;
* jkwilson: I'd like to attend Monday or Tuesday. I have a bunch of games but I'd prefer not to travel with them, and anyway it sounds like they're covered above. I'll bring the 5-6 player Catan extension.&lt;br /&gt;
* ejlynema: Interested, but will probably attend Newcomer dinner on Tuesday. Like Dominion and 7 Wonders, but probably don't have room to bring in suitcase. Anyone bringing Tsuro? &lt;br /&gt;
** I can bring Tsuro  - Jon G&lt;br /&gt;
* Christie Peterson (save4use): Also interested, but also probably attending newcomer dinner on Tuesday. Can bring [http://boardgamegeek.com/boardgame/11/bohnanza Bohnanza] and one deck of [http://en.wikipedia.org/wiki/Set_%28game%29 Set].  &lt;br /&gt;
**Bohnanza and Set would be awesome - JonG&lt;br /&gt;
**Done! I will bring them both -- C&lt;br /&gt;
* dgcliff: I'd be interested. Can bring Ticket to Ride.&lt;br /&gt;
* mbklein: definitely interested. Will check on my (currently unpacked) games. I am dying to play Cards Against Humanity. If we can't find a way to reconcile it with the Code of Conduct, we need a different Code of Conduct.&lt;br /&gt;
** Considering that this is a public event, and that no one knows everyone's sensitivity levels in the room, it might not be a good idea to break out a crass, adult version of apples to apples in the middle of the gaming room. :cP (yo_bj)&lt;br /&gt;
* duspal:  In.  My board game collection is small but mighty (Arkham Horror, Catan, Vampire: Prince of the City, Deadlands: Battle for Slaughter Gulch, Arabian Nights, Diplomacy, Shogun, and Cosmic Encounter off the top of my head, amongst a few others).  Let me know ahead of time if anyone is interested, since they're all relatively big... &lt;br /&gt;
** If you really want to play Cosmic Encounter, I can bring my copy (Fantasy Flight edition, 3 expansions), just let me know - JonG&lt;br /&gt;
*librarywebchic: I'm willing to bring a set and teach folks how to play Majhong. Need at least three to play though.&lt;br /&gt;
**beatricep:  Uno gets no respect. ;-)  @librarywebchic: I have always wanted to learn to play Majhong.  If you're still bringing it, I'm in!&lt;br /&gt;
** Agreed, I don't know Majhong and I love learning new games. - JonG&lt;br /&gt;
** I actually know a few different rule sets. It's too bad I don't have a travel set or I'd bring a 2nd one -Arty&lt;br /&gt;
** I'm local and can bring a mahjong set. I've had no one to play with for years, so have probably forgotten how. -Linda B&lt;br /&gt;
* jcraitz: I'm in after the newcomer dinner.  I'll bring Citadels and Bang! &lt;br /&gt;
**I think someone higher in the list offered to bring citadels, but won't hurt to have two copies just in case one of you don't show ;) - JonG&lt;br /&gt;
**Aww no. left my games at the office.  Looks like I'll have to jump in someone else's game.&lt;br /&gt;
* julia: I'll be the freeloader who showed up and didn't bring any games.&lt;br /&gt;
* kenirwin: interested in attending&lt;br /&gt;
* sdellis: attending&lt;br /&gt;
* ianc: interested in attending, a little rusty but definitely up for a couple rounds of Mahjong, also want to try something new too!&lt;br /&gt;
* haschart: Interested in attending, if I can make it work with the newcomer dinner.  Big fan of Dominion lately, but probably cannot bring it `cause the &amp;quot;Big Box&amp;quot; with the base game and two expansion sets is bigger than my suitcase.  I could bring &amp;quot;Race for the Galaxy&amp;quot; if there's any interest.&lt;br /&gt;
* jessebrown: Interested in attending. I can bring Set and Zombie Fluxx.&lt;br /&gt;
* terrywbrady: I would like to attend&lt;br /&gt;
* dan fehrenbach (dnfehren): I would like to attend, can bring Pandemic if anyone is interested.&lt;br /&gt;
* dileshni: interested in attending. &lt;br /&gt;
* Corey Harper: definitely interested in attending if space allows.&lt;br /&gt;
* saverkamp: interested in attending.&lt;br /&gt;
* Emily Shaw: I like games. &lt;br /&gt;
* Alan Dyck: I play Carcassonne and Munchkin among others. I see those listed so I'm bringing a game some friends and I have been creating: Wandering Monster.&lt;br /&gt;
* Heidi Frank (hf36@nyu.edu) - I love card games like gin/rummy, but am open to anything.&lt;br /&gt;
* Sibyl Schaefer - attending, and will bring anything that fits in my carry-on&lt;br /&gt;
&lt;br /&gt;
-- *Please, please, please, if you're signing up on this list, also sign up for a paritcular game slot to start out the evening or put your game in: http://wiki.code4lib.org/index.php/2013_game_night&lt;br /&gt;
we're having so many people sign up after Jan. 14th we're in risk of overflowing the room.  (I should have put in a cap limit, but given how late I realized this, I haven't *&lt;br /&gt;
&lt;br /&gt;
I have to confess, I started trying to organize what games certain people were bringing, but it got confusing fast and I don't want anyone to feel compelled to bring anything or feel bad if they can't make it.  So if there is something you're dying to play, let me know and I'll try to bring it if I have it.&lt;br /&gt;
&lt;br /&gt;
== Social Map - Places of Interest==&lt;br /&gt;
&lt;br /&gt;
https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0&lt;br /&gt;
&lt;br /&gt;
== Layar: augmented reality Code4Lib view of Chicago ==&lt;br /&gt;
&lt;br /&gt;
There's a &amp;quot;Code4Lib 2013&amp;quot; layer in [http://www.layar.com/ Layar], an augmented reality app that runs on both Android and iOS. You can use it to scan around the city to see two kinds of things: 1) tweets using the #c4l13 or #code4lib hashtag (if the tweets are geolocated so they can be&lt;br /&gt;
nailed to a point) and 2) points of interest from the [https://maps.google.com/maps/ms?msid=213549257652679418473.0004ce6c25e6cdeb0319d&amp;amp;msa=0 shared Google Map]. &lt;br /&gt;
&lt;br /&gt;
To use it:&lt;br /&gt;
&lt;br /&gt;
* install Layar on your phone&lt;br /&gt;
* run it and click to go into Geo Layers mode&lt;br /&gt;
* search for &amp;quot;code4lib 2013&amp;quot;&lt;br /&gt;
* launch the layer and look around&lt;br /&gt;
&lt;br /&gt;
See Code4Lib people and events overlaid on top of Chicago, in real time! See an alternate view of the city that's all about libraries and coders!&lt;br /&gt;
&lt;br /&gt;
To make your own tweets appear, use the #c4l13 hashtag and make sure the tweet is geolocated.  In Twitter's client you need to do this by enabling geolocation in settings and then enabling it for each tweet.&lt;br /&gt;
&lt;br /&gt;
Source code running this: [https://github.com/wdenton/laertes Laertes]. Bill Denton set it up and is very curious to find out if it's useful, so let him know if you try it out.&lt;br /&gt;
&lt;br /&gt;
== Local Events ==&lt;br /&gt;
Events Listings&lt;br /&gt;
* Chicago Reader http://www.chicagoreader.com/&lt;br /&gt;
* The City of Chicago’s Events Guide: http://www.choosechicago.com/ &lt;br /&gt;
* Metromix Chicago: http://chicago.metromix.com/events &lt;br /&gt;
* Timeout Chicago: http://timeoutchicago.com/&lt;br /&gt;
* Chicago Studio Club's [http://www.google.com/calendar/embed?title=LIVE%20MUSIC%20in%20Chicagoland%20via%20Chicago%20Studio%20Club!%20&amp;amp;height=1000&amp;amp;wkst=1&amp;amp;hl=en&amp;amp;bgcolor=%2399ff99&amp;amp;src=info%40chicagostudioclub.net&amp;amp;color=%237A367A&amp;amp;ctz=America%2FChicago Live Music Google Calendar]&lt;br /&gt;
&lt;br /&gt;
== Local Food ==&lt;br /&gt;
== Local Drinks ==&lt;br /&gt;
==Chicago Events Feb 10-14==&lt;br /&gt;
&lt;br /&gt;
=== Sunday February 10===&lt;br /&gt;
Theater - [http://www.neofuturists.org/ Too Much Light Makes the Baby Go Blind] &amp;quot;...with its ever-changing &amp;quot;menu,&amp;quot; is an attempt to perform 30 plays in 60 minutes. &amp;quot; 7pm.&lt;br /&gt;
&lt;br /&gt;
Theater  - [http://www.chicagoreader.com/chicago/chunks/Event?oid=8557720 Chunks] :  Funny, Heartbreaking, Gross. 7pm &amp;amp; BYOB!&lt;br /&gt;
&lt;br /&gt;
===Monday February 11===&lt;br /&gt;
&lt;br /&gt;
Music - [http://www.hideoutchicago.com/event/208497-robbie-fulks-michael-miles-chicago/ Robbie Fulks at the Hideout]&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Tuesday, February 12===&lt;br /&gt;
&lt;br /&gt;
Concert - [http://www.thefatbabies.com/ The Fat Babies] playing at an awesome venue, [http://greenmilljazz.com/ The Green Mill].&lt;br /&gt;
&lt;br /&gt;
[http://fedora4lib.org/ fedora4lib] - 7 pm to whenever&lt;br /&gt;
&lt;br /&gt;
===Wednesday, February 13===&lt;br /&gt;
===Thursday, February 14===&lt;br /&gt;
Tour of the [http://www.newberry.org/ Newberry Library] -- 3:30 p.m.&lt;br /&gt;
This will be a special tour for Code4Lib attendees, so please sign up below if you are interested, as I'll need to give the tour guide an estimate of how many people will come. Details on how to get to the Newberry will follow. Questions? Contact ballingerl at newberry dot org&lt;br /&gt;
&lt;br /&gt;
'''''Directions: '''''&lt;br /&gt;
The Newberry is at 60 W Walton St. It could take half an hour to get there from the conference hotel via CTA, so those of you who wish to take public transit as a group can meet me in the hotel lobby by 3:00. We will then go to the UIC-Halsted El stop (5 blocks from hotel), change trains in the Loop, then walk 3-4 blocks to the Newberry. Otherwise, plan on making your preferred way there and meet in the Newberry lobby by 3:30.&lt;br /&gt;
&lt;br /&gt;
'''''Sign Up List'''''&lt;br /&gt;
# Michael Doran - doran@uta.edu&lt;br /&gt;
# William Denton - wtd@pobox.com&lt;br /&gt;
# Wayne Schneider - wschneider@hclib.org&lt;br /&gt;
# Matt Cordial - rev3lator [at] gmail.com&lt;br /&gt;
# ryan hess - mhess8 [at] depaul.edu&lt;br /&gt;
# [[User:ianc|Ian Chan]] ichan@csusm.edu&lt;br /&gt;
# Richard Aroksaar - richard_aroksaar@nps.gov&lt;br /&gt;
# [name] - [email address]&lt;br /&gt;
# Laurie Lee Moses - lmoses [at] colum.edu&lt;br /&gt;
# Ray Schwartz - schwartzr2@wpunj.edu&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
There's a [http://www.rdio.com/people/wdenton/playlists/2229053/Code4Lib_2013_in_Chicago/ Code4Lib 2013 in Chicago] collaborative playlist on Rdio. If you're a subscriber, have a look, and add something you think everyone would like to hear or use as their personal soundtrack while they're hacking and exploring Chicago.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib2013]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_WordPress_Input_Guidelines&amp;diff=23183</id>
		<title>Code4Lib Journal WordPress Input Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_WordPress_Input_Guidelines&amp;diff=23183"/>
				<updated>2012-09-11T19:25:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Proofs for Authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please follow the guidelines below when creating or editing Code4Lib Journal articles in WordPress. Enter all articles as &amp;quot;Posts&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==The WP Admin Interface==&lt;br /&gt;
To get to WordPress interface for entering an article, choose 'Site Admin' from the footer of any Journal page, login if necessary, and then choose Write//Write Post from the WP admin menus. (Alternatively, go to http://journal.code4lib.org/wp-admin/). If you don't have a WordPress editor login and need one, talk to our web admin (Jon Brinley).&lt;br /&gt;
&lt;br /&gt;
==Proofs for Authors==&lt;br /&gt;
A read-only login that is shared with authors can be found in the 'Administrivia' tab/worksheet of our Google Docs article tracking spreadsheet.&lt;br /&gt;
&lt;br /&gt;
==Title==&lt;br /&gt;
Title, including the subtitle, goes in the &amp;quot;Title&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
==Article Content==&lt;br /&gt;
The body of the article goes in the &amp;quot;Post&amp;quot; field. The top-level header (&amp;lt;code&amp;gt;&amp;amp;lt;h1&amp;amp;gt;&amp;lt;/code&amp;gt;) is used for the title of the post, so start with second-level headers (&amp;lt;code&amp;gt;&amp;amp;lt;h2&amp;amp;gt;&amp;lt;/code&amp;gt;) for sections of the article. Any header from second- to sixth-level may be used as appropriate. Use HTML markup appropriately and semantically, ''e.g.'', &amp;lt;code&amp;gt;&amp;amp;lt;em&amp;amp;gt;&amp;lt;/code&amp;gt; for emphasized text, &amp;lt;code&amp;gt;&amp;amp;lt;strong&amp;amp;gt;&amp;lt;/code&amp;gt; for strongly emphasized text, &amp;lt;code&amp;gt;&amp;amp;lt;blockquote&amp;amp;gt;&amp;lt;/code&amp;gt; when quoting blocks of text. Avoid such monstrosities as &amp;lt;code&amp;gt;&amp;amp;lt;font&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;blink&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Pasting from Word===&lt;br /&gt;
&lt;br /&gt;
If you just paste content from Word into WP, it ends up with REALLY BAD html. Fortunately, WP has a built-in feature to help with this. Open the 'advanced toolbar' in editing GUI (right-most link), then click on the paste-from-word icon. This transforms Word's html into really nice pretty html. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Images and Attached Content===&lt;br /&gt;
In-line images should be no wider than 500px.&lt;br /&gt;
&lt;br /&gt;
The caption for an image should be entered in a p with class=&amp;quot;caption&amp;quot;:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Figure 1. How to Caption an Image.&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In general, we bold the figure / table label using the strong tag:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Figure 1.&amp;lt;/strong&amp;gt; How to Caption an Image.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Uploading files manually'''&lt;br /&gt;
&lt;br /&gt;
To upload images or other attached media / files, you will need to upload the content to our ibiblio host site manually.&lt;br /&gt;
&lt;br /&gt;
To do that, sftp to ibiblio.org.  See the Administrivia tab in the shared &amp;quot;C4LJ Article Tracking&amp;quot; doc for the username and password. &lt;br /&gt;
&lt;br /&gt;
Change directory to:&lt;br /&gt;
/public/vhost/c/c4lj/html/media&lt;br /&gt;
&lt;br /&gt;
in there you'll find an &amp;quot;issue1&amp;quot; subdir (or issueX subdir--if you don't, create one or ask for help creating one!). Inside THERE, create a subdir with the last name of the first author, and put all your image and other attached content in there. It will now have this sort of url:&lt;br /&gt;
http://journal.code4lib.org/media/issue1/smith/imagename.png&lt;br /&gt;
&lt;br /&gt;
Add to your img src or a href's as desired. You can use this not just for images, but for extended code attachments, etc. (see below)&lt;br /&gt;
&lt;br /&gt;
'''Uploading media via WordPress'''&lt;br /&gt;
&lt;br /&gt;
Before uploading files to WordPress, you will need to change permissions on the directory where you are putting the files.&lt;br /&gt;
# Login to c4ljeditor@login.ibiblio.org.  Ask jrochkind for the password for the c4ljeditor account (or see this [http://groups.google.com/group/c4lj-articles/msg/fad004416f12ac25 post] on c4lj-articles).&lt;br /&gt;
# Change the directory to /public/vhost/c/c4lj/html/wp-content/uploads/&lt;br /&gt;
# WordPress tries to write the files to /public/vhost/c/c4lj/html/wp-content/uploads/[current year]/[current month].  If the current year or month directory does not yet exist, create them, &amp;quot;mkdir [current year]&amp;quot; or mkdir &amp;quot;[current month]&amp;quot; in the appropriate directory.  Creating the directory while logged in makes the owner and group of the directory c4ljeditor and c4lj respectively.  Wordpress will create the directories as nobody/nobody.&lt;br /&gt;
# Change the permissions on the [current month] directory from 755 to 777, &amp;quot;chmod 777 [current month]&amp;quot;.&lt;br /&gt;
# In the WordPress editor, click the &amp;quot;Add an Image&amp;quot; button.&lt;br /&gt;
# Browse to and select your image/file.&lt;br /&gt;
# Click the Upload button.&lt;br /&gt;
# File in the Alternate text and Caption fields.&lt;br /&gt;
# Select the size of the image you want to display in the article.&lt;br /&gt;
# Click &amp;quot;Insert into Post&amp;quot;.&lt;br /&gt;
# On the ibiblio.org server, change the permissions on the current month's directory back to 775, &amp;quot;chmod 775 [current month]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Video ====&lt;br /&gt;
&lt;br /&gt;
We haven't had too much video, but we just had one (a screencast). The option we used was hosting on archive.org. Upload the video, click on the IA 'pillars' icon on the resulting video on the archive.org page to get an 'iframe' embed code, which works fine in our wordpress html source, and I believe the archive.org infrastructure will take care of translating the video to multiple formats and delivering in the proper format for a given browser. Very convenient. &lt;br /&gt;
&lt;br /&gt;
Include a visible link to the archive.org URL for the individual video page as a caption, so printed or otherwise captured versions of the article will always have that link.&lt;br /&gt;
&lt;br /&gt;
You don't need to use archive.org if you or we figure out a better way, it's just one option that worked very conveniently so far.&lt;br /&gt;
&lt;br /&gt;
===Code===&lt;br /&gt;
&lt;br /&gt;
If code is attached as a file, follow the directions above for attached images, except:&lt;br /&gt;
&lt;br /&gt;
* If there is not a folder for the author, create it, according to the guidelines above for images)&lt;br /&gt;
* Create a subfolder under the author's folder for &amp;quot;code&amp;quot;.  Insert code files here&lt;br /&gt;
* In the article link to the files using the path format http://path-to-the-server/media/issueNumber/authorname/code/filename (e.g., http://journal.code4lib.org/media/issue1/smith/code/something.pl)&lt;br /&gt;
&lt;br /&gt;
Put all inline code in &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
====Code Highlighting====&lt;br /&gt;
&lt;br /&gt;
If the code is in a supported language, we can do syntax highlighting. &lt;br /&gt;
&lt;br /&gt;
ibiblio has a PHPS extensionm, so if you an &amp;quot;s&amp;quot; on the end of .php files, e.g.,&lt;br /&gt;
  &amp;lt;filename&amp;gt;.phps&lt;br /&gt;
it does syntax highlighting for you.&lt;br /&gt;
&lt;br /&gt;
We're still deciding if we like the syntax highlighting, don't feel compelled to make it work if it's not working for you (but please let other editors know what your experience is). To make this work, you still wrap your code in &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags. Inside of the &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags, but around your code, include&lt;br /&gt;
 [sourcecode language='langcode']...[/sourcecode]&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;langcode&amp;lt;/code&amp;gt; with the appropriate code from the following list (if more than one option for a language, any one will work).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Language!!Code&lt;br /&gt;
|-&lt;br /&gt;
|C++||cpp, c, c++&lt;br /&gt;
|-&lt;br /&gt;
|C#||c#, c-sharp, csharp&lt;br /&gt;
|-&lt;br /&gt;
|CSS||css&lt;br /&gt;
|-&lt;br /&gt;
|Delphi||delphi, pascal&lt;br /&gt;
|-&lt;br /&gt;
|Java||java&lt;br /&gt;
|-&lt;br /&gt;
|JavaScript||js, jscript, javascript&lt;br /&gt;
|-&lt;br /&gt;
|PHP||php&lt;br /&gt;
|-&lt;br /&gt;
|Python||py, python&lt;br /&gt;
|-&lt;br /&gt;
|Ruby||rb, ruby, rails, ror&lt;br /&gt;
|-&lt;br /&gt;
|SQL||sql&lt;br /&gt;
|-&lt;br /&gt;
|VB||vb, vb.net&lt;br /&gt;
|-&lt;br /&gt;
|XML/HTML||xml, html, xhtml, xslt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;amp;lt;pre&amp;amp;gt;[sourcecode language='css']body {&lt;br /&gt;
    font-size: 0.625em;&lt;br /&gt;
    background-color: #0000ff;&lt;br /&gt;
    color: #ffff00;&lt;br /&gt;
 }[/sourcecode]&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ampersand Issues====&lt;br /&gt;
We've had some problems with ampersand handling in the sourcecode sections. If you notice extra amp;s in your article, such as &amp;quot;&amp;amp;amp;amp;amp;&amp;quot; and &amp;quot;&amp;amp;amp;amp;amp;amp;&amp;quot;, and you're comfortable using only the HTML editor for article entry, try checking the &amp;quot;Disable the visual editor when writing&amp;quot; box on your profile page in the admin.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
While you are editing the article, there is a box labeled &amp;quot;Optional Excerpt&amp;quot; a little ways below the &amp;quot;Post&amp;quot; field. Put the abstract here. Use HTML markup as appropriate. What you put in this field is what will be distributed in our syndication feed and what will appear before the article as the abstract.&lt;br /&gt;
&lt;br /&gt;
Assigned editors are ultimately responsible for a good abstract.  Authors aren't always the best at writing good abstracts for their articles, you should probably revise or even write a new one from scratch as necessary, even when the author has provided one.  Some of the abstracts for my assigned articles haven't even mentioned what I consider the most significant features of the article.&lt;br /&gt;
&lt;br /&gt;
Since indexes (like EBSCO) may end up indexing abstracts and not full text (and even full text indexes may weigh abstracts more highly), the abstract should probably include any important terms that should 'hit' on the article, such as key technologies or concepts.&lt;br /&gt;
&lt;br /&gt;
I've found that extracting sentences or clauses from the article itself is a good way to build an abstract that will represent the article as the authors intended. The conclusion section is often a good place to look for such key sentences/clauses.&lt;br /&gt;
&lt;br /&gt;
Final abstracts should be passed by the authors for approval.&lt;br /&gt;
&lt;br /&gt;
==Bibliographies/Endnotes==&lt;br /&gt;
We would like to provide COinS information with every appropriate citation that does not have a publically accessible url. &lt;br /&gt;
* Recommended COinS generator: http://generator.ocoins.info/ . &lt;br /&gt;
** If using this generator, enter '(COinS)' in the box for COinS Default Text and 'http://journal.code4lib.org/coins' in the box for COinS Default Link at the bottom.&lt;br /&gt;
** Paste the output provided at the end of the reference in HTML. You will need to delete the line breaks inserted into the output created by the generator for it to work properly.&lt;br /&gt;
* Another option is to use the WP COinS plugin. Open the Code tab, put the cursor before the citation, and click COinS. Enter the appropriate information. This works so-so for journals, and not at all for books. &lt;br /&gt;
* COinS should really always have an ISSN or ISBN.&lt;br /&gt;
* Inside the span tag, put the string &amp;quot;(COinS)&amp;quot; with a link to our coins explanation page. Ie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;a href=&amp;quot;http://journal.code4lib.org/coins&amp;quot;&amp;gt;(COinS)&amp;lt;/a&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is so the user without a browser extension will see that something is there she might be interested in, and get an explanation of COinS and how to make use of it.&lt;br /&gt;
&lt;br /&gt;
===Endnotes style and HTML coding===&lt;br /&gt;
* Endnote number in text: The number is the link which appears in square brackets. Square brackets themselves are not part of the link. HTML coding for the text: '''[&amp;lt;a id=&amp;quot;ref1&amp;quot; href=&amp;quot;#note1&amp;quot;&amp;gt;1&amp;lt;/a&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
* The link should work both ways. So, the endnote will link back to the text. HTML coding for the endnote: '''[&amp;lt;a id=&amp;quot;note1&amp;quot; href=&amp;quot;#ref1&amp;quot;&amp;gt;1&amp;lt;/a&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
==Author Information==&lt;br /&gt;
&lt;br /&gt;
Start off each article with a paragraph stating the name(s) of the author(s). Something simple like &amp;quot;By Jonathan Rochkind&amp;quot;. If desired, the author's name can be a link to something appropriate.&lt;br /&gt;
&lt;br /&gt;
End each article with a second-level header that says &amp;quot;About the Author(s)&amp;quot;, with class=&amp;quot;abouttheauthor&amp;quot; set. Then give a short paragraph about each author. We do want to have some kind of contact information published (personal web page, email address (obscured if desired), etc.) for each author. &lt;br /&gt;
&lt;br /&gt;
There is a box beneath the article-editing box with the label &amp;quot;Author(s)&amp;quot;. Anything you put in this field will be treated as the author of the article. This will show up in the ToC and in the syndication feeds. If you don't populate this field, WordPress will use the username of the editor, instead.&lt;br /&gt;
&lt;br /&gt;
==Categories/Tags==&lt;br /&gt;
Posts will have &amp;quot;Uncagetorized&amp;quot; checked by default.  Uncheck that box, and check the box next to the current issue, which will be a subcategory of &amp;quot;Issues.&amp;quot;  Do not check the &amp;quot;Issues&amp;quot; category. We generally do not add tags, except for Conference reviews&lt;br /&gt;
&lt;br /&gt;
==WordPress Buttons==&lt;br /&gt;
&lt;br /&gt;
;Save&lt;br /&gt;
:Saves the article, sets the post status to whatever option is selected in the Publish Status form.&lt;br /&gt;
;Publish&lt;br /&gt;
:Saves the article, sets the post status to Pending Review and assigns a timestamp to the article.&lt;br /&gt;
&lt;br /&gt;
If an issue is not yet published, setting the post status to &amp;quot;Published&amp;quot; or clicking the &amp;quot;Publish&amp;quot; button will set the article to &amp;quot;Pending Review&amp;quot; status. If the issue is already published, this would actually publish the article.&lt;br /&gt;
&lt;br /&gt;
==WordPress Post Status==&lt;br /&gt;
An article has four possible statuses. However, only the first three statuses are available to editors. &lt;br /&gt;
;Draft&lt;br /&gt;
:Use for not yet complete articles. Only editors can see these.&lt;br /&gt;
;Pending Review&lt;br /&gt;
:Use for sharing the article with authors. Editors and anyone logged in with user ID 17 (i.e., the author account) can see these. See this [http://groups.google.com/group/c4lj-articles/browse_thread/thread/1231b06c09f1289f post] on c4lj-articles for the login information for the author account (username: author).&lt;br /&gt;
;Private&lt;br /&gt;
:We don't use this option anymore.&lt;br /&gt;
;Published&lt;br /&gt;
:A published post is visible to everyone. It is part of the RSS feed. If you're editing an already published post, don't select anything in the post status form, just hit Save.&lt;br /&gt;
&lt;br /&gt;
==Publishing an Issue==&lt;br /&gt;
&lt;br /&gt;
# Let everyone on the c4lj-articles list know you are getting ready to publish (so they can save and close any open articles).&lt;br /&gt;
# Log in to WordPress&lt;br /&gt;
# Make sure that all articles for the issue have the correct issue category selected and have been set to 'Pending Review'.  Make sure that the &amp;quot;Uncategorized&amp;quot; and &amp;quot;Issues&amp;quot; categories are unchecked (only the specific issue should be selected).&lt;br /&gt;
# Sanity check:  count the number of posts which should appear in the publish list&lt;br /&gt;
# Click on Posts -&amp;gt; Issues (on the left side)&lt;br /&gt;
# Click on &amp;quot;Publish&amp;quot; for the issue you'd like to publish.&lt;br /&gt;
## You'll get a list of every &amp;quot;Pending Review&amp;quot; article in that issue. Make sure the number of articles in the list matches your previous count.  Don't see all the articles you think you should see? They could be still in Draft status, or not in the correct Issue category, or still have  &amp;quot;Uncategorized&amp;quot; selected, or someone may still have it in edit mode. Go back to the posts list and make any necessary changes, and start from #5 again.&lt;br /&gt;
# Drag and drop the article titles until they're in the order you want. The order you see there is the order you'll see on the home page (and probably the opposite of the order you'll see in your feed reader).&lt;br /&gt;
## Note: It's the coordinating editor's responsibility to decide what order he or she would like the articles to show up in, and order them appropriately when publishing the issue. In general, we try to put the articles with the widest appeal first, and special types (columns, special reports, book reviews, etc.) at the end.&lt;br /&gt;
# Click on Posts -&amp;gt; Categories (on the left side)&lt;br /&gt;
# Make sure all three fields for the current issue are filled in and correct:&lt;br /&gt;
## The human-readable name of the issue goes into the Name field -- e.g., &amp;quot;Issue 15&amp;quot;.&lt;br /&gt;
## The date of publication goes into the Description field -- e.g., &amp;quot;2011-10-31&amp;quot;.&lt;br /&gt;
## The URL name goes into the Slug field -- e.g., &amp;quot;issue15&amp;quot; would give the URL of the issue, http://journal.code4lib.org/issues/issue15&lt;br /&gt;
# Click &amp;quot;Publish Issue&amp;quot; (optionally setting the publication time, first). Setting the time should only have an impact on readers who are not logged into the c4lj site. Editors will be able to see the published articles.&lt;br /&gt;
# Go to the Journal front page; check the number of articles is correct (again) and that they are in the right order.  If there is a problem, go back to the admin interface, click on Posts -&amp;gt; Issues and click Unpublish for the issue.  Make whatever corrections are needed and proceed from #5 again.&lt;br /&gt;
# Once the issue is finally published, go to [[Code4Lib_Journal_Entries_in_Directory_of_Open_Access_Journals]] and follow the directions to upload the issue metadata to DOAJ.&lt;br /&gt;
# Send out announcements (see [[Code4Lib_Journal_Publicity_Venues]])&lt;br /&gt;
&lt;br /&gt;
==Corrections==&lt;br /&gt;
See [http://groups.google.com/group/c4lj-articles/browse_thread/thread/8eaabcff2d9c000d/a0aeeb9367fcea5f?lnk=gst&amp;amp;q=errata#a0aeeb9367fcea5f|the editors' list] for how to make corrections. Generally, use an Errata or Correction section at the end with information about the change that was made and have the actual text link down to that section. See also [[Code4Lib_Corrections]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib Journal]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_WordPress_Input_Guidelines&amp;diff=23179</id>
		<title>Code4Lib Journal WordPress Input Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_WordPress_Input_Guidelines&amp;diff=23179"/>
				<updated>2012-09-11T17:50:39Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Images and Attached Content */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please follow the guidelines below when creating or editing Code4Lib Journal articles in WordPress. Enter all articles as &amp;quot;Posts&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==The WP Admin Interface==&lt;br /&gt;
To get to WordPress interface for entering an article, choose 'Site Admin' from the footer of any Journal page, login if necessary, and then choose Write//Write Post from the WP admin menus. (Alternatively, go to http://journal.code4lib.org/wp-admin/). If you don't have a WordPress editor login and need one, talk to our web admin (Jon Brinley).&lt;br /&gt;
&lt;br /&gt;
==Proofs for Authors==&lt;br /&gt;
A read-only login that is shared with authors can be found in the Administrivia tab.&lt;br /&gt;
&lt;br /&gt;
==Title==&lt;br /&gt;
Title, including the subtitle, goes in the &amp;quot;Title&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
==Article Content==&lt;br /&gt;
The body of the article goes in the &amp;quot;Post&amp;quot; field. The top-level header (&amp;lt;code&amp;gt;&amp;amp;lt;h1&amp;amp;gt;&amp;lt;/code&amp;gt;) is used for the title of the post, so start with second-level headers (&amp;lt;code&amp;gt;&amp;amp;lt;h2&amp;amp;gt;&amp;lt;/code&amp;gt;) for sections of the article. Any header from second- to sixth-level may be used as appropriate. Use HTML markup appropriately and semantically, ''e.g.'', &amp;lt;code&amp;gt;&amp;amp;lt;em&amp;amp;gt;&amp;lt;/code&amp;gt; for emphasized text, &amp;lt;code&amp;gt;&amp;amp;lt;strong&amp;amp;gt;&amp;lt;/code&amp;gt; for strongly emphasized text, &amp;lt;code&amp;gt;&amp;amp;lt;blockquote&amp;amp;gt;&amp;lt;/code&amp;gt; when quoting blocks of text. Avoid such monstrosities as &amp;lt;code&amp;gt;&amp;amp;lt;font&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;lt;blink&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Pasting from Word===&lt;br /&gt;
&lt;br /&gt;
If you just paste content from Word into WP, it ends up with REALLY BAD html. Fortunately, WP has a built-in feature to help with this. Open the 'advanced toolbar' in editing GUI (right-most link), then click on the paste-from-word icon. This transforms Word's html into really nice pretty html. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Images and Attached Content===&lt;br /&gt;
In-line images should be no wider than 500px.&lt;br /&gt;
&lt;br /&gt;
The caption for an image should be entered in a p with class=&amp;quot;caption&amp;quot;:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Figure 1. How to Caption an Image.&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In general, we bold the figure / table label using the strong tag:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;Figure 1.&amp;lt;/strong&amp;gt; How to Caption an Image.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Uploading files manually'''&lt;br /&gt;
&lt;br /&gt;
To upload images or other attached media / files, you will need to upload the content to our ibiblio host site manually.&lt;br /&gt;
&lt;br /&gt;
To do that, sftp to ibiblio.org.  See the Administrivia tab in the shared &amp;quot;C4LJ Article Tracking&amp;quot; doc for the username and password. &lt;br /&gt;
&lt;br /&gt;
Change directory to:&lt;br /&gt;
/public/vhost/c/c4lj/html/media&lt;br /&gt;
&lt;br /&gt;
in there you'll find an &amp;quot;issue1&amp;quot; subdir (or issueX subdir--if you don't, create one or ask for help creating one!). Inside THERE, create a subdir with the last name of the first author, and put all your image and other attached content in there. It will now have this sort of url:&lt;br /&gt;
http://journal.code4lib.org/media/issue1/smith/imagename.png&lt;br /&gt;
&lt;br /&gt;
Add to your img src or a href's as desired. You can use this not just for images, but for extended code attachments, etc. (see below)&lt;br /&gt;
&lt;br /&gt;
'''Uploading media via WordPress'''&lt;br /&gt;
&lt;br /&gt;
Before uploading files to WordPress, you will need to change permissions on the directory where you are putting the files.&lt;br /&gt;
# Login to c4ljeditor@login.ibiblio.org.  Ask jrochkind for the password for the c4ljeditor account (or see this [http://groups.google.com/group/c4lj-articles/msg/fad004416f12ac25 post] on c4lj-articles).&lt;br /&gt;
# Change the directory to /public/vhost/c/c4lj/html/wp-content/uploads/&lt;br /&gt;
# WordPress tries to write the files to /public/vhost/c/c4lj/html/wp-content/uploads/[current year]/[current month].  If the current year or month directory does not yet exist, create them, &amp;quot;mkdir [current year]&amp;quot; or mkdir &amp;quot;[current month]&amp;quot; in the appropriate directory.  Creating the directory while logged in makes the owner and group of the directory c4ljeditor and c4lj respectively.  Wordpress will create the directories as nobody/nobody.&lt;br /&gt;
# Change the permissions on the [current month] directory from 755 to 777, &amp;quot;chmod 777 [current month]&amp;quot;.&lt;br /&gt;
# In the WordPress editor, click the &amp;quot;Add an Image&amp;quot; button.&lt;br /&gt;
# Browse to and select your image/file.&lt;br /&gt;
# Click the Upload button.&lt;br /&gt;
# File in the Alternate text and Caption fields.&lt;br /&gt;
# Select the size of the image you want to display in the article.&lt;br /&gt;
# Click &amp;quot;Insert into Post&amp;quot;.&lt;br /&gt;
# On the ibiblio.org server, change the permissions on the current month's directory back to 775, &amp;quot;chmod 775 [current month]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Video ====&lt;br /&gt;
&lt;br /&gt;
We haven't had too much video, but we just had one (a screencast). The option we used was hosting on archive.org. Upload the video, click on the IA 'pillars' icon on the resulting video on the archive.org page to get an 'iframe' embed code, which works fine in our wordpress html source, and I believe the archive.org infrastructure will take care of translating the video to multiple formats and delivering in the proper format for a given browser. Very convenient. &lt;br /&gt;
&lt;br /&gt;
Include a visible link to the archive.org URL for the individual video page as a caption, so printed or otherwise captured versions of the article will always have that link.&lt;br /&gt;
&lt;br /&gt;
You don't need to use archive.org if you or we figure out a better way, it's just one option that worked very conveniently so far.&lt;br /&gt;
&lt;br /&gt;
===Code===&lt;br /&gt;
&lt;br /&gt;
If code is attached as a file, follow the directions above for attached images, except:&lt;br /&gt;
&lt;br /&gt;
* If there is not a folder for the author, create it, according to the guidelines above for images)&lt;br /&gt;
* Create a subfolder under the author's folder for &amp;quot;code&amp;quot;.  Insert code files here&lt;br /&gt;
* In the article link to the files using the path format http://path-to-the-server/media/issueNumber/authorname/code/filename (e.g., http://journal.code4lib.org/media/issue1/smith/code/something.pl)&lt;br /&gt;
&lt;br /&gt;
Put all inline code in &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
====Code Highlighting====&lt;br /&gt;
&lt;br /&gt;
If the code is in a supported language, we can do syntax highlighting. &lt;br /&gt;
&lt;br /&gt;
ibiblio has a PHPS extensionm, so if you an &amp;quot;s&amp;quot; on the end of .php files, e.g.,&lt;br /&gt;
  &amp;lt;filename&amp;gt;.phps&lt;br /&gt;
it does syntax highlighting for you.&lt;br /&gt;
&lt;br /&gt;
We're still deciding if we like the syntax highlighting, don't feel compelled to make it work if it's not working for you (but please let other editors know what your experience is). To make this work, you still wrap your code in &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags. Inside of the &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; tags, but around your code, include&lt;br /&gt;
 [sourcecode language='langcode']...[/sourcecode]&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;langcode&amp;lt;/code&amp;gt; with the appropriate code from the following list (if more than one option for a language, any one will work).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Language!!Code&lt;br /&gt;
|-&lt;br /&gt;
|C++||cpp, c, c++&lt;br /&gt;
|-&lt;br /&gt;
|C#||c#, c-sharp, csharp&lt;br /&gt;
|-&lt;br /&gt;
|CSS||css&lt;br /&gt;
|-&lt;br /&gt;
|Delphi||delphi, pascal&lt;br /&gt;
|-&lt;br /&gt;
|Java||java&lt;br /&gt;
|-&lt;br /&gt;
|JavaScript||js, jscript, javascript&lt;br /&gt;
|-&lt;br /&gt;
|PHP||php&lt;br /&gt;
|-&lt;br /&gt;
|Python||py, python&lt;br /&gt;
|-&lt;br /&gt;
|Ruby||rb, ruby, rails, ror&lt;br /&gt;
|-&lt;br /&gt;
|SQL||sql&lt;br /&gt;
|-&lt;br /&gt;
|VB||vb, vb.net&lt;br /&gt;
|-&lt;br /&gt;
|XML/HTML||xml, html, xhtml, xslt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;amp;lt;pre&amp;amp;gt;[sourcecode language='css']body {&lt;br /&gt;
    font-size: 0.625em;&lt;br /&gt;
    background-color: #0000ff;&lt;br /&gt;
    color: #ffff00;&lt;br /&gt;
 }[/sourcecode]&amp;amp;lt;/pre&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ampersand Issues====&lt;br /&gt;
We've had some problems with ampersand handling in the sourcecode sections. If you notice extra amp;s in your article, such as &amp;quot;&amp;amp;amp;amp;amp;&amp;quot; and &amp;quot;&amp;amp;amp;amp;amp;amp;&amp;quot;, and you're comfortable using only the HTML editor for article entry, try checking the &amp;quot;Disable the visual editor when writing&amp;quot; box on your profile page in the admin.&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
While you are editing the article, there is a box labeled &amp;quot;Optional Excerpt&amp;quot; a little ways below the &amp;quot;Post&amp;quot; field. Put the abstract here. Use HTML markup as appropriate. What you put in this field is what will be distributed in our syndication feed and what will appear before the article as the abstract.&lt;br /&gt;
&lt;br /&gt;
Assigned editors are ultimately responsible for a good abstract.  Authors aren't always the best at writing good abstracts for their articles, you should probably revise or even write a new one from scratch as necessary, even when the author has provided one.  Some of the abstracts for my assigned articles haven't even mentioned what I consider the most significant features of the article.&lt;br /&gt;
&lt;br /&gt;
Since indexes (like EBSCO) may end up indexing abstracts and not full text (and even full text indexes may weigh abstracts more highly), the abstract should probably include any important terms that should 'hit' on the article, such as key technologies or concepts.&lt;br /&gt;
&lt;br /&gt;
I've found that extracting sentences or clauses from the article itself is a good way to build an abstract that will represent the article as the authors intended. The conclusion section is often a good place to look for such key sentences/clauses.&lt;br /&gt;
&lt;br /&gt;
Final abstracts should be passed by the authors for approval.&lt;br /&gt;
&lt;br /&gt;
==Bibliographies/Endnotes==&lt;br /&gt;
We would like to provide COinS information with every appropriate citation that does not have a publically accessible url. &lt;br /&gt;
* Recommended COinS generator: http://generator.ocoins.info/ . &lt;br /&gt;
** If using this generator, enter '(COinS)' in the box for COinS Default Text and 'http://journal.code4lib.org/coins' in the box for COinS Default Link at the bottom.&lt;br /&gt;
** Paste the output provided at the end of the reference in HTML. You will need to delete the line breaks inserted into the output created by the generator for it to work properly.&lt;br /&gt;
* Another option is to use the WP COinS plugin. Open the Code tab, put the cursor before the citation, and click COinS. Enter the appropriate information. This works so-so for journals, and not at all for books. &lt;br /&gt;
* COinS should really always have an ISSN or ISBN.&lt;br /&gt;
* Inside the span tag, put the string &amp;quot;(COinS)&amp;quot; with a link to our coins explanation page. Ie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;a href=&amp;quot;http://journal.code4lib.org/coins&amp;quot;&amp;gt;(COinS)&amp;lt;/a&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is so the user without a browser extension will see that something is there she might be interested in, and get an explanation of COinS and how to make use of it.&lt;br /&gt;
&lt;br /&gt;
===Endnotes style and HTML coding===&lt;br /&gt;
* Endnote number in text: The number is the link which appears in square brackets. Square brackets themselves are not part of the link. HTML coding for the text: '''[&amp;lt;a id=&amp;quot;ref1&amp;quot; href=&amp;quot;#note1&amp;quot;&amp;gt;1&amp;lt;/a&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
* The link should work both ways. So, the endnote will link back to the text. HTML coding for the endnote: '''[&amp;lt;a id=&amp;quot;note1&amp;quot; href=&amp;quot;#ref1&amp;quot;&amp;gt;1&amp;lt;/a&amp;gt;]'''&lt;br /&gt;
&lt;br /&gt;
==Author Information==&lt;br /&gt;
&lt;br /&gt;
Start off each article with a paragraph stating the name(s) of the author(s). Something simple like &amp;quot;By Jonathan Rochkind&amp;quot;. If desired, the author's name can be a link to something appropriate.&lt;br /&gt;
&lt;br /&gt;
End each article with a second-level header that says &amp;quot;About the Author(s)&amp;quot;, with class=&amp;quot;abouttheauthor&amp;quot; set. Then give a short paragraph about each author. We do want to have some kind of contact information published (personal web page, email address (obscured if desired), etc.) for each author. &lt;br /&gt;
&lt;br /&gt;
There is a box beneath the article-editing box with the label &amp;quot;Author(s)&amp;quot;. Anything you put in this field will be treated as the author of the article. This will show up in the ToC and in the syndication feeds. If you don't populate this field, WordPress will use the username of the editor, instead.&lt;br /&gt;
&lt;br /&gt;
==Categories/Tags==&lt;br /&gt;
Posts will have &amp;quot;Uncagetorized&amp;quot; checked by default.  Uncheck that box, and check the box next to the current issue, which will be a subcategory of &amp;quot;Issues.&amp;quot;  Do not check the &amp;quot;Issues&amp;quot; category. We generally do not add tags, except for Conference reviews&lt;br /&gt;
&lt;br /&gt;
==WordPress Buttons==&lt;br /&gt;
&lt;br /&gt;
;Save&lt;br /&gt;
:Saves the article, sets the post status to whatever option is selected in the Publish Status form.&lt;br /&gt;
;Publish&lt;br /&gt;
:Saves the article, sets the post status to Pending Review and assigns a timestamp to the article.&lt;br /&gt;
&lt;br /&gt;
If an issue is not yet published, setting the post status to &amp;quot;Published&amp;quot; or clicking the &amp;quot;Publish&amp;quot; button will set the article to &amp;quot;Pending Review&amp;quot; status. If the issue is already published, this would actually publish the article.&lt;br /&gt;
&lt;br /&gt;
==WordPress Post Status==&lt;br /&gt;
An article has four possible statuses. However, only the first three statuses are available to editors. &lt;br /&gt;
;Draft&lt;br /&gt;
:Use for not yet complete articles. Only editors can see these.&lt;br /&gt;
;Pending Review&lt;br /&gt;
:Use for sharing the article with authors. Editors and anyone logged in with user ID 17 (i.e., the author account) can see these. See this [http://groups.google.com/group/c4lj-articles/browse_thread/thread/1231b06c09f1289f post] on c4lj-articles for the login information for the author account (username: author).&lt;br /&gt;
;Private&lt;br /&gt;
:We don't use this option anymore.&lt;br /&gt;
;Published&lt;br /&gt;
:A published post is visible to everyone. It is part of the RSS feed. If you're editing an already published post, don't select anything in the post status form, just hit Save.&lt;br /&gt;
&lt;br /&gt;
==Publishing an Issue==&lt;br /&gt;
&lt;br /&gt;
# Let everyone on the c4lj-articles list know you are getting ready to publish (so they can save and close any open articles).&lt;br /&gt;
# Log in to WordPress&lt;br /&gt;
# Make sure that all articles for the issue have the correct issue category selected and have been set to 'Pending Review'.  Make sure that the &amp;quot;Uncategorized&amp;quot; and &amp;quot;Issues&amp;quot; categories are unchecked (only the specific issue should be selected).&lt;br /&gt;
# Sanity check:  count the number of posts which should appear in the publish list&lt;br /&gt;
# Click on Posts -&amp;gt; Issues (on the left side)&lt;br /&gt;
# Click on &amp;quot;Publish&amp;quot; for the issue you'd like to publish.&lt;br /&gt;
## You'll get a list of every &amp;quot;Pending Review&amp;quot; article in that issue. Make sure the number of articles in the list matches your previous count.  Don't see all the articles you think you should see? They could be still in Draft status, or not in the correct Issue category, or still have  &amp;quot;Uncategorized&amp;quot; selected, or someone may still have it in edit mode. Go back to the posts list and make any necessary changes, and start from #5 again.&lt;br /&gt;
# Drag and drop the article titles until they're in the order you want. The order you see there is the order you'll see on the home page (and probably the opposite of the order you'll see in your feed reader).&lt;br /&gt;
## Note: It's the coordinating editor's responsibility to decide what order he or she would like the articles to show up in, and order them appropriately when publishing the issue. In general, we try to put the articles with the widest appeal first, and special types (columns, special reports, book reviews, etc.) at the end.&lt;br /&gt;
# Click on Posts -&amp;gt; Categories (on the left side)&lt;br /&gt;
# Make sure all three fields for the current issue are filled in and correct:&lt;br /&gt;
## The human-readable name of the issue goes into the Name field -- e.g., &amp;quot;Issue 15&amp;quot;.&lt;br /&gt;
## The date of publication goes into the Description field -- e.g., &amp;quot;2011-10-31&amp;quot;.&lt;br /&gt;
## The URL name goes into the Slug field -- e.g., &amp;quot;issue15&amp;quot; would give the URL of the issue, http://journal.code4lib.org/issues/issue15&lt;br /&gt;
# Click &amp;quot;Publish Issue&amp;quot; (optionally setting the publication time, first). Setting the time should only have an impact on readers who are not logged into the c4lj site. Editors will be able to see the published articles.&lt;br /&gt;
# Go to the Journal front page; check the number of articles is correct (again) and that they are in the right order.  If there is a problem, go back to the admin interface, click on Posts -&amp;gt; Issues and click Unpublish for the issue.  Make whatever corrections are needed and proceed from #5 again.&lt;br /&gt;
# Once the issue is finally published, go to [[Code4Lib_Journal_Entries_in_Directory_of_Open_Access_Journals]] and follow the directions to upload the issue metadata to DOAJ.&lt;br /&gt;
# Send out announcements (see [[Code4Lib_Journal_Publicity_Venues]])&lt;br /&gt;
&lt;br /&gt;
==Corrections==&lt;br /&gt;
See [http://groups.google.com/group/c4lj-articles/browse_thread/thread/8eaabcff2d9c000d/a0aeeb9367fcea5f?lnk=gst&amp;amp;q=errata#a0aeeb9367fcea5f|the editors' list] for how to make corrections. Generally, use an Errata or Correction section at the end with information about the change that was made and have the actual text link down to that section. See also [[Code4Lib_Corrections]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Code4Lib Journal]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_wishlist&amp;diff=15277</id>
		<title>Umlaut wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_wishlist&amp;diff=15277"/>
				<updated>2012-06-19T16:22:57Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Some actual current future plans:&lt;br /&gt;
&lt;br /&gt;
* JournalTOCs ToC?&lt;br /&gt;
&lt;br /&gt;
* Use OCLC xISBN to find HT and Internet Archive/OCA matches?&lt;br /&gt;
&lt;br /&gt;
* Internet Archive -- use new OL/IA api, discover search-inside-the-book. &lt;br /&gt;
&lt;br /&gt;
* WorldCat, use new api, link directly to nearest public library in 'see also' or elsewhere. &lt;br /&gt;
&lt;br /&gt;
* CiteSeerX -- source of 'cited by' info, AND, most excitingly, open access pre-prints. But their Atom/RSS feeds (the only API I could find) don't seem to advertise enough info to actually use these features. Would need to talk to developer team -- possibly offer to help code? Also not entirely clear how big their corpus actually is, if it's worth it. &lt;br /&gt;
&lt;br /&gt;
* Try screen-scraping Google Scholar (and maybe Microsoft Academic) to get the open access full text links they find.  Also, there's a Springer API for open access content now. http://dev.springer.com/docs/Restful_operations&lt;br /&gt;
&lt;br /&gt;
* When no full text is found, provide link to search on Google Scholar, or Bing Academic?  Need to have sufficient metadata to create the search. Oct 2010 Library Technology Reports article has some ideas, I think. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''old''' Desired or planned features. &lt;br /&gt;
&lt;br /&gt;
* Check for similar articles from: http://biosemantics.org/jane/faq.php#api&lt;br /&gt;
&lt;br /&gt;
* Full-text availability check from http://chroniclingamerica.loc.gov/ -- check by title/city, check by lccn (?), able to check particular dates/link to particular dates and/or pages of paper?&lt;br /&gt;
&lt;br /&gt;
* Allow a service_response to have a tree relationship to children, so for instance alternate versions of a text can be attached as children of the main link, expandable by the user. &lt;br /&gt;
&lt;br /&gt;
* http://export.arxiv.org/api_help/   !!!!&lt;br /&gt;
&lt;br /&gt;
* PubMed Central full text lookup http://www.ncbi.nlm.nih.gov/entrez/query/static/esearch_help.html (SFX may already do this?)&lt;br /&gt;
&lt;br /&gt;
* Journal ToC from CiteULike&lt;br /&gt;
&lt;br /&gt;
* Parsing of formatted references from an entry screen. Use http://wing.comp.nus.edu.sg/parsCit/ package. Very interesting!  Or a similar UCOP package: http://purl.net/net/egh/hmm-citation-extractor/ See list of such packages here under &amp;quot;Other Parsing Tools&amp;quot; http://freecite.library.brown.edu/&lt;br /&gt;
&lt;br /&gt;
* LibraryThing open knowledge API for more data. http://www.librarything.com/blog/2008/08/free-web-services-api-to-common.php&lt;br /&gt;
&lt;br /&gt;
* Connect to internet linked movie database on movies: http://www.linkedmdb.org/&lt;br /&gt;
&lt;br /&gt;
* Add information about the conversation happening around an article with Scintilla if we have a URL, PMID or DOI (Alf at Scintilla would prefer us NOT to use the API for high-traffic. But we can copy his techniques internally to Umlaut. CrossRef and PubMed for &amp;quot;cited by&amp;quot; on DOI and PMID identifiers are a good idea. He has also reverse engineered the Scopus javascript api to allow server-side json access. http://hublog.hubmed.org/archives/001512.html):&lt;br /&gt;
     http://hublog.hubmed.org/archives/001609.html&lt;br /&gt;
     Unofficially it will return json:&lt;br /&gt;
     http://scintilla.nature.com/conversations?uri=info%3Adoi%2F10.1371%2Fjournal.pmed.0020124&amp;amp;format=json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* UMich Mirlyn for metadata enrichment? &lt;br /&gt;
     http://webservices.itcs.umich.edu/mediawiki/MLibraryAPI/index.php/Mirlynapi:Home&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* xISBN/thingISBN use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
&lt;br /&gt;
* LibraryLookup: http://xisbn.worldcat.org/liblook/index.htm  At least until xISBN is baked in we could provide a link to this service. Increases the chances of finding a desired book in the catalog through work set grouping. Used by LibX.&lt;br /&gt;
      http://xisbn.worldcat.org/liblook/resolve.htm?res_id=http://www.iucat.iu.edu&amp;amp;rft.isbn=0451530942&amp;amp;url_ver=Z39.88-2004&amp;amp;rft_val_fmt=info:ofi/fmt:kev:mtx:book&lt;br /&gt;
&lt;br /&gt;
* Journal covers from Ulrich's via screen-scraping (or Ulrich's/sersol built in api?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Connotea integration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fetch ToC from LC. Screen scrape, I guess? Or z3950? Any other content from LC?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Link to Books In Print ala Notre Dame. &lt;br /&gt;
http://www.library.nd.edu/eresources/findit/findit.cgi?doc_num=001939269&amp;amp;aleph_session=U5AVHRXD5QB1CGDFDSVJ9DSY2UA6QNCGVEU8EYRX9NNMIQ429Q-54668%22&lt;br /&gt;
example &lt;br /&gt;
&lt;br /&gt;
* bip search url? :&lt;br /&gt;
http://www.booksinprint.com/merge_shared/Search/advsearch.asp%3FdateState%3DY%26txtAction%3D%26BooleanSearch%3D%26SType%3Dadv%26collection%3DBIP%26QueryMode%3DSimple%26ResultCount%3D25%26ResultTemplate%3Dmbbookresult_fl.hts%26navPage%3D1%26SrchFrm%3DAdv%26ScoreThreshold%3D0%26Criteria1%3DISBN%26CriteriaText1%3D0838935370&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SFX plugin:  Notice when first title given is non-roman, and look for roman title to enhance metadata with when so. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* HIP and other OPAC searchers should pull ToC from MARC 505 when present.  And 856's judged to be ToC in ToC, not full text. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fix Umlaut Referent to more easily allow multiple authors. Architectural change neccessary to get a lot of this stuff working right. &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Cited by&amp;quot; service. Scopus via screen scraping? (scopus javascript api? http://www.scopus.com/scsearchapi/ See also http://hublog.hubmed.org/archives/001512.html ) ISI Web of Science is too hard to even screen scrape the interface is such a mess, but Scopus looks do-able.  Google scholar?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enhance metadata to have full metadata for a refworks etc export. Using: CrossRef?  Metalib?  Anything else?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* A general purpose responsecache. Schema: Date, service/source, key.  Use for caching image urls, ToC urls from LC, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fix Worldcat registry auto-discovery. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a Worldcat search that uses API, instead of screen scrape. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Switch OCA search to use OCA native APIs, instead of indexdata mirror index. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* fix unapi in umlaut. unapi to rsi?  For zotero. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Change background to use Spawn plugin instead of manual threading. Investigating using spawn with fork instead of thread (terry reese on limited pool of forks). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Crazy idea for an abstract interface/architecture to support querying web service apis that require client side javascript, like Google Books and Scopus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available. More generally, a clear architecture for providing localized doc delivery services in addition to a single ILL link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SFX adaptor: Add a &amp;quot;rollup&amp;quot; feature that pays attention to dates to avoid eliminating coverage.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_partial_html_API_javascript_helper&amp;diff=15276</id>
		<title>Umlaut partial html API javascript helper</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_partial_html_API_javascript_helper&amp;diff=15276"/>
				<updated>2012-06-19T16:22:21Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
THE CODE DOCUMENTED HERE IS DEPRECATED. PLEASE SEE INSTEAD: [[JQuery HTML Updater]]&lt;br /&gt;
&lt;br /&gt;
If you want to include [[Umlaut]]-generated HTML directly on a third party page via javascript, there is a javascript helper script to make that very easy. This helper uses the [[Umlaut partial html API]], but does everything for you.  The helper will update your divs, and keep polling Umlaut for new results, continuing to re-update your divs until Umlaut is finished.   How often it polls is configured by application config 'poll_wait_seconds', which defaults to 4 seconds. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Your page needs to include the JS Prototype library.  Currently, automatic inclusion of the Prototype library isn't working, so you'll need to include a &amp;lt;script&amp;gt; line to do so. You can link to the prototype library in Umlaut, see example below. &lt;br /&gt;
&lt;br /&gt;
You will then include an Umlaut javascript file, and then call the embedUmlaut() js function it supplies.  You'll need to pass some arguments to embedUmlaut: &lt;br /&gt;
&lt;br /&gt;
=== Umlaut base URL ===&lt;br /&gt;
&lt;br /&gt;
The first argument is your Umlaut base URL. This is not your link resolver base url which for Umlaut ends in /resolve, but the actual Umlaut application base URL, which should be the same, without the /resolve.  (Link to JHU example removed, because i think it was attracting malicious bot/spider traffic)&lt;br /&gt;
&lt;br /&gt;
=== Context object ===&lt;br /&gt;
&lt;br /&gt;
The second argument is a URL-formatted (KEV) [[OpenURL]] context object.&lt;br /&gt;
&lt;br /&gt;
=== Display section mappings ===&lt;br /&gt;
&lt;br /&gt;
The third argument is a javascript hash providing mappings from Umlaut html sections to HTML divs on your page. Umlaut html sections are configured in Umlaut in the &amp;quot;partial_html_map&amp;quot; configuration param, which by default is set to the &amp;quot;bg_update_map&amp;quot; config params :divs key. To see the sections in a default Umlaut installation, see: AppConfig::Base.bg_update_map [http://umlaut.rubyforge.org/svn/trunk/config/initializers/umlaut/resolve_views.rb in resolve_views in svn]. The :divs key of the hash there is an array of hashes, each individual hash has a :div_id key that corresponds to the html_sections id in this api response. For Umlaut developers, the :partial key tells you what [[Rails]] partial is used to generate this section. &lt;br /&gt;
&lt;br /&gt;
This mapping hash can also optionally use some javascript callbacks to perform behavior after or during loading of a particular section. In the following example, we'll demo using a javascript callback to only show a div for search_inside functionality if there are search_inside tools provided. &lt;br /&gt;
&lt;br /&gt;
=== General options ===&lt;br /&gt;
&lt;br /&gt;
The fourth argument is a hash of additional options to embedUmlaut. &lt;br /&gt;
&lt;br /&gt;
=== Other Details ===&lt;br /&gt;
&lt;br /&gt;
The umlaut_embed.js script will check if the javascript Prototype library is loaded into the host page, and load it if not. Among other things, this means you can use Prototype in your callbacks. &lt;br /&gt;
&lt;br /&gt;
The html loaded will sometimes include a &amp;quot;spinner&amp;quot; with a message &amp;quot;loading more&amp;quot;, if the content is not yet loaded. &lt;br /&gt;
&lt;br /&gt;
An example is best:&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;H1&amp;gt;Here is an article page. &amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;p&amp;gt;We're looking up Cytoplasmic Control of nuclear behavior by Masui. Of course normally this&lt;br /&gt;
     would be dynamically generated, not in static html like this.&amp;lt;p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- umlaut full text will be loaded here. You might want to include some initial content&lt;br /&gt;
       here for browsers without javascript. For browsers with javascript, this will be overwritten.--&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;my_fulltext&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;a href=&amp;quot;http://umlaut.university.edu/resolve?url_ver=Z39.88-2004&amp;amp;rft_val_fmt=info:ofi/fmt:kev:mtx:journal&amp;amp;rft_id=info:doi/10.1002/jez.1401770202&amp;amp;rfr_id=info:sid/university.edu:myapplication&amp;amp;rft.genre=article&amp;amp;rft.jtitle=J.%20Exp.%20Zool&amp;amp;rft.date=1971&amp;amp;rft.atitle=Cytoplasmic%20control%20of%20nuclear%20behavior&amp;amp;rft.aulast=Masui&amp;quot;&amp;gt;&lt;br /&gt;
        Link to umlaut&lt;br /&gt;
      &amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- we hide this div to start out with, our js callback later &lt;br /&gt;
       will show it there is full text. But we avoid a &amp;quot;spinner&amp;quot; showing up&lt;br /&gt;
       here before everything is fully loaded.  --&amp;gt;&lt;br /&gt;
  &amp;lt;div id=&amp;quot;my_search_inside&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div id=&amp;quot;my_cover&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div id=&amp;quot;my_see_also&amp;quot;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div id=&amp;quot;my_excerpts&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;!-- now the javascript to actually load content in those divs --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    // You have to generate an OpenURL context object somehow. &lt;br /&gt;
    // Normally this would be generated dynamically, not static HTML like this, of course.&lt;br /&gt;
    // You may want to include a rfr_id to identify your application as a source, demo below. &lt;br /&gt;
&lt;br /&gt;
    umlaut_openurl_kev_co = 'url_ver=Z39.88-2004&amp;amp;rft_val_fmt=info:ofi/fmt:kev:mtx:journal&amp;amp;rft_id=info:doi/10.1002/jez.1401770202&amp;amp;rfr_id=info:sid/university.edu:myapplication&amp;amp;rft.genre=article&amp;amp;rft.jtitle=J.%20Exp.%20Zool&amp;amp;rft.date=1971&amp;amp;rft.atitle=Cytoplasmic%20control%20of%20nuclear%20behavior&amp;amp;rft.aulast=Masui';&lt;br /&gt;
&lt;br /&gt;
    // where to find umlaut&lt;br /&gt;
    umlaut_base = 'http://umlaut.university.edu';&lt;br /&gt;
&lt;br /&gt;
    // Map of umlaut section id to: div id we want to put it on the page&lt;br /&gt;
    // Note the js call back for search_inside_wrapper, to only show the&lt;br /&gt;
    // div on our page if there are elements. Js callback function gets one&lt;br /&gt;
    // argument, which will be number of Umlaut responses in the section. &lt;br /&gt;
    // Note also that we can use Prototype in the callback. &lt;br /&gt;
&lt;br /&gt;
    umlaut_section_map = {&lt;br /&gt;
      'fulltext': 'my_fulltext',&lt;br /&gt;
      'highlighted_links': 'my_see_also',&lt;br /&gt;
      'excerpts': 'my_excerpts',&lt;br /&gt;
      'cover_image': 'my_cover',&lt;br /&gt;
      'search_inside': {'host_div_id': 'my_search_inside', &lt;br /&gt;
                                'after_update':&lt;br /&gt;
                                  function(count) {&lt;br /&gt;
                                    if ( count &amp;gt; 0) {&lt;br /&gt;
                                        $('my_search_inside').show();&lt;br /&gt;
                                    }&lt;br /&gt;
                                  }&lt;br /&gt;
                              }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      //global embedUmlaut options&lt;br /&gt;
      //demonstrate putting up an alert when Umlaut is done loading all content, which you&lt;br /&gt;
      //wouldn't want to do, but anyway. &lt;br /&gt;
      umlaut_options = {&lt;br /&gt;
        'all-complete-callback': function() { alert('All done!'); }&lt;br /&gt;
      };&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- include the prototype library --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://umlaut.university.edu/javascripts/prototype.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- now actually load the umlaut js helper, which will do the magic for you --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://umlaut.university.edu/javascripts/embed/umlaut-embed-func.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- and call embedUmlaut --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
       embedUmlaut(umlaut_base, umlaut_openurl_kev_co, umlaut_section_map, umlaut_options);&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_partial_html_API&amp;diff=15275</id>
		<title>Umlaut partial html API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_partial_html_API&amp;diff=15275"/>
				<updated>2012-06-19T16:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
The Umlaut partial HTML API is meant for when you want Umlaut to generate HTML, but you want to embed that HTML on an external page. The API will deliver sections of generated HTML, that you can include elsewhere. &lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
If you plan to include it via javascript, you will likely find it even more convenient to use the [[Umlaut partial html API javascript helper]], saving you even more work. The javascript helper uses the API behind the scenes. &lt;br /&gt;
&lt;br /&gt;
= Accessing the API =&lt;br /&gt;
&lt;br /&gt;
Supplied via the resolve/partial_html_sections actions. Instead of accessing the ordinary resolver base URL, you replace &amp;quot;resolve?&amp;quot; in your query with &amp;quot;resolve/partial_html&amp;quot;, eg http://umlaut.university.edu/resolve/partial_html? .  You send the OpenURL context object the same as you would for an ordinary resolve action, in URL or POST XML, etc.  &lt;br /&gt;
&lt;br /&gt;
By default, the API returns XML. To return json instead, include:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;umlaut.response_format=json&lt;br /&gt;
&lt;br /&gt;
To return jsonp, wrapped in a javascript procedure call:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;umlaut.response_format=jsonp&amp;amp;umlaut.jsonp=desiredJavascriptFunctionName&lt;br /&gt;
&lt;br /&gt;
= Response = &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;complete&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
When accessing Umlaut over an API, it's important to realize that the initial response from Umlaut may not include all Umlaut information. Umlaut continues to run services in the background that can generate responses and enhance metadata. &amp;lt;complete&amp;gt; will contain 'true' or 'false' depending on whether background services are still executing. Further elements in the response provide information on what is still executing, and how to retrieve further information.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;in_progress&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This block will only be present when &amp;lt;complete&amp;gt; is 'false'.  It provides information on completion status, and how to refresh the response for more information prepared in the background. For more information, see the documentation in [[Umlaut full API#&amp;lt;in_progress&amp;gt;]], the block is the same here.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;html_section&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
What you really want is contained in 0 or more html_section blocks. Each one contains some generated HTML, along with some metadata about it. The id attribute of &amp;lt;html_section&amp;gt; tells you which section it is. What sections exist is configured in Umlaut in the &amp;quot;partial_html_map&amp;quot; configuration param, which by default is set to the &amp;quot;bg_update_map&amp;quot; config params :divs key. To see the sections in a default Umlaut installation, see: [http://umlaut.rubyforge.org/svn/trunk/config/environment.rb environment.rb in svn], look for bg_update_map. The :divs key of the hash there is an array of hashes, each individual hash has a :div_id key that corresponds to the html_sections id in this api response. For Umlaut developers, the :partial key tells you what Rails partial is used to generate this section. &lt;br /&gt;
&lt;br /&gt;
The sections and their contents can be customized by the Umlaut administrator by changing the partial_html_map config (and/or the bg_update_map config). &lt;br /&gt;
&lt;br /&gt;
Inside an html_section in the response there is a bit of metadata for you:&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;included_services&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
What ServiceTypeValues are included in this html section. This specifies what type of data is in this block. For a list of possible ServiceTypeValues in a default Umlaut configuration, see [http://umlaut.rubyforge.org/svn/trunk/db/orig_fixed_data/service_type_values.yml service_type_values.yml] in umlaut SVN. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;service_load_complete&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
true or false. False if this html_section might change as more background services run, true if this html_section is completely finished. &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;response_count&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
How many Umlaut response objects were used to generate this block?  Can be useful if you want to do something different with 0 (no content) vs. non-0 (content). &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;html_content&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The actual html content. It is of course standardly XML-escaped in XML, or json-escaped in json.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_full_API&amp;diff=15273</id>
		<title>Umlaut full API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_full_API&amp;diff=15273"/>
				<updated>2012-06-19T16:21:24Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Umlaut has a complete api for resolve actions, which can be delivered in XML or json. For simple uses of embedding Umlaut content on a page, you may find the [[Umlaut partial html API]] or [[Umlaut partial html API javascript helper]] easier to use. &lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
= Accessing the API =&lt;br /&gt;
&lt;br /&gt;
The api can be accessed at the resolve/api action. For instance, if your umlaut is at umlaut.somewhere.edu/, http://umlaut.somewhere.edu/resolve/api?&lt;br /&gt;
&lt;br /&gt;
Append an OpenURL context object to that URL. POST is also supported, including XML formatted context objects. You can also include the usual umlaut directive parameters. &lt;br /&gt;
&lt;br /&gt;
This is exactly what you'd send to the ordinary Umlaut link resolver base url for link resolver service in html; you are just replacing /resolve? with /resolve/api? &lt;br /&gt;
&lt;br /&gt;
By default, the API returns XML. To return json instead, include:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;umlaut.response_format=json&lt;br /&gt;
&lt;br /&gt;
To return jsonp, wrapped in a javascript procedure call:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;umlaut.response_format=jsonp&amp;amp;umlaut.jsonp=desiredJavascriptFunctionName&lt;br /&gt;
&lt;br /&gt;
= API Response =&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;request_id&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;request_id&amp;gt;701544&amp;lt;/request_id&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umlaut's internal request id. API clients usually don't need this, but can be useful if you want a unique identifier for this OpenURL request. May also be useful if you want to call other Umlaut actions on this same OpenURL request, ensuring that Umlaut matches to the same request, by including &amp;amp;umlaut.request_id in your request.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;context_object_xml&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Contains an OpenURL context object in XML serialization. May include enhanced citation metadata from Umlaut.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;complete&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
When accessing Umlaut over an API, it's important to realize that the initial response from Umlaut may not include all Umlaut information. Umlaut continues to run services in the background that can generate responses and enhance metadata. &amp;lt;complete&amp;gt; will contain 'true' or 'false' depending on whether background services are still executing. Further elements in the response provide information on what is still executing, and how to retrieve further information. &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;in_progress&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
'''example''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;in_progress&amp;gt;&lt;br /&gt;
    &amp;lt;refresh_url&amp;gt;http://findit.library.jhu.edu/resolve/api?umlaut.request_id=701544&amp;amp;amp;.....&amp;lt;/refresh_url&amp;gt;    &lt;br /&gt;
    &amp;lt;refresh_url_path&amp;gt;/resolve/api?umlaut.request_id=701544&amp;amp;amp;.....&amp;lt;/refresh_url_path&amp;gt;&lt;br /&gt;
    &amp;lt;requested_wait_seconds&amp;gt;4&amp;lt;/requested_wait_seconds&amp;gt;&lt;br /&gt;
    &amp;lt;services_in_progress&amp;gt;       &lt;br /&gt;
          &amp;lt;service name=&amp;quot;fulltext&amp;quot; /&amp;gt;         &lt;br /&gt;
          &amp;lt;service name=&amp;quot;holding&amp;quot; /&amp;gt;         &lt;br /&gt;
          &amp;lt;service name=&amp;quot;table_of_contents&amp;quot; /&amp;gt;         &lt;br /&gt;
          &amp;lt;service name=&amp;quot;highlighted_link&amp;quot; /&amp;gt;         &lt;br /&gt;
          &amp;lt;service name=&amp;quot;audio&amp;quot; /&amp;gt;         &lt;br /&gt;
          &amp;lt;service name=&amp;quot;holding_search&amp;quot; /&amp;gt;        &lt;br /&gt;
    &amp;lt;/services_in_progress&amp;gt;&lt;br /&gt;
  &amp;lt;/in_progress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This block will only be present when &amp;lt;complete&amp;gt; is 'false'. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;refresh_url&amp;gt; provides a url the client can request again to see further results. If the client user agent does not support cookies, then this refresh_url must be used to continue retrieving results from the same Umlaut request, instead of accidentally creating a new request. Even if your client does support cookies, using the &amp;lt;refresh_url&amp;gt; is safest--simply refreshing the URL you loaded initially may accidentally create a new request. (The refresh_url given includes an umlaut.request_id parameter to ensure connection to the proper request). '''note well:''' The URL, like any other data in XML, is XML-escaped, and needs to be un-escaped before using. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;requested_wait_seconds&amp;gt;   is a request from Umlaut for the client to wait this many seconds before asking for more results.  Umlaut has no way to enforce this, it's only a request. Please wait a reasonable amount of time to avoid overloading Umlaut however. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;services_in_progress&amp;gt;  lists the ServiceTypeValues that may still have responses coming, that may not be complete.  A list of all possible ServiceTypeValues in a default Umlaut installation can be found in the [[http://umlaut.rubyforge.org/svn/trunk/db/orig_fixed_data/service_type_values.yml Umlaut code]].&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;service_statuses&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
This block provides information on the internal service plug-ins involved in this Umlaut request, and what their status is. In most cases, an API client will not need this information. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;status&amp;gt; can be one of:&lt;br /&gt;
* in_progress : Currently executing&lt;br /&gt;
* queued : Background service which is queued up, but not yet running. &lt;br /&gt;
* succesful : completed succesfully (may or may not have generated any responses)&lt;br /&gt;
* failed_fatal:  A fatal error condition was encountered, for instance a bug in Umlaut code. &lt;br /&gt;
* failed_temporary: An error condition was encountered, but Umlaut ''may'' try to run the service again, the error was not fatal, for instance an external service timed out. &lt;br /&gt;
&lt;br /&gt;
These constants are defined in [http://umlaut.rubyforge.org/svn/trunk/app/models/dispatched_service.rb dispatched_service.rb]&lt;br /&gt;
&lt;br /&gt;
If the &amp;lt;status&amp;gt; is failed_fatal or failed_temporary, there may be error information in an &amp;lt;exception_info&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;responses&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The meat, the actual response or 'target' data generated by Umlaut. These responses are grouped by ServiceTypeValues. A given ServiceTypeValue identifies a certain type of service, like full text, or library holdings. The list of possible ServiceTypeValues in a default Umlaut installation can be found in the relevant Umlaut distribution data file  [http://umlaut.rubyforge.org/svn/trunk/db/orig_fixed_data/service_type_values.yml service_type_values.yml]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;responses&amp;gt; block contains 0 or more &amp;lt;type_group&amp;gt; blocks. Each type_group has a name attribute identifiying the ServiceTypeValue, also provides you with user-displayable label for this type, and tells you if all services that generate this type are complete or not. A type_group will only be present if it contains responses. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;type_group name=&amp;quot;abstract&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;display_name&amp;gt;Abstract&amp;lt;/display_name&amp;gt;&lt;br /&gt;
  &amp;lt;display_name_plural&amp;gt;Abstracts&amp;lt;/display_name_plural&amp;gt;&lt;br /&gt;
  &amp;lt;complete&amp;gt;true&amp;lt;/complete&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  [...]&lt;br /&gt;
&amp;lt;/type&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;response&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
Each type_group will have one or more &amp;lt;response&amp;gt; blocks in it. A &amp;lt;response&amp;gt; represents an individual piece of data generated by umlaut. This is what most clients will be most interested in, but it's tricky to deal with because the contents of a &amp;lt;response&amp;gt; are quite variable. They can vary between responses for different ServiceTypeValues, and there can even be specialized data only in responses belong to a particular Service plug-in.  All the data that Umlaut has is included here, including some really intended for internal use only. &lt;br /&gt;
&lt;br /&gt;
However, don't despair, there are a few things you can count on. The &amp;lt;display_text&amp;gt; element will always include the label or heading that is to be used for the response. A &amp;lt;notes&amp;gt; element may be present with additional explanatory text. These alone, plus a linking url, will be enough for many clients. &lt;br /&gt;
&lt;br /&gt;
Standard internal metadata includes a &amp;lt;service&amp;gt; element which will contain the name of the service plug-in that generated this response. (Match to services listed in &amp;lt;service_statuses&amp;gt; above). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Linking url: &amp;lt;umlaut_passthrough_url&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
You may see the &amp;lt;url&amp;gt; element in the response and be tempted to use it to send the user to this response. '''You are strongly cautioned not to do so.'''  In the Umlaut architecture, urls can be generated on-demand when the user clicks on an element, not at time of original response (this is because even generating the url is sometimes an expensive operation). This means that the &amp;lt;url&amp;gt; element is not guaranteed to be there, and when it is there is not guaranteed to be accurate. On top of all that, the application of a proxy pass through won't be applied yet to the url found here. &lt;br /&gt;
&lt;br /&gt;
You should instead use the &amp;lt;umlaut_passthrough_url&amp;gt; element. This will contain a URL pointing to your umlaut installation, of the form: http://umlaut.university.edu/link_router/index/7447333&lt;br /&gt;
&lt;br /&gt;
When this URL is accessed, Umlaut will '''redirect''' the user to the actual destination--after calculating that destination, and applying any proxy or other filters, etc. In some cases it may end up redirecting to the same destination as &amp;lt;url&amp;gt;, but in other cases it may be somewhat different, or may work even if &amp;lt;url&amp;gt; was not present.&lt;br /&gt;
&lt;br /&gt;
'''Please use the umlaut_passthrough_url for linking.'''&lt;br /&gt;
&lt;br /&gt;
==== Other Conventions ====&lt;br /&gt;
&lt;br /&gt;
Each ServiceTypeValue has other conventions for elements that will be present in that ServiceTypeValue. These are documented in [http://umlaut.rubyforge.org/api/classes/ServiceResponse.html ServiceResponse] in the Conventional Keys section.&lt;br /&gt;
&lt;br /&gt;
==== example ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;response id=&amp;quot;7447899&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;service&amp;gt;JH_SFX&amp;lt;/service&amp;gt;&lt;br /&gt;
        &amp;lt;!-- Attributes really vary depending on particular service, this makes it kind of tricky to deal with in an API. See documentation in ServiceResponse for conventions. Reccommend that you use umlaut_passthrough_url for url. Final destination url isis calculated on-demand by umlaut. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;display_text&amp;gt;Free E- Journals&amp;lt;/display_text&amp;gt;&lt;br /&gt;
        &amp;lt;url&amp;gt;http://dl.lib.brown.edu/radicalamerica/shelf.html&amp;lt;/url&amp;gt;&lt;br /&gt;
        &amp;lt;notes&amp;gt;&amp;lt;/notes&amp;gt;&lt;br /&gt;
        &amp;lt;coverage&amp;gt;&lt;br /&gt;
Available from 1967 volume: 1 issue: 2  until 1987 volume: 21 issue: 6.&lt;br /&gt;
        &amp;lt;/coverage&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_target_name&amp;gt;MISCELLANEOUS_FREE_EJOURNALS&amp;lt;/sfx_target_name&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_base_url&amp;gt;http://sfx.library.jhu.edu:8000/sfxlcl3&amp;lt;/sfx_base_url&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_obj_index&amp;gt;1&amp;lt;/sfx_obj_index&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_target_index&amp;gt;1&amp;lt;/sfx_target_index&amp;gt;&lt;br /&gt;
        &amp;lt;source&amp;gt;SFX/FT::NO_FILL_IN&amp;lt;/source&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_request_id&amp;gt;2688845&amp;lt;/sfx_request_id&amp;gt;&lt;br /&gt;
        &amp;lt;sfx_target_service_id&amp;gt;&lt;br /&gt;
110976638852341        &amp;lt;/sfx_target_service_id&amp;gt;&lt;br /&gt;
        &amp;lt;umlaut_passthrough_url&amp;gt;http://findit.library.jhu.edu/link_router/index/7447899&amp;lt;/umlaut_passthrough_url&amp;gt;&lt;br /&gt;
      &amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_URL_parameters&amp;diff=15272</id>
		<title>Umlaut URL parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_URL_parameters&amp;diff=15272"/>
				<updated>2012-06-19T16:21:09Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Umlaut has a few custom URL parameters (can also be sent in a POST request) to control Umlaut behavior. All start with the prefix &amp;quot;umlaut.&amp;quot;. These are generally added onto an OpenURL GET request. &lt;br /&gt;
&lt;br /&gt;
===umlaut.request_id===&lt;br /&gt;
&lt;br /&gt;
Specify an already created OpenURL request to act upon.  Without this, Umlaut will still try to connect to an already created request *within the same session* based on a cache of OpenURLs seen in that session. But this process is not perfect. With umlaut.request_id, you can assure you are operating on the same request, and even if the client does not have cookies or a session. &lt;br /&gt;
&lt;br /&gt;
===umlaut.referent_id===&lt;br /&gt;
&lt;br /&gt;
Specify an Umlaut Referent object to re-use.  Umlaut referent object represents a particular citation. Unlike umlaut.request_id, won't re-use an entire request (with responses and state), but only the specified citation. &lt;br /&gt;
&lt;br /&gt;
===umlaut.skip_resolve_menu===&lt;br /&gt;
&lt;br /&gt;
Set to &amp;quot;false&amp;quot; to override umlaut's configuration for conditionally skipping the the resolve menu and going straight to content. umlaut.skip_resolve_menu=false forces display of full resolve menu. &lt;br /&gt;
&lt;br /&gt;
===umlaut.skip_resolve_menu_for_type===&lt;br /&gt;
&lt;br /&gt;
Set to the name(s) of [http://umlaut.rubyforge.org/svn/trunk/db/orig_fixed_data/service_type_values.yml Umlaut service types] (comma delimited), to force menu skipping (direct linking) for the first response found from any of the service types named. &lt;br /&gt;
&lt;br /&gt;
===umlaut.link_with_frameset===&lt;br /&gt;
&lt;br /&gt;
Set to &amp;quot;false&amp;quot; to force direct linking *without* the banner/frameset, just direct to vendor url. &lt;br /&gt;
&lt;br /&gt;
===umlaut.response_format===&lt;br /&gt;
&lt;br /&gt;
Generally used for API requests, value can be &amp;quot;xml&amp;quot;, &amp;quot;json&amp;quot;, or &amp;quot;jsonp&amp;quot;. In case of jsonp, umlaut.jsonp=jsFunctionName can be used to determine the js function name that will be generated with the [http://ajaxian.com/archives/jsonp-json-with-padding jsonp output]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_Setup&amp;diff=15271</id>
		<title>Umlaut Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_Setup&amp;diff=15271"/>
				<updated>2012-06-19T16:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
= Umlaut First-Time Setup and Configuration =&lt;br /&gt;
&lt;br /&gt;
''In all these instructions '''$Umlaut''' in a path stands for the location you have installed Umlaut.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. Create Local Config Directories ==&lt;br /&gt;
&lt;br /&gt;
To create directories for your local config, cd into your Umlaut directory, and run:&lt;br /&gt;
&lt;br /&gt;
./script/generate umlaut_local&lt;br /&gt;
&lt;br /&gt;
This will create several directories including the one we care about now:  $Umlaut/config/umlaut_config/&lt;br /&gt;
&lt;br /&gt;
Mysql by default has no password for the root user. If you have set a root password, you will need to add this to $Umlaut/config/database.yml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:'''Explanation''': In a normal Rails app, your local config goes in places like config/environment.rb and config/database.yml.  But Umlaut config/environment.rb has  Umlaut application fixed settings in it, mixing in your local settings would be confusing. Plus, that config directory is in the Umlaut overall SVN, you might want to SVN control your local config seperately.&lt;br /&gt;
&lt;br /&gt;
:Therefore we have an architecture to put all local config (and other local customization) in seperate local directories. The goal is that you should never have to edit any of the files that came with the Umlaut distribution to make local customizations, you should always be able to do this through local config. To learn more about this architecture, and how to put your local config in your own local svn, see [[Umlaut Local Configuration Architecture]].&lt;br /&gt;
&lt;br /&gt;
== 2. Configure your database connection information ==&lt;br /&gt;
&lt;br /&gt;
A typical Rails app uses three databases: a production db, a development db, and a test db. At a minimum you need a production db. A development db is probably also neccessary--Umlaut doesn't use tests right now (we are ashamed), so you don't really need a test db.&lt;br /&gt;
&lt;br /&gt;
In Umlaut (a little bit different than standard Rails), your local connection information for your dbs is stored in $Umlaut/config/umlaut_config/database.yml.   There should already be an example file there with some hints in it.&lt;br /&gt;
&lt;br /&gt;
We reccommend MySQL 5.x for use with Umlaut. ( SQLite3 won't work, unless you figure out a way to compile it with concurrency support). Create your databases in MySQL. We recommend making sure they are set to UTF8 char encoding. (eg, (CREATE DATABASE my_db_name DEFAULT CHARACTER SET utf8).   Don't create any tables in your databases yet, that will be done automatically. Do fill out your umlaut_config/database.yml file to point at the right place.&lt;br /&gt;
&lt;br /&gt;
For search functions (manually entered journal name or citation), Umlaut uses a direct db connection to your SFX instance. You should use the MySQL utility to create a new user in the SFX MySQL instance, which is granted only select permissions to the SFX databases.  Then, you can fill out your SFX direct to db connection information in config/umlaut_config/database.yml. &lt;br /&gt;
&lt;br /&gt;
If you can't do this, or don't want to do this now, talk to Jonathan, it may be possible to set up other functionality. Umlaut used to support a bulk export from SFX instead of a live db connection, but that functionality has atrophied. It can in theory be brought back if needed.&lt;br /&gt;
&lt;br /&gt;
== 3. Create your database tables ==&lt;br /&gt;
&lt;br /&gt;
Once your dbs are configured in database.yml, you can have Rails create all the neccesary tables for you by running (from the Umlaut directory):&lt;br /&gt;
&lt;br /&gt;
:rake db:schema:load&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That will create tables in your development database. To create them in your production database too:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:rake db:schema:load RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
== 4.  Set up initial Umlaut data ==&lt;br /&gt;
&lt;br /&gt;
Now you've created your databases and tables, but there is some initial fixed data that need to be in those tables for Umlaut to work with. To add this to your database, cd into your $UMLAUT directory, and run:&lt;br /&gt;
&lt;br /&gt;
:rake umlaut:load_initial_data&lt;br /&gt;
&lt;br /&gt;
And again for production:&lt;br /&gt;
&lt;br /&gt;
:rake umlaut:load_initial_data RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
== 5.  Set up your Institutions and Services ==&lt;br /&gt;
&lt;br /&gt;
What functions your Umlaut installation will have will depend on which services you configure. Services are configured in $Umlaut/config/umlaut_config/services.yml  .   An individual user connects with given services by association to Institutions. Each Institution has a collection of services, and an individual user is associated with one more institutions.&lt;br /&gt;
&lt;br /&gt;
To begin with, you could define just one default institution (that all users will be associated with) in institutions.yml, and give it a few services. To start out with, just configure an SFX service pointing to your SFX installation. Comment out the others. As you know a service is working, you can add in another.&lt;br /&gt;
&lt;br /&gt;
Note: The A-Z list and journal name lookup will only currently work if using the direct connection to the SFX database.&lt;br /&gt;
&lt;br /&gt;
== 6. Review additional local configuration ==&lt;br /&gt;
&lt;br /&gt;
There are several files in $Umlaut/config/umlaut_config/initializers/umlaut that contain additional local configuration parameters. A bunch of examples are provided for you, you'll have to un-comment the line and set a value if you want to locally configure a particular property. &lt;br /&gt;
&lt;br /&gt;
There are only a few that are really best set right away, all in umlaut_config/initializers/umlaut/umlaut_properties.rb&lt;br /&gt;
* You may want to set your local application name and a URL to an image for a 'link resolver button'. The button is mainly only used in Umlaut 'search' functionality (look up a manually typed in citation or journal name). &lt;br /&gt;
* You will definitely need to point AppConfig::Base.main_sfx_base_url to your SFX base URL. This is not used in general link resolver menu functions, but may be used in 'search' function to look up a manually typed in journal name or citation. It is also used on Umlaut's error page, to give the user an option of going to the native original SFX in an error condition. &lt;br /&gt;
* You may want to set AppConfig::Base.help_url , which is also used on error pages. &lt;br /&gt;
&lt;br /&gt;
There's really nothing else here you need to change to get Umlaut to work properly for you, but feel free to look around in the other files in initializers to see what sorts of things you can customize (an awful lot, sometimes by writing custom logic in ruby code to determine a particular Umlaut decision.)&lt;br /&gt;
&lt;br /&gt;
== 7. Nightly maintenance ==&lt;br /&gt;
&lt;br /&gt;
Some maintenance routines meant to be run nightly can be executed by cd'ing to your $Umlaut directory and running:&lt;br /&gt;
&lt;br /&gt;
:rake umlaut:nightly_maintenance RAILS_ENV=production&lt;br /&gt;
&lt;br /&gt;
To put that in a cron job, use this (with parens, where $Umlaut represents your umlaut install directory as usual):&lt;br /&gt;
&lt;br /&gt;
:( cd $Umlaut &amp;amp;&amp;amp; /usr/bin/rake umlaut:nightly_maintenance RAILS_ENV=production )&lt;br /&gt;
&lt;br /&gt;
Or leave  the RAILS_ENV=production off to perform maintainance on your dev database.&lt;br /&gt;
&lt;br /&gt;
If you don't put it in a cron job yet, you might want to run this manually from time to time, and probably once now to begin.&lt;br /&gt;
&lt;br /&gt;
== Next Steps? ==&lt;br /&gt;
&lt;br /&gt;
To try out Umlaut, cd into the $Umlaut directory and run &amp;quot;./script/server&amp;quot;  to launch the Rails app. (Be sure you've installed mongrel with 'sudo gem install mongrel', in which case Umlaut will be started with the mongrel environment. The default WEBrick environment will not work for Umlaut!). You'll then connect to Umlaut on &lt;br /&gt;
&lt;br /&gt;
 http://yourservername.tld:3000  &lt;br /&gt;
&lt;br /&gt;
The resolver base URL will be:  &lt;br /&gt;
&lt;br /&gt;
 http://yourservername.tld:3000/resolve?.&lt;br /&gt;
&lt;br /&gt;
The A-Z search interface will be: &lt;br /&gt;
&lt;br /&gt;
 http://yourservername.tld:3000/search&lt;br /&gt;
&lt;br /&gt;
 (should also work on straight http://yourservername.tld:3000/)&lt;br /&gt;
&lt;br /&gt;
This is a fine way to start it just for testing, but to deploy it for real see [[Umlaut Deployment]].&lt;br /&gt;
&lt;br /&gt;
You may also be interested in providing your own customized header, footer, or stylesheets. For this, and more localization, you'll find it helpful to see [[Umlaut Local Configuration Architecture]].&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_SFX_statistics_gotchas&amp;diff=15270</id>
		<title>Umlaut SFX statistics gotchas</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_SFX_statistics_gotchas&amp;diff=15270"/>
				<updated>2012-06-19T16:20:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Okay, there are a couple gotchas with your SFX statistics reports when you are using Umlaut. These are really problems/issues with any SFX API use, they are not unique to Umlaut. &lt;br /&gt;
&lt;br /&gt;
If you're using Umlaut, all link resolver menu displays that go &lt;br /&gt;
through Umlaut will make it to SFX as &amp;quot;API&amp;quot; requests. This has two &lt;br /&gt;
consequences:&lt;br /&gt;
&lt;br /&gt;
== Include multi_obj_xml format ==&lt;br /&gt;
&lt;br /&gt;
In your SFX report generation, you need to make sure to select &lt;br /&gt;
&amp;quot;multi_obj_xml&amp;quot; under &amp;quot;Formats&amp;quot;.  The default is just having &amp;quot;html&amp;quot; &lt;br /&gt;
selected here, but that means your report will only include browsers &lt;br /&gt;
that went straight to SFX, it won't include any Umlaut requests.  &lt;br /&gt;
Selecting both &amp;quot;html&amp;quot; and &amp;quot;multi_obj_request&amp;quot; will give you both.&lt;br /&gt;
&lt;br /&gt;
== clickthrough statistics no longer valid == &lt;br /&gt;
&lt;br /&gt;
Extensive use of the SFX API completely messes up SFX &amp;quot;clickthrough&amp;quot; reports.  Every single API &lt;br /&gt;
request is recorded by SFX as both a &amp;quot;request&amp;quot; and a simultaneous &lt;br /&gt;
&amp;quot;clickthrough&amp;quot; for every single target included in the menu generated.   &lt;br /&gt;
&lt;br /&gt;
This is not unique to Umlaut, it's true of any SFX API use.  This means &lt;br /&gt;
that if you are looking at format:multi_obj_xml in your report, &lt;br /&gt;
clickthroughs are entirely unreliable, there is no easy way to get &lt;br /&gt;
anything useful out of them.  And if you're using Umlaut, then all (or &lt;br /&gt;
nearly all) of your SFX use is multi_obj_xml, so you don't have reliable &lt;br /&gt;
clickthrough stats.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;request&amp;quot; stats, as opposed to &amp;quot;clickthrough&amp;quot; stats are, as far as I &lt;br /&gt;
know, still reliable.  &lt;br /&gt;
&lt;br /&gt;
I have reported the bug with SFX API use and clickthrough statistics to &lt;br /&gt;
Ex Libris, but they didn't seem very concerned about it. If we're &lt;br /&gt;
lucky, it won't be a problem in SFX 4.0.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_Local_Configuration_Architecture&amp;diff=15269</id>
		<title>Umlaut Local Configuration Architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_Local_Configuration_Architecture&amp;diff=15269"/>
				<updated>2012-06-19T16:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
== Principles/Goals: ==&lt;br /&gt;
&lt;br /&gt;
# Ideally you will not need to edit the common Umlaut codebase to make purely local customizations. All local customizations should occur via various types of configuration options, with the common Umlaut codebase being untouched - except with changes of wider applicability you submit back to the common codebase.&lt;br /&gt;
# This means any code or config for local customization will ideally be kept clearly distinct from the common codebase.&lt;br /&gt;
# If you like, you should be able to keep any of your local code or config files in your own local SVN or CVS repository, while at the same time getting shared codebase Umlaut code from the central Umlaut repository, combined together in a working Umlaut installation. (You might or might not want your production Umlaut to be an SVN working copy, but if you are a developer you will certainly want your development copy to be!)&lt;br /&gt;
&lt;br /&gt;
To accomplish this required doing things a tiny bit different than standard Rails.  &lt;br /&gt;
:''We realized after the fact that the Rails Engines plugin might be a great solution to those Goals, requiring less that's 'not the Rails way', and may explore refactoring Umlaut to be an Engines plug-in. But hasn't happened yet.''&lt;br /&gt;
&lt;br /&gt;
Where in a normal Rails app you would customize various files in the config directory, in Umlaut the files in the config directly have common Umlaut configuration necessary for any Umlaut environment, but your local config is instead in files in config/umlaut_config.  There are files used in umlaut_config that look very much like the standard Rails config files (eg database.yml, environment.rb), and also some Umlaut specific ones (eg services.yml, institutions.yml).&lt;br /&gt;
&lt;br /&gt;
== Directory Locations For Local Content ==&lt;br /&gt;
umlaut_config is just one of Umlaut's locations where local and localized code, config, and data lives:&lt;br /&gt;
&lt;br /&gt;
* $Umlaut/config/umlaut_config: local configuration&lt;br /&gt;
* $Umlaut/public/local : Local graphics and other resources that can be served directly by the web server. &lt;br /&gt;
* $Umlaut/app/views/layouts/local : Local layouts (Used to put local banner, footer, stylesheets etc. on your pages)&lt;br /&gt;
* $Umlaut/app/views/local : Used to store any local Rails 'views', entirely customized page layouts of Umlaut functionality for local needs. &lt;br /&gt;
&lt;br /&gt;
Other locations that are '''NOT yet used''', but would be reasonable extensions of this architecture in the future:&lt;br /&gt;
&lt;br /&gt;
* $Umlaut/app/controllers/local&lt;br /&gt;
* $Umlaut/app/models/local&lt;br /&gt;
&lt;br /&gt;
== Generation of local files ==&lt;br /&gt;
&lt;br /&gt;
There is a a generator to create all these locations, and seed them with some sample data - since we want to make it easy to control them in your own SVN, you don't get even these local directory locations from the Umlaut svn. &lt;br /&gt;
&lt;br /&gt;
You may already have run the generator to create these files from the [Umlaut Setup] step, but if not, change into $Umlaut directory and run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;./script/generate umlaut_local&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't worry if you run this twice; it'll warn and prompt you before over-writing any existing files. &lt;br /&gt;
&lt;br /&gt;
== Rake Tasks to Aid in Management of Local Locations ==&lt;br /&gt;
&lt;br /&gt;
Integrating somewhat elegantly with Rails means that your local content is spread accross several different directories. Umlaut provides some rake tasks to help you control them in your own local svn. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:We also provide some rake tasks to perform svn operations on all of these local locations at once.&lt;br /&gt;
&lt;br /&gt;
;rake &amp;lt;nowiki&amp;gt;umlaut_lcl:import_to_svn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:You've generated all this stuff, and added your own local content. Run this to add it all to your own local SVN--or any other SVN you have access to to store your local config. You'll be prompted for an SVN base path.  Make sure to run umlaut_lcl:commit too, this operation does not commit any files!&lt;br /&gt;
&lt;br /&gt;
;rake &amp;lt;nowiki&amp;gt;umlaut_lcl:checkout&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Let's say you already have your local files in your own SVN, but now you doing a new Umlaut install for whatever reason. This rake task will pull all your local stuff down en masse and put it into the new install. You will be prompted for an SVN base. &lt;br /&gt;
&lt;br /&gt;
;rake &amp;lt;nowiki&amp;gt;umlaut_lcl:update&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:svn update all local directory locations.&lt;br /&gt;
&lt;br /&gt;
;rake &amp;lt;nowiki&amp;gt;umlaut_lcl:commit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:svn commit all local directory locations.&lt;br /&gt;
&lt;br /&gt;
;rake &amp;lt;nowiki&amp;gt;umlaut_lcl:status&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Runs svn status on all local directory locations at once.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you need to create an svn repo on a Linux box it's as easy as:&lt;br /&gt;
&lt;br /&gt;
mkdir /home/username/svn&lt;br /&gt;
&lt;br /&gt;
svnadmin create /home/username/svn&lt;br /&gt;
&lt;br /&gt;
Then you can run the above rake tasks.&lt;br /&gt;
&lt;br /&gt;
== A Locally Customized Layout ==&lt;br /&gt;
&lt;br /&gt;
In addition to  config files in umlaut_config, the one piece of local customization that almost everyone will do first is creating a local layout for your own look and feel. This can be fairly easily done even to those new to Ruby Rails. In Rails, there are template wrappers (or wrapper templates?) known as 'layouts'.  We'll walk you through customizing an Umlaut layout to your local needs, and saving it in a local location.&lt;br /&gt;
&lt;br /&gt;
Start out by copying the default resolver layout from $Umlaut/app/views/layouts/resolve_basic.rhtml to $Umlaut/app/views/layouts/local/myuniversity_resolve_layout.rhtml.&lt;br /&gt;
&lt;br /&gt;
It's this copy now in local that you'll modify.&lt;br /&gt;
&lt;br /&gt;
* Don't have a directory at .../layouts/local?  See the above section! You need to run &amp;quot;rake umlaut_lcl:generate&amp;quot; and it'll make one for you. Or you could just create it by hand. &lt;br /&gt;
* In addition to the resolve_basic.rhtml, some other example locally customized resolve layouts are distributed with umlaut in $Umlaut/app/views/layouts/distribution. You could start with one of these instead, or use them to see what's possible.&lt;br /&gt;
&lt;br /&gt;
Now edit this local copy to your heart's content. Change the header, change the footer. Link to a different stylesheet (perhaps your want to keep your own custom stylesheet in $Umlaut/public/local, and use the Rails methods to link to it). You should not disturb the declerations that looks like this:&lt;br /&gt;
&lt;br /&gt;
:render(:partial =&amp;gt; &amp;quot;layout_helpers/resolve_head_content&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
:render(:partial =&amp;gt; &amp;quot;layout_helpers/resolve_body_open&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Because they bring in some standard Umlaut functionality. But just about everything else is fair game.&lt;br /&gt;
&lt;br /&gt;
Now you've got your layout all customized, how do you get your Umlaut installation to use it? (Of course, really, you'd want to get Umlaut to use it as you are developing it, so you can see how it looks!).&lt;br /&gt;
&lt;br /&gt;
In your local config file at $Umlaut/config/umlaut_config/environment.rb, add (or uncomment) this line:&lt;br /&gt;
&lt;br /&gt;
:config.app_config.resolve_layout = &amp;quot;local/myuniversity_resolve_layout.rhtml&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Start (or restart) Umlaut, and it should now be using your localized layout. Neat, huh?&lt;br /&gt;
&lt;br /&gt;
This gives an example of how Umlaut localization is meant to work in general. Note how you didn't need to edit any of the files that came from Umlaut SVN to make this customization.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_Installation&amp;diff=15268</id>
		<title>Umlaut Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_Installation&amp;diff=15268"/>
				<updated>2012-06-19T16:20:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
To install Umlaut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. Make sure you have a modern Ruby ==&lt;br /&gt;
&lt;br /&gt;
Install a 1.8.x version of ruby, ruby 1.9 is still considered experimental. The Rails web page says &amp;quot;We recommend Ruby 1.8.7 for use with Rails. Ruby 1.8.6, 1.8.5, 1.8.4 and 1.8.2 are still usable too, but version 1.8.3 is not.&amp;quot;&lt;br /&gt;
The ''marc'' gem (referred to below) needs Ruby 1.8.6 or greater to install. (http://rubyonrails.org/download)   Try installing Ruby with your package manager of choice. If not, try installing from source, eg&lt;br /&gt;
&lt;br /&gt;
# [Download 1.8.4&amp;gt;http://rubyforge.org/frs/download.php/7858/ruby-1.8.7.tar.gz]&lt;br /&gt;
# tar -zxvf ruby-1.8.7.tar.gz&lt;br /&gt;
# cd ruby-1.8.7&lt;br /&gt;
# sudo ./configure&lt;br /&gt;
# sudo make&lt;br /&gt;
# sudo make install&lt;br /&gt;
&lt;br /&gt;
( jrochkind is currently running ruby 1.8.6 as of Dec 08 )&lt;br /&gt;
&lt;br /&gt;
== 2. Install RubyGems ==&lt;br /&gt;
&lt;br /&gt;
Again, your package manager may be able to supply this (for example &amp;quot;yum install rubygems), but if not, you could again install from source:&lt;br /&gt;
&lt;br /&gt;
# [Download here&amp;gt;http://rubyforge.org/frs/?group_id=126]&lt;br /&gt;
# tar -zxvf rubygems-x.x.x.tar.gz&lt;br /&gt;
# cd rubygems-x.x.x&lt;br /&gt;
# sudo ruby setup.rb&lt;br /&gt;
( actually don't do this, to be safe # sudo gem update) (I don't know what this means, jrochkind 14 May 09!)&lt;br /&gt;
&lt;br /&gt;
== 3. Install Rails ==&lt;br /&gt;
&lt;br /&gt;
Umlaut requires Rails 2.1.2, and is bound to it in the default environment.rb. It has not been verified for Rails 2.2.x yet. So install the 2.1.2 version of Rails (you can have multiple versions of Rails installed simulataneously, don't worry about this overwriting a more recent version of Rails you may want--it won't.)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;sudo gem install rails -v 2.1.2&amp;quot;  (say yes to any dependencies)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''': There are various guides available on the net to getting Ruby/Rubygems/Rails installed on various OSs. Consult if you have trouble.&lt;br /&gt;
&lt;br /&gt;
== 4. Install Umlaut ==&lt;br /&gt;
&lt;br /&gt;
Right now, the best (only) way to install Umlaut is from it's SVN store.&lt;br /&gt;
&lt;br /&gt;
For a read-only checkout of Umlaut 2.10.0 (If there is a more recent version, hopefully I'll remember to update it here, or ask me, or look around in the svn repo. 1 July 09):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn checkout http://umlaut.rubyforge.org/svn/tags/2.10.0  ./Umlaut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or instead of &amp;quot;./Umlaut&amp;quot;, whatever local path you want to put the thing in.&lt;br /&gt;
&lt;br /&gt;
For a checkout with commit privs, you need a rubyforge account and to be added to the umlaut project, then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svn checkout svn+ssh://(developername)@rubyforge.org/var/svn/umlaut/tags/2.10.0 ./Umlaut&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are a developer who wants the latest in-progress version of umlaut, check out /trunk instead of /tags/2.10.0. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Umlaut comes with a number of Ruby gems and Rails plugins &amp;quot;frozen&amp;quot; into it's distribution, in vendor/plugins.  You do not need to install these, they come with Umlaut. These include: json_pure ; sru; xisbn;  enumerations_mixin (plugin) ; app_config (plugin); isbn-tools (plugin) ; openurl ( svn external link in plugin; needs to be fixed to link to a specific tag ); htmlentities (http://htmlentities.rubyforge.org/)&lt;br /&gt;
&lt;br /&gt;
However, there are a few plugins that can not be conveniently packaged with Umlaut, you need to install them yourself...&lt;br /&gt;
&lt;br /&gt;
== 5. Install Umlaut's gem dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== mongrel === &lt;br /&gt;
&lt;br /&gt;
(Umlaut will not run with WEBrick due to threading issues. Recommend installing mongrel for testing and deployment. mongrel 1.1.4 or later is highly reccommended. )&lt;br /&gt;
&lt;br /&gt;
sudo gem install mongrel&lt;br /&gt;
&lt;br /&gt;
=== hpricot ===&lt;br /&gt;
&lt;br /&gt;
(hpricot is compiled C code, so you are best off installing it yourself. Right now hpricot 0.6 is tested and confirmed. )&lt;br /&gt;
&lt;br /&gt;
sudo gem install hpricot -v 0.6&lt;br /&gt;
&lt;br /&gt;
=== json ===&lt;br /&gt;
&lt;br /&gt;
A pure-ruby json library is bundled with Umlaut automatically, but you really ought to install the compiled C one on your server instead, for much better performance. Umlaut will automatically use it if present. Currently verified with version 1.1.3&lt;br /&gt;
&lt;br /&gt;
sudo gem install json -v 1.1.3&lt;br /&gt;
&lt;br /&gt;
=== marc ===&lt;br /&gt;
&lt;br /&gt;
A rubygem necessary for the generate script. 	Provides a ruby library for processing Machine Readable Cataloging (MARC) bibliographic data.&lt;br /&gt;
&lt;br /&gt;
sudo gem install marc&lt;br /&gt;
&lt;br /&gt;
=== mysql ===&lt;br /&gt;
&lt;br /&gt;
MySQL is the reccomended db, and the only db currently verified to work. Umlaut won't usually run with SQLite3 due to threading issues.&lt;br /&gt;
&lt;br /&gt;
Rails is supposed to be able to talk to mysql without the mysql gem installed (just less efficiently), but for some reason Umlaut seems to have trouble with this. Not sure, you can try it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo gem install msyql&lt;br /&gt;
&lt;br /&gt;
Except some additional configuration arguments may be neccesary to compile on your machine. &lt;br /&gt;
&lt;br /&gt;
===== redhat =====&lt;br /&gt;
&lt;br /&gt;
On RedHat and CentOS machines, you will need to have the mysql-devel packages installed.&lt;br /&gt;
&lt;br /&gt;
On a RedHat machine, this works:&lt;br /&gt;
&lt;br /&gt;
 sudo gem install mysql -- --with-mysql-config=/usr/lib/mysql/mysql_config&lt;br /&gt;
&lt;br /&gt;
===== ubuntu =====&lt;br /&gt;
&lt;br /&gt;
On Ubuntu you will also need to:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libmysqlclient15-dev&lt;br /&gt;
&lt;br /&gt;
Then you can:&lt;br /&gt;
&lt;br /&gt;
 sudo gem install mysql&lt;br /&gt;
&lt;br /&gt;
Ubuntu also packages the mysql library, if you'd rather use that version you can try:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install libmysql-ruby&lt;br /&gt;
&lt;br /&gt;
===== Solaris 10 (sparc) ===== &lt;br /&gt;
&lt;br /&gt;
This has been reported to work on Solaris 10 (sparc)&lt;br /&gt;
&lt;br /&gt;
 gem install mysql -- --with-mysql-include=/opt/pkgs/mysql/include/ &lt;br /&gt;
 \ --with-mysql-lib=/opt/pkgs/mysql/lib&lt;br /&gt;
&lt;br /&gt;
=== More optional gems ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Voyager sites that want to bypass z39.50 and access Oracle directly will need Oracle Instant Client or Full Client installed on the same machine as the Umlaut. (This native Voyager code is not currently verified as working.) [http://www.jiubao.org/ruby-oci8 Oracle OCI8] [http://www.oracle.com/technology/tech/oci/instantclient/index.html Oracle Instant Client]&lt;br /&gt;
&lt;br /&gt;
== 5. Configure SFX API to be used ==&lt;br /&gt;
&lt;br /&gt;
On the SFX server that umlaut will be using as a datasource, make sure that the sfx api is turned on in the web-based admin tool (http://sfx.xxx.xxx.edu/sfxadmin/instance-name). This option can be found under the '''SFX API''' in the Menu Configuration Tool.  Make sure that the '''Include availability info in text format''' and  '''Include availability info in structured XML format''' options are checked.  Once these options have been checked, the sfx web server instance needs to be restarted.&lt;br /&gt;
&lt;br /&gt;
== Now You Need to Setup Umlaut ==&lt;br /&gt;
&lt;br /&gt;
Good job, you've got all software installed, now you need to do some setup. See [[Umlaut Setup]].&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_Deployment_with_Thin_and_Apache&amp;diff=15267</id>
		<title>Umlaut Deployment with Thin and Apache</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_Deployment_with_Thin_and_Apache&amp;diff=15267"/>
				<updated>2012-06-19T16:19:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;br /&gt;
Instead of using mongrel, NYU is using [http://code.macournoyer.com/thin/ thin]. The thin configuration is almost identical to mongrel and is detailed below.  The Apache configuration is exactly the same as with mongrel and is detailed at [[Umlaut_Deployment#Apache_Setup]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First you must install the thin gem and any dependencies, including rack. We found that versions of rack later than 1.0.1 caused problems.&lt;br /&gt;
:$ sudo gem install thin&lt;br /&gt;
:$ sudo gem install rack --version 1.0.1&lt;br /&gt;
&lt;br /&gt;
Next add these two files to Umlaut.&lt;br /&gt;
&lt;br /&gt;
:config/umlaut_config/deploy/thin_cluster.yml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Unix account to run your processes as:&lt;br /&gt;
user: umlaut  &lt;br /&gt;
&lt;br /&gt;
#Unix group to run processes as:&lt;br /&gt;
group: umlaut &lt;br /&gt;
&lt;br /&gt;
# Install dir of Umlaut you want to run from:&lt;br /&gt;
chdir: /apps/umlaut/&lt;br /&gt;
log: log/thin.log # Leave like this. &lt;br /&gt;
&lt;br /&gt;
# Start port for your instances. Any high port will do. Does NOT need need&lt;br /&gt;
# to be open through firewall externally. &lt;br /&gt;
port: 4001&lt;br /&gt;
environment: production # Leave like this&lt;br /&gt;
address: 127.0.0.1 # Leave like this &lt;br /&gt;
#address: 0.0.0.0 # Leave like this &lt;br /&gt;
pid: tmp/pids/thin.pid # Leave like this&lt;br /&gt;
&lt;br /&gt;
# How many instances to run. port: 8000 with servers:3 means you'll&lt;br /&gt;
# have a server on 8000, 8001, and 8002. &lt;br /&gt;
servers: 4&lt;br /&gt;
&lt;br /&gt;
# Only if  you want to start at web path other than base / :&lt;br /&gt;
#prefix: /getit       # for instance. Start with slash, and don't end with one.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:script/local/my_thin_ctl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash &lt;br /&gt;
thin $1 -C /apps/umlaut/config/umlaut_config/deploy/thin_cluster.yml  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then make the my_thin_ctl executable&lt;br /&gt;
:$ chmod 755 my_thin_ctl&lt;br /&gt;
&lt;br /&gt;
Finally, run&lt;br /&gt;
: $ ./script/local/my_thin_ctl start&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_Deployment&amp;diff=15266</id>
		<title>Umlaut Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_Deployment&amp;diff=15266"/>
				<updated>2012-06-19T16:19:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
So you have your Umlaut running by executing &amp;quot;./scripts/server&amp;quot; in the Umlaut directory, and then it launches on port 3000 by default, and you connect to port 3000. This is fine for some initial confirmation that you've got your setup working, and for development, but how do you actually deploy it?&lt;br /&gt;
&lt;br /&gt;
Turns out there are several possible deploy environments for a Rails application. There is not necessarily one standard or best one at the moment, different people use different ones in different circumstances.&lt;br /&gt;
&lt;br /&gt;
Jonathan Rochkind at Hopkins uses mongrel, mongrel_cluster and Apache mod_proxy and mod_proxy_balancer on a unix system for his deploy environment.  He went down this road because it was what was recommended by the [http://www.pragprog.com/titles/rails2 Rails Agile Development book].  We may explore other deploy enviroments (such as 'passenger') in the future.  We would definitely not be optimistic about running Umlaut on Windows. *Lately mod_rails/Passenger is clearly the preferred Rails deployment in general, and jrochkind wants to find time to set it up and test it, but hasn't yet.*&lt;br /&gt;
&lt;br /&gt;
Since jrochkind is writing this documentation, he can only tell you how to do it how he did. You do need to have a verison of Apache that includes mod_proxy_balancer (&amp;gt; apache 2.2? ), but if you do, jrochkind is fairly happy with the solution.&lt;br /&gt;
&lt;br /&gt;
These two pages from the mongrel website on [http://mongrel.rubyforge.org/wiki/Apache Apache Best Practice Deployment] and [http://mongrel.rubyforge.org/docs/mongrel_cluster.html Using Mongrel Cluster] are pretty good how-tos for mongrel. But we will also take you through it here, with specific directions and Umlaut recommendations and pit-falls we ran into.&lt;br /&gt;
&lt;br /&gt;
Alternatively, based on Ross Singer's recommendation, scotdalton is using [http://code.macournoyer.com/thin/ thin] and Apache at NYU.  The setup is almost identical to mongrel and is detailed at [[Umlaut Deployment with Thin and Apache]]&lt;br /&gt;
&lt;br /&gt;
== Quick start 'wizard' ==&lt;br /&gt;
&lt;br /&gt;
New! A Rails generator to set up config files for you, and make deployment with mongrel cluster and apache much easier. &lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* Install 'mongrel' and 'mongrel_cluster' gems. &lt;br /&gt;
* Apache needs mod_proxy and mod_proxy_balancer (which means it needs to be apache &amp;gt;2.2 I think, and have those modules turned on). &lt;br /&gt;
* You need to have access to an apache conf file to add some statements to hook your mongrel cluster up to the web.&lt;br /&gt;
&lt;br /&gt;
=== To run ===&lt;br /&gt;
&lt;br /&gt;
You can simply run ./script/generate mongrel_deploy_files to generate config files for an Umlaut mongrel cluster deployment. This makes some assumptions, detailed below--to change all of these options, run ./script/generate mongrel_deploy_files --help to see command line arguments, if you aren't happy with these defaults. &lt;br /&gt;
&lt;br /&gt;
You can run this command at any time. It will interactively prompt you if you want to overwrite your existing files, and give you a diff. (Or you can say --force to force overwriting of existing files). You can also run ./script/destroy mongrel_deploy_files to remove anything created by the generator. &lt;br /&gt;
&lt;br /&gt;
This process will add two files in umlaut_config/deploy, and one file in $UMLAUT/script/local/.  Next, you need to hook up apache, and start your mongrels.&lt;br /&gt;
&lt;br /&gt;
=== default assumptions ===&lt;br /&gt;
&lt;br /&gt;
Several mongrel processes are being configured. By default, this is four mongrel processes on internal ports beginning at port 4001. Both of these things can be changed. &lt;br /&gt;
&lt;br /&gt;
By default these mongrel processes will be run as unix user 'umlaut', group 'umlaut'. So either create such a user or group, or add arguments to choose other user/group. &lt;br /&gt;
&lt;br /&gt;
By default the generator assumes that you are going to be deploying at 'document root' (/) in a particular apache (virtual) host. If you'd like to instead install at a sub-path, use the --prefix argument. &lt;br /&gt;
&lt;br /&gt;
=== Hook up apache === &lt;br /&gt;
&lt;br /&gt;
A file was created for you in umlaut_config/deploy/umlaut_http.conf.  You need to edit your apache conf file to &amp;quot;Include&amp;quot; this umlaut_http.conf in the virtual host of your choice (or main host). You need to set up the virtual host yourself, if you want one. Then simply &amp;quot;Include /path/to/umlaut/config/umlaut_config/deploy/umlaut_http.conf&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
=== Start mongrels ===&lt;br /&gt;
&lt;br /&gt;
Apache is now pointing to a balanced cluster of mongrels on the ports specified by the generator, from the path specified by the generator. But those mongrels aren't running yet. You need to start them. You can do this by running:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mongrel_rails cluster::start -C /path/to/umlaut/config/umlaut_config/deploy/mongrel_cluster.yml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, for convenience, the generator installed a little bash script to do this all for you:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$UMLAUT/script/local/my_mongrel_ctl (start|stop|restart|status)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can set things up to auto-start your mongrels on boot, see:&lt;br /&gt;
[http://mongrel.rubyforge.org/wiki/MongrelCluster#OnBootInitializationSetup]&lt;br /&gt;
&lt;br /&gt;
== The details: Umlaut Deployment with Mongrel and Apache ==&lt;br /&gt;
&lt;br /&gt;
There are basically two parts to getting Umlaut (or any Rails app) deployed in this setup. First is getting your Rails app running, and second is configuring Apache to connect to it properly.&lt;br /&gt;
&lt;br /&gt;
There are a few decisions to make. Run just one instance of Umlaut, or run multiple load balancing instances? Because of the nature of the way Umlaut works, we strongly recommend running multiple Umlaut instances regardless of how little traffic you expect.  Even in a low-traffic environment, the fact that Umlaut can take several seconds to respond to a request means that multiple instances are a good idea to keep Umlaut from seeming even slower than it is. We're completely guessing, but 3 is probably a pretty good number for just about any Umlaut site, from low to high traffic.&lt;br /&gt;
&lt;br /&gt;
Also think about whether you what unix account you want to run Umlaut (recommended to create a special low-priv account).  And whether your Umlaut URLs can be the base urls for a host (Ie, findit.library.jhu.edu points directly to umlaut), or whether you use a 'prefix' (ie, findit.library.jhu.edu/some/path/findit). Using apache virtual hosts and mounting Umlaut at the base is typical, but the prefix can work too.&lt;br /&gt;
&lt;br /&gt;
=== Setting up mongrel_cluster ===&lt;br /&gt;
&lt;br /&gt;
First you've got to install mongrel and mongrel_cluster:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:sudo gem install mongrel&lt;br /&gt;
&lt;br /&gt;
:sudo gem install mongrel_cluster&lt;br /&gt;
&lt;br /&gt;
'''Reccommend you make sure you have mongrel &amp;gt;= 1.1.4 and mongrel_cluster &amp;gt;= 1.0.5. Recommend you do NOT have previous versions installed. When I had mongrel_cluster 1.0.3 simultaneously installed, it was being used, even though it shouldn't be, and its bugs were effecting me'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The point of mongrel_cluster is to save configuration information for multiple mongrel instances in one configuration file, and then you can start, stop, or restart them all with one command, and without having to remember that config information each time (and possibly get it wrong or typod).&lt;br /&gt;
&lt;br /&gt;
By default, mongrel_cluster keeps that configuration file in a Rails app's config/mongrel_cluster.yml.   You could do that with Umlaut, but we like to keep your local config files in $Umlaut/config/umlaut_config instead (see [[Umlaut Local Configuration Architecture]]), so we recommend putting it in $Umlaut/config/umlaut_config. You can use the mongrel_rails command to write this config for you (see [http://mongrel.rubyforge.org/wiki/MongrelCluster Using Mongrel Cluster]; make sure to use the -C argument to put the config file in umlaut_config, if that's what you want), but here we'll just give you our actual mongrel_cluster.yml config, annotated. (You are certainly allowed to write it by hand).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Unix account to run your processes as:\\&lt;br /&gt;
user: umlaut  &lt;br /&gt;
&lt;br /&gt;
#Unix group to run processes as:&lt;br /&gt;
group: umlaut &lt;br /&gt;
&lt;br /&gt;
# Install dir of Umlaut you want to run from:&lt;br /&gt;
cwd: /data/web/findit/Umlaut &lt;br /&gt;
log_file: log/mongrel.log # Leave like this. &lt;br /&gt;
&lt;br /&gt;
# Start port for your instances. Any high port will do. Does NOT need need&lt;br /&gt;
# to be open through firewall externally. &lt;br /&gt;
port: 8000 &lt;br /&gt;
environment: production # Leave like this&lt;br /&gt;
address: 127.0.0.1 # Leave like this &lt;br /&gt;
pid_file: tmp/pids/mongrel.pid # Leave like this&lt;br /&gt;
&lt;br /&gt;
# How many instances to run. port: 8000 with servers:3 means you'll&lt;br /&gt;
# have a server on 8000, 8001, and 8002. &lt;br /&gt;
servers: 3&lt;br /&gt;
&lt;br /&gt;
# Only if  you want to start at web path other than base / :&lt;br /&gt;
prefix: /findit       # for instance. Start with slash, and don't end with one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can start all three of these mongrel instances by executing:&lt;br /&gt;
&lt;br /&gt;
:sudo mongrel_rails cluster::start -C $Umlaut/config/umlaut_config/mongrel_rails&lt;br /&gt;
&lt;br /&gt;
The 'sudo' is necessary because we've told mongrel_cluster to start apps as user 'umlaut' ; first need to be root before you can start a process as another user. Also cluster::stop, cluster::restart, and cluster::status&lt;br /&gt;
&lt;br /&gt;
We're still not sure exactly how many mongrels are neccesary to handle a given sized umlaut installation. &lt;br /&gt;
&lt;br /&gt;
:See below to automate the startup of these processes on boot.&lt;br /&gt;
&lt;br /&gt;
If you are choosing to start as a particular unix account, make sure your install dir can be read by that account! log and tmp dirs need to be writeable too. Easiest thing to do is just &amp;quot;sudo chgrp -R umlaut&amp;quot;, or whatever other group you are choosing, your entire $Umlaut installation. Note that the parent directory (and all of it's parents) needs to have &amp;quot;x&amp;quot; permission for the user/group too.&lt;br /&gt;
&lt;br /&gt;
=== Apache Setup ===&lt;br /&gt;
&lt;br /&gt;
Now we set up apache using mod_proxy to 'reverse proxy' to our mongrel instances, with clustered load balancing. Make sure you have mod_proxy and mod_proxy_balancer installed and configured. Now, in your apache conf, proably in the specific virtual host you want to use for Umlaut:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Very important, make sure you aren't inadvertantly making an open proxy with mod_proxy&lt;br /&gt;
ProxyRequests off &lt;br /&gt;
&lt;br /&gt;
# Set up the mod_proxy blanacer, with our three instances running on 8000-8002&lt;br /&gt;
# Note: Do not put trailing / on these&lt;br /&gt;
&amp;lt;Proxy balancer://umlaut_cluster&amp;gt;&lt;br /&gt;
  BalancerMember http://127.0.0.1:8000&lt;br /&gt;
  BalancerMember http://127.0.0.1:8001&lt;br /&gt;
  BalancerMember http://127.0.0.1:8002&lt;br /&gt;
&amp;lt;/Proxy&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Set up ProxyPass directive to reverse proxy to SFX for handling SFX journal subscription cgi posts&lt;br /&gt;
# This should come before the cluster ProxyPass directive.&lt;br /&gt;
ProxyPass /resolve/cgi/core/journal_subscription.cgi http://your.sfx.host.edu:port/your_instance/cgi/core/journal_subscription.cgi&lt;br /&gt;
ProxyPassReverse /resolve/cgi/core/journal_subscription.cgi http://your.sfx.host.edu:port/your_instance/cgi/core/journal_subscription.cgi&lt;br /&gt;
&lt;br /&gt;
# Now set up the ProxyPass directives to reverse proxy to that cluster&lt;br /&gt;
# Note: DO put trailing / on these.&lt;br /&gt;
&lt;br /&gt;
ProxyPass / balancer://umlaut_cluster/ &lt;br /&gt;
ProxyPassReverse / balancer://umlaut_cluster/ &lt;br /&gt;
ProxyPreserveHost on&lt;br /&gt;
&lt;br /&gt;
# Or, if you were using a prefix, these would look like, eg:&lt;br /&gt;
# ProxyPass /findit balancer://umlaut_cluster/findit/&lt;br /&gt;
# ProxyPassReverse /findit balancer://umlaut_cluster/findit/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSL/https====&lt;br /&gt;
&lt;br /&gt;
If you are setting up apache to allow https requests, it should still proxy to an http mongrel as above, because mongrel doesn't speak http.  However, you should include this line in the relevant SSL virtual host, to set the request header to let the Rails app know it's fronted by ssl:&lt;br /&gt;
&lt;br /&gt;
    RequestHeader set X_FORWARDED_PROTO 'https'&lt;br /&gt;
&lt;br /&gt;
=== Dealing with bad query strings: More Apache Setup ===&lt;br /&gt;
&lt;br /&gt;
Mongrel refuses to accept a mal-formed query string. EBSCOHost, however, insists on sending such---for example, query strings with unescaped greater-than or less-than chars in them. We want to take care of this by putting directives in the apache config to rewrite these bad urls into proper escaped urls. The apache mod_redirect external map function is most convenient to use here, and a program to serve as an external map is included with umlaut. The following apache directives will take care of rewriting bad URLs. As always, $Umlaut stands for your Umlaut install dir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # We want to re-write URLs with 'bad' &amp;lt; and &amp;gt; chars in the query&lt;br /&gt;
  # string (eg from EBSCO) to escape them.&lt;br /&gt;
  RewriteEngine on&lt;br /&gt;
  RewriteMap query_escape prg:$umlaut/distribution/script/rewrite_map.pl&lt;br /&gt;
  RewriteLock /var/lock/subsys/apache.rewrite.lock&lt;br /&gt;
  RewriteCond %{query_string} ^(.*[\&amp;gt;\&amp;lt;].*)$&lt;br /&gt;
  RewriteRule ^(.*)$ $1?${query_escape:%1} [R,L,NE]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Due to a bug in Apache, ampersand chars in query string end up 'double escaped' when put through the map. We have code in a before filter in application_controller to take care of this.&lt;br /&gt;
&lt;br /&gt;
=== Start at Boot? ===&lt;br /&gt;
&lt;br /&gt;
Follow the directions at [http://mongrel.rubyforge.org/wiki/MongrelCluster#OnBootInitializationSetup Using Mongrel Cluster], which are basically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir /etc/mongrel_cluster&lt;br /&gt;
sudo ln -s $UMLAUT/config/umlaut_config/mongrel_cluster.yml /etc/mongrel_cluster/umlaut.yml&lt;br /&gt;
sudo cp /path/to/mongrel_cluster_gem/resources/mongrel_cluster /etc/init.d/&lt;br /&gt;
sudo chmod +x /etc/init.d/mongrel_cluster&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now your cluster will start at boot, and you can also start, stop, or restart it (and any other clusters you link into /etc/mongrel_cluster) with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /etc/init.d/mongrel_cluster {start|stop|restart}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====NOTE/WARNING==== &lt;br /&gt;
There is a problem in mongrel_cluster that will prevent mongrels from starting up again if your machine (or mongrels) die ungracefully leaving stale pids. See http://www.ruby-forum.com/topic/105849 &lt;br /&gt;
&lt;br /&gt;
My better fix:  Edit the /etc/init.d/mongrel_cluster bash script you installed above. Change line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mongrel_cluster_ctl start -c $CONF_DIR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mongrel_cluster_ctl start -c $CONF_DIR --clean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the addition of the --clean argument.&lt;br /&gt;
&lt;br /&gt;
I know this works with mongrel 1.1.4 and mongrel_cluster 1.0.5.  An earlier mongrel_cluster did not respect the --clean argument properly--and I found that having a simultaenous install of the earlier mongrel_cluster for some reason caused it to be used instead of the later one. gem isn't supposed to work that way. But best make sure you have no mongrel_clusters earlier than 1.0.5 installed.&lt;br /&gt;
&lt;br /&gt;
== SFX Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Institute Feature ===&lt;br /&gt;
&lt;br /&gt;
This only matters if you use the SFX institute feature. Umlaut sends a req.ip=[client ip] param, which SFX is supposed to use to treat the request as if it came from that IP, not umlaut's ip. That works if the req.ip matches an SFX institute. But if it does not match any institute, you want SFX to treat the request as if it did not match any institute. Instead it consults the actual umlaut server IP and connects THAT to an institute. This is bad. &lt;br /&gt;
&lt;br /&gt;
As a work around, define an institute in SFX that is listed first alphabetically (eg, &amp;quot;aaa_umlaut_server&amp;quot;) that matches the Umlaut server's IP address(es). Now if req.ip doesn't match anything, SFX will decide the request matches &amp;quot;aaa_umlaut_server&amp;quot; institute--which won't effect anything, will be treated just like a non-local address--instead of matching on umlaut server address which might match a wrong institute. &lt;br /&gt;
&lt;br /&gt;
This bug has been reported to Ex Libris.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut&amp;diff=15265</id>
		<title>Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut&amp;diff=15265"/>
				<updated>2012-06-19T16:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Umlaut is [[OpenURL]] link resolving middleware that adds functions and services to commercial link resolving software such as [[SFX]]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
==More information==&lt;br /&gt;
&lt;br /&gt;
[[About Umlaut]] - A gentle introduction to what Umlaut is and what it can do for you.&lt;br /&gt;
&lt;br /&gt;
[http://bibwild.wordpress.com/2008/10/16/umlaut-digital-book/ Digital Text Features] - A tour of some of the 'advanced' digital text features, with a demos pointing to JHU site, hosted on jrochkind's blog. &lt;br /&gt;
&lt;br /&gt;
[http://rubyforge.org/mail/?group_id=4382 Umlaut Listserv]&lt;br /&gt;
&lt;br /&gt;
[http://umlaut.rubyforge.org/ Rubyforge home page for developers]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut wishlist]]&lt;br /&gt;
&lt;br /&gt;
Live installation at JHU, base url is http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
==Installation and Configuration==&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Installation]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut_Deployment]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
[http://umlaut.rubyforge.org/api/ Umlaut API Documentation]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Technical Overview]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut_Deployment]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Local Configuration Architecture]]&lt;br /&gt;
&lt;br /&gt;
===Specific Topics===&lt;br /&gt;
&lt;br /&gt;
[[Umlaut URL parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut logging]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut SFX statistics gotchas]]&lt;br /&gt;
&lt;br /&gt;
====APIs====&lt;br /&gt;
&lt;br /&gt;
[[Umlaut full API]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut partial html API]]&lt;br /&gt;
&lt;br /&gt;
[[JQuery HTML Updater]]&lt;br /&gt;
&lt;br /&gt;
====Developer Notes====&lt;br /&gt;
[[Notes for a User/Auth architecture]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=ServiceResponse_data_structures_and_generation&amp;diff=15264</id>
		<title>ServiceResponse data structures and generation</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=ServiceResponse_data_structures_and_generation&amp;diff=15264"/>
				<updated>2012-06-19T16:19:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
Part of [[Umlaut Technical Overview]]&lt;br /&gt;
&lt;br /&gt;
==ServiceResponse and related data structures==&lt;br /&gt;
&lt;br /&gt;
Before talking about how the services generate data, we should talk about the data format of a [http://umlaut.rubyforge.org/api/classes/ServiceResponse.html ServiceResponse].  A ServiceResponse is basically a unit of information generated by a Service, generally for display somewhere on the link resolver menu page. For example, there might be a ServiceResponse representing a fulltext link, a help link, or an abstract. ServiceResponses almost always link out somewhere, along with providing other data for display. &lt;br /&gt;
&lt;br /&gt;
The ServiceResponse entity has a few 'standard' properties (display_text, url, notes), but also a property, service_data, consisting of a serialized hash for holding arbitrary key/value information. Different service types might require different key/values here.  The [] operator on ServiceResponse conveniently allows you to store arbitrary key/value information in this property (and also access/set the 'built-in' properties). For appropriately loose coupling between data stored, service generating it, and view, we define some conventions for what key/value pairs are used for what purposes in each response type, in comments on [http://umlaut.rubyforge.org/api/classes/ServiceResponse.html ServiceResponse class definition]. &lt;br /&gt;
&lt;br /&gt;
A ServiceResponse also records which Service generated it, using that Service's service_id/name as defined in config/umlaut_config/services.yml, and generally retrievable from the ServiceList.&lt;br /&gt;
&lt;br /&gt;
So what do we mean by a 'service type'?  The list of all valid service types is defined in the ServiceTypeValue table. Each ServiceTypeValue has a one-word internal identifier token (name), a display_name for user presentation, and optionally a display_name_pluralized (to over-ride standard Rails pluralization). The values in this table are initialized from db/orig_fixed_data/service_type_values.yml when you run rake umlautdb:load_initial_data. We intend the local implementer to be able to create locally defined ServiceTypeValues too, if necessary.  &lt;br /&gt;
&lt;br /&gt;
ServiceTypeValue uses the acts_as_enumerated plug-in to conveniently allow the developer to refer to an individual ServiceTypeValue by name:  ServiceTypeValue[:fulltext] ==&amp;gt; the ServiceTypeValue object with name == 'fulltext'.  acts_as_plugin does efficient caching.&lt;br /&gt;
&lt;br /&gt;
So obviously which ServiceTypeValue a given ServiceResponse is intended for needs to be registered somewhere. But you won't find it in ServiceResponse, which might be confusing at first. In fact, there's a somewhat confusingly named three-way join object called ServiceType, which ties together:&lt;br /&gt;
* a ServiceResponse&lt;br /&gt;
* a ServiceTypeValue&lt;br /&gt;
* a Request&lt;br /&gt;
&lt;br /&gt;
This architecture theoretically allows:&lt;br /&gt;
* One ServiceResponse to belong to multiple Requests (ServiceResponse cacheing accross requests/sessions). &lt;br /&gt;
* One ServiceResponse to be assigned ''multiple'' ServiceTypeValues and thus listed multiple times with a given Request. &lt;br /&gt;
&lt;br /&gt;
In fact, Umlaut does not currently use ServiceResponse caching across requests; it turned out to be tricky to get right without clear gain. And very few (if any?) current services register the same ServiceResponse to a request with multiple ServiceTypeValues. But, the architecture is there to support it if needed in the future. &lt;br /&gt;
&lt;br /&gt;
This data structure architecture ends up somewhat confusing (and ServiceType is probably not a clear name for that three-way join) but there are usually convenience methods defined to avoid the complexity; they should be used. See for example (tbd).&lt;br /&gt;
&lt;br /&gt;
[http://bibwild.wordpress.com/files/2008/02/umlaut-serviceresponse.jpg Data structure diagram] Trying to figure out how to make this display inline, sorry.&lt;br /&gt;
&lt;br /&gt;
==Obligations of Service logic==&lt;br /&gt;
&lt;br /&gt;
What you need to know to write a new Service. How to generate data, and callback methods service logic can or must provide. &lt;br /&gt;
&lt;br /&gt;
Recall that an umlaut &amp;quot;service&amp;quot; is defined in config/umlaut_config/services.yml to be a particular class holding the service logic, and some configuration parameters. &lt;br /&gt;
&lt;br /&gt;
That class holding the service logic is called a &amp;quot;service adaptor&amp;quot;, or somewhat ambiguously, sometimes times just a &amp;quot;service&amp;quot;. Service adaptors live in lib/service_adaptors, and extend [http://umlaut.rubyforge.org/api/classes/Service.html Service]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Statelessness===&lt;br /&gt;
&lt;br /&gt;
(Not sure this is actually true any longer, working to make it not so. jrochkind jan 2010). Service logic should generally be written to be state-less. The same Service object, defined in services.yml, is initialized once and generally re-used for the life of an application instance (cached by ServiceList).  So any state you store can end up persisting from request to request and session to session, which you probably don't intend. Umlaut architecture for background services also involves threads and forks, and while there's normally no reason a given service object would be in two threads simultaneously, better safe than sorry. It's safest to store no non-universal state in the service object.&lt;br /&gt;
&lt;br /&gt;
===Disclosure methods===&lt;br /&gt;
&lt;br /&gt;
A service adaptor must define [http://umlaut.rubyforge.org/api/classes/Service.html#service_types_generated service_types_generated()] to return an Array of ServiceTypeValues constituting the types of ServiceResponses the service&lt;br /&gt;
&lt;br /&gt;
A service adaptor may optionally list some required configuration params. If they are not supplied, an exception will be thrown when the service is initialized from services.yml. eg:&lt;br /&gt;
: required_config_params :api_key, :base_url&lt;br /&gt;
&lt;br /&gt;
===The handle method===&lt;br /&gt;
&lt;br /&gt;
The heart of a typical service is in implementing the [http://umlaut.rubyforge.org/api/classes/Service.html#handle handle] method. When Umlaut wants a service to do it's thing, Umlaut will pass the request in, and it's up to the Service to do it's work. Note that while the individual umlaut request is passed into handle() as an argument for legacy purposes, it's also available from Service#request at any time, the argument isn't really necessary. &lt;br /&gt;
&lt;br /&gt;
The service can examine all metadata from the request, and even examine ServiceResponses generated by other services, and the status of other services in progress or finished. (See [http://umlaut.rubyforge.org/api/classes/Request.html Request#dispatched_services], Request#dispatched, Request#services_in_progress, etc.)&lt;br /&gt;
&lt;br /&gt;
The service can then enhance any metadata if desired (likely data in [http://umlaut.rubyforge.org/api/classes/Referent.html Referent], from Request#referent). &lt;br /&gt;
&lt;br /&gt;
The service can create one or more ServiceResponses. A ServiceResponse normally represents a discrete package of data that will be displayed on some part of the resolve menu. ServiceResponses should generally be created with the convenience method [http://umlaut.rubyforge.org/api/classes/Request.html Request]#add_service_response.  &lt;br /&gt;
&lt;br /&gt;
The add_service_response call has you specify the particular service class, the ServiceTypeValue, and arbitrary key value pairs as appropriate/conventional for the given time. For conventions on these key/value pairs, see [http://umlaut.rubyforge.org/api/classes/ServiceResponse.html ServiceResponse]. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
request.add_service_response(:service=&amp;gt;self,&lt;br /&gt;
                            :service_type_value =&amp;gt; :cover_image,&lt;br /&gt;
                            :display_text =&amp;gt; 'Cover Image',&lt;br /&gt;
                            :key=&amp;gt;size,&lt;br /&gt;
                            :url =&amp;gt; img.inner_html,&lt;br /&gt;
                            :asin =&amp;gt; asin,&lt;br /&gt;
                            :size =&amp;gt; size )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Service code is also responsible for registering a DispatchedService object with the completion state of the service. This should be done with the convenience method [http://umlaut.rubyforge.org/api/classes/Request.html Request]#dispatched .  If the service throws an uncaught exception, Umlaut itself will register a DispatchedService with status FailedFatal. But otherwise, the service is responsible for registering a completion status, or Umlaut may not realize the service is complete and continue running it over and over again, or reporting it as timed out.&lt;br /&gt;
&lt;br /&gt;
===callback methods===&lt;br /&gt;
&lt;br /&gt;
The Service can play an interactive role with the view elements of Umlaut in determining how to display the ServiceResponse and how to generate an external url for it if the user clicks on it. A Service doesn't need to do this--it can simply include properties in generated ServiceResponses for the conventional keys mentioned in [http://umlaut.rubyforge.org/api/classes/ServiceResponse.html ServiceResponse],  including a pre-generated url in the :url property. &lt;br /&gt;
&lt;br /&gt;
However, for more complicated processing (including not generating urls until the point-of-need when a user actually clicks on one), callback methods can instead be implemented. &lt;br /&gt;
&lt;br /&gt;
These callback methods include [http://umlaut.rubyforge.org/api/classes/Service.html]#view_data_from_service_type(service_type_obj) ,  #to_[name of service goes here] (eg #to_fulltext, or #to_help ), Service#response_to_view_data, and Service#response_url. &lt;br /&gt;
&lt;br /&gt;
For more information, see the Technical Overview section on view logic. (tbd).&lt;br /&gt;
&lt;br /&gt;
==Alternate Service Tasks==&lt;br /&gt;
&lt;br /&gt;
Services were originally designed to do one thing, as described above. However, it has been useful to use the service architecture to perform other 'tasks' too, basically other sorts of plug-ins. What plug-in 'task' a service will be called upon to perform depends on the task config property in services.yml, which defaults to 'standard' when empty. &lt;br /&gt;
&lt;br /&gt;
The other service task we have defined currently as 'link_out_filter'. A task:link_out_filter service will never have it's handle method called. Instead, it will have a [http://umlaut.rubyforge.org/api/classes/Service.html Service#]link_out_filter method defined, and called at the appropriate control point.  Examples of link_out_filter services are ezproxy, and sfx_backchannel_record.&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Request_Setup_and_Environmental_Context&amp;diff=15263</id>
		<title>Request Setup and Environmental Context</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Request_Setup_and_Environmental_Context&amp;diff=15263"/>
				<updated>2012-06-19T16:18:44Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
=Setting up the Request and it's context=&lt;br /&gt;
&lt;br /&gt;
Part of [[Umlaut Technical Overview]]&lt;br /&gt;
&lt;br /&gt;
==OpenURL parsing and storing==&lt;br /&gt;
&lt;br /&gt;
In understanding Umlaut, it's helpful to understand a bit about the nature of an [[OpenURL]], including that an OpenURL is composed of several entities or groupings of metadata. Jeff Young's [http://q6.oclc.org/2006/08/welcome_1.html Q6 blog] includes one good explanation of the six OpenURL entities. &lt;br /&gt;
&lt;br /&gt;
Two sets of classes are involved in dealing with OpenURLs in Umlaut. The ropenurl library is generally used to parse OpenURLs. However, Umlaut serializes OpenURLs to it's own ActiveRecord classes--[http://umlaut.rubyforge.org/api/files/app/models/request_rb.html Request], to represent an incoming OpenURL request, and some constituent data in [http://umlaut.rubyforge.org/api/files/app/models/referent_rb.html Referrent], [http://umlaut.rubyforge.org/api/files/app/models/referent_value_rb.html Referent Value], and [http://umlaut.rubyforge.org/api/files/app/models/referrer_rb.html Referrer].&lt;br /&gt;
&lt;br /&gt;
Once the OpenURL is parsed with the ropenurl library, the data is stored in these internal Umlaut classes, which are generally used subsequently to deal with the request data. &lt;br /&gt;
&lt;br /&gt;
A bit confusingly, Umlaut's own Request (an ActiveRecord which represents a parsed OpenURL request, and other persistent state related to Umlaut's handling of that OpenURL request) should not be confused with the Rails ActionController::Request class (which represents the complete details of the current 'raw' HTTP request, and is not stored persistently in the db). &lt;br /&gt;
&lt;br /&gt;
So the first thing the resolve action does is pass the incoming HTTP request details to the Umlaut Request#new_request method, which will ''''either'''' create a new Request, or recover an already created Request from the db--in either case return a Request matching the OpenURL. &lt;br /&gt;
&lt;br /&gt;
===Request caching/re-use===&lt;br /&gt;
&lt;br /&gt;
The point of this re-use of Request objects is that if the user presses the browser reload button, the app should be connected with the same already created request--allowing the same already generated responses to be used, among other things.  This also allows the user to click on various Umlaut functions and keep re-using the same Request. Again, the main reason this is important is to re-use already generated responses instead of re-generating them. This is also important for background service processing. &lt;br /&gt;
&lt;br /&gt;
Cache matching for re-use is based on: Must be from the same session, must be from the same originating IP address, must have the same OpenURL elements (ie, same OpenURL parameters measured by a serialized version (Request#serialized_co_params)).&lt;br /&gt;
&lt;br /&gt;
Alternately, if the request ID is passed in (in query var &amp;quot;umlaut.request_id&amp;quot;), that is used instead of context object element matching. Umlaut often passes requestID internally, to make sure the same request is recovered. If request_id matches, sessions is not required to match--this is intentional to recover the request even if browser isn't returning cookies, thus not connecting to same session.&lt;br /&gt;
&lt;br /&gt;
==Building the service Collection: Institutions and Services==&lt;br /&gt;
&lt;br /&gt;
So we've got the request taken care of. What are we going to do with it?  &lt;br /&gt;
&lt;br /&gt;
===Services===&lt;br /&gt;
&lt;br /&gt;
The actions taken in response to a request (to 'resolve' it and provide information to the client or user) are taken in umlaut by Services. A Service is defined in your local configuration in $umlaut/config/umlaut_config/services.yml.  A sample services.yml file is included in $umlaut/config/umlaut_distribution/services.yml-dist.  &lt;br /&gt;
&lt;br /&gt;
Each service defined in services.yml has at minimum three properties: An unique identifier for that service, a priority level, and a &amp;quot;type&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;type&amp;quot; is the name of an 'adaptor' class implementing the logic for this service. Service adaptor classes are stored in $umlaut/lib/service_adaptors.  (We will extend this in the future to allow locally defined service_adaptors, perhaps in $umlaut/lib/service_adaptors/local ). So there's a service_adaptor for Amazon, for worldcat, etc.  Most importantly, there's one for SFX---SFX connectivity is achieved through defining a service that uses a 'type' that talks to an SFX server , just like other services. (At least for 'resolve' actions; 'search' actions are a bit different). &lt;br /&gt;
&lt;br /&gt;
Priority defines what order the services will be run in. 1-9 are foreground services ordinarily executed before a response is returned to the user.  a-z are background services run after a response is returned to the user. Two services sharing the same priority will be run concurrently (but see the config.app_config.threaded_services config param). &lt;br /&gt;
&lt;br /&gt;
Services defined in services.yml may have other service-specific parameters too, for instance commonly a password or api_key giving you access to the foreign web service.&lt;br /&gt;
&lt;br /&gt;
Note that a Service is not actually an ActiveRecord stored in the db. Instead, it is a definition in services.yml, which involves an adaptor class (which is not an active record). Service definitions are loaded in on demand--and their adaptor classes instantiated--by the ServiceList singleton class. &lt;br /&gt;
&lt;br /&gt;
For more on how to write service adaptor classes to implement new services, see.... TBD.&lt;br /&gt;
&lt;br /&gt;
===Institutions===&lt;br /&gt;
&lt;br /&gt;
Services are grouped together in Institutions. An Institution represents some particular class of user. It could be a particular location or affiliation, but it really could be any other class of user too. &lt;br /&gt;
&lt;br /&gt;
Institutions are defined in $umlaut/config/umlaut_config/institutions.yml (sample in config/umlaut_distribution/institutions.yml-dist ).  An Institution definition is basically a unique identifier and a list of services attached to that institution. &lt;br /&gt;
&lt;br /&gt;
While Institutions are defined in the institution.yml config file, certain attributes of the Institution are ALSO stored in the database for quicker lookup (This may or may not make sense, but is a legacy design). After editing the institution.yml file, a rake task should be run to sync the info to the db too: &lt;br /&gt;
:rake umlaut:sync_institutions &lt;br /&gt;
&lt;br /&gt;
The Insitution ActiveRecord automatically loads in properties stored in the institutions.yml, helped out by the InstitutionList store class. &lt;br /&gt;
&lt;br /&gt;
Hypothetically, there will be many ways for a given incoming request to get associated with an Institution: by IP range, by user preference, by attribute from an enterprise directory associated with a  user account, etc. An incoming user can be associated with one or more institutions. &lt;br /&gt;
&lt;br /&gt;
However, at present, pretty much the only way for a user to be associated with an Institution is if it's a default Institution! So the only Institutions are default Institutions at present (there can be more than one default institution). This architecture has room for expansion.&lt;br /&gt;
&lt;br /&gt;
===Collection===&lt;br /&gt;
&lt;br /&gt;
So there are Services, and they are grouped into Institutions. How do they actually get brought into play to respond to a resolve request? The [http://umlaut.rubyforge.org/api/classes/Collection.html Collection ] object. A Collection keeps track of a bunch of services to be used for a given session. &lt;br /&gt;
&lt;br /&gt;
The resolve index action creates a new Collection based on ip address and other session information. The new Collection will discover which Institutions apply to a user, and which Services belong to that Institution, and file them all by priority.  Other Services may be found that do not belong to an Institution, for instance Collection is supposed to identify [[SFX]] servers for a user's IP addr via the Worldcat Registry, create a Service pointing to that foreign SFX server, and include that in a Collection. Although this functionality may not be working at present. &lt;br /&gt;
&lt;br /&gt;
The Collection is stored in the Session. It is not actually an ActiveRecord, instead it is stored serialized in the Session--along with all it's Services.  One catch to this is if you change Service configuration in services.yml, users may still be getting the old configuration from their serialized Collection in their Session. Deleting all Sessions is a good idea to handle this. (Deleting sessions ought not to interfere with anyone's activity in progress, except to uncache certain things). &lt;br /&gt;
&lt;br /&gt;
The stored Collection will not be used if a user's IP address changes--even if they have the same session. For instance, bringing your laptop to a new location will still cause a Collection to be rebuilt. &lt;br /&gt;
&lt;br /&gt;
When the resolve action wants to actually execute services, it goes through each priority level, and asks the Collection for the Services at that priority level.&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Notes_for_a_User/Auth_architecture&amp;diff=15262</id>
		<title>Notes for a User/Auth architecture</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Notes_for_a_User/Auth_architecture&amp;diff=15262"/>
				<updated>2012-06-19T16:18:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
'''[[Auth Module]]''': Developer notes and documentation.&lt;br /&gt;
&lt;br /&gt;
  One question, do you guys need to handle IP-address recognition too? I have some cases where I need to make something available to a logged in user _or_ a user from a recognized IP, etc.  But I haven't quite worked through how to support that architecturally. So if you guys dont' need it yet, we'll just ignore it for now. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. USER MODEL&lt;br /&gt;
&lt;br /&gt;
So there will be a User model in the database.  (There's one there now, but it's not being used for anything. Take it over to make it what we want).  It'll have a unique account name (with unique index), support a few standard attributes (firstname, lastname, email, maybe even cell number for your txt messaging stuff), and also support an arbitrary hash of key/values, the UserAttributes you were talking about.   it might make sense to have some abstract notion of 'group membership' built in standard, not just in the arbitrary hash, since this is such a common pattern, but not sure how to do that.&lt;br /&gt;
&lt;br /&gt;
(That arbitrary hash of UserValues could be implemented in a normal rdbms normalized way -- or could just be a hash serialized to a single column.  Rails supports the latter easily. Not sure what is best  -- normalized would allow you to query on it, the serialized hash would actually be more efficient in the app, and easier to work with. Serialized hash also easily allows the values to be arrays or other complex data types. I think I lean toward serialized hash.)&lt;br /&gt;
&lt;br /&gt;
Everyone will use this model, no need for a custom sub-class.  This makes inter-operability with existing plugins easier.  Shareable code can assume more or less what a User object will look like.&lt;br /&gt;
&lt;br /&gt;
A logged in user is represented simply by the user pk ID in the session. (This is the Rails best way to do it).&lt;br /&gt;
&lt;br /&gt;
Umlaut will provide some methods for interacting with logged in user and with users in general:&lt;br /&gt;
&lt;br /&gt;
a) hasLoggedInUser   (   is there a pk in the session?  )&lt;br /&gt;
b) loggedInUser (lazy load user from pk in session, return nil if none exists)&lt;br /&gt;
c) setLoggedInUser( user  )   &lt;br /&gt;
d) logoutUser()&lt;br /&gt;
&lt;br /&gt;
Those are probably all methods in the Application controller. hasLoggedInUser and loggedInUser at least obviously also need to be exposed as helper methods.&lt;br /&gt;
&lt;br /&gt;
One trick is that actual Service code,since it's running in a seperate thread, doesn't have straightforward access to the session. However, I anticipated this, and a couple months ago added in a way for Service threads to access the session. So there probably needs to be hasLoggedInUser and loggedInUser methods in the Service super-class that use the special method of session access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. AUTH PROCESS&lt;br /&gt;
&lt;br /&gt;
This is based on what David Walker just did in Xerxes, after thinking it all through. The idea is that there's kind of a 'plugin' architecture for Auth modules.  Of course 'plugin architecture' in Rails just means a class with certain expected methods.&lt;br /&gt;
&lt;br /&gt;
The methods that an Auth plugin can implement, that will be called by Umlaut at appropriate times are:&lt;br /&gt;
* onEveryRequest()   =&amp;gt; a method that will be called in a before_filter on _every_ Umlaut request, to give an auth module the opportunity to check an SSO system for an already logged in user or logged out user, etc. &lt;br /&gt;
* beforeLogin()  =&amp;gt; a call back&lt;br /&gt;
* loginScreen() =&amp;gt; a call back that returns a hash that Umlaut will pass to render() to render a login page in the Umlaut app, if neccesary. Or it can be a hash that redirects to some external login app.&lt;br /&gt;
* afterLogin()  =&amp;gt;  If a local login screen is rendered, it submits to this action. This action can also be used as a 'callback' from an external login screen you redirect to.&lt;br /&gt;
* logout()  =&amp;gt; callback that Umalut calls on logout&lt;br /&gt;
&lt;br /&gt;
All of these methods could be implemented or not by the Auth module.&lt;br /&gt;
&lt;br /&gt;
So you only need to implement actual custom auth stuff, Umlaut takes care of the control flow and bookkeeping.  I can provide more details about how this would work, but we'll leave it out for now.&lt;br /&gt;
&lt;br /&gt;
You'd configure your auth module in an initializer -- actually auth module(s) cause it should be possible to have more than one available. Something like:&lt;br /&gt;
&lt;br /&gt;
config.login_modules = [&lt;br /&gt;
      { :id =&amp;gt; &amp;quot;shibboleth&amp;quot;,&lt;br /&gt;
         :class =&amp;gt; :ShibbolethAuth&lt;br /&gt;
         :default =&amp;gt; true },&lt;br /&gt;
       { :id =&amp;gt; &amp;quot;horizon&amp;quot;,&lt;br /&gt;
          :class =&amp;gt; :HorizonAuth&lt;br /&gt;
        }&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So that's a start. You with me so far? Heh.&lt;br /&gt;
&lt;br /&gt;
Actually, i'll stick all of this on the wiki, and mention it on the listserv.&lt;br /&gt;
&lt;br /&gt;
Jonathan&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=15261</id>
		<title>JQuery HTML Updater</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=15261"/>
				<updated>2012-06-19T16:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
If you want to include [[Umlaut]]-generated HTML directly on a third party page via javascript, there is a Javascript helper object to make that very easy. This helper uses the [[Umlaut partial html API]], but does everything for you.  The helper will update your page at DOM locations you specify, and keep polling Umlaut for new results, continuing to re-update your page until Umlaut is finished.   &lt;br /&gt;
&lt;br /&gt;
The Javascript helper object relies on JQuery.&lt;br /&gt;
&lt;br /&gt;
This Javascript helper is actually also used internally by Umlaut to load background results as they come in, on the Umlaut resolver menu page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: The intended use case at the moment is a &amp;quot;single item&amp;quot; or &amp;quot;item detail&amp;quot; page. You may think &amp;quot;Gee, I want to embed umlaut content for every item on a 10-item results page!&amp;quot;   Handling this case isn't fully fleshed out yet, in part becuase it might put unreasonable load on an Umlaut server. But I have it in mind, and we may be able to get there, let jrochkind know if you demand it. &lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You need to have the ability to add html &amp;lt;script&amp;gt; tags referencing external js files to the page you'd like to Embed Umlaut content in. You also need to be able to somehow make an OpenURL Context Object representing the thing you'd like to load Umlaut content for, and pass this to the Javascript.  If an OpenURL link is already on your HTML somewhere, Javascript can easily pull the 'context object' out of this (see example). &lt;br /&gt;
&lt;br /&gt;
You need to be willing to load the JQuery library on your page, although it can be loaded in &amp;quot;no conflict&amp;quot; mode if you also need Prototype or another JS library. jQuery 1.4 is highly recommended, although jQuery 1.3 will likely work too if you already depend on that in your application.&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, $UMLAUT_BASE stands for the base URL you have installed Umlaut at, for instance http://findit.library.jhu.edu for JHU. &lt;br /&gt;
&lt;br /&gt;
=== Load JQuery ===&lt;br /&gt;
&lt;br /&gt;
You can load JQuery from your installed Umlaut if you want. This is not neccesary if your app already includes JQuery. It's probably best to load it in &amp;quot;no conflict&amp;quot; mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load the Umlaut.HtmlUpdater object ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASEjavascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optionally, load Umlaut Javascript UI Behaviors ===&lt;br /&gt;
&lt;br /&gt;
HTML loaded in by the HtmlUpdater may include javascript behaviors when displayed in Umlaut, such as expand/contract toggles.   You can choose to load JS files providing those behaviors into your local app. If you don't, certain links will degrade to linking out to Umlaut, but everything should still work fine. &lt;br /&gt;
&lt;br /&gt;
Currently, expand/contract toggles are actually the only js behavior supported on external pages; dialog boxes will necessarily degrade to links out to your Umlaut app. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://app01.mse.jhu.edu:3000/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    jQuery(function($) {&lt;br /&gt;
      var loader = new Umlaut.Loader();&lt;br /&gt;
      loader.load();&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instantiate an HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You need to instantiate an Umlaut.HtmlUpdater, and tell it your Umlaut base url, and a context object key-encoded-value query parameter string. If you already have an OpenURL link on the page, it may be convenient to pull the context object out of that, see [[#Complete Example|example]] below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //inside a jQuery ready()&lt;br /&gt;
  var ctx = &amp;quot;sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater($UMLAUT_BASE,  ctx  );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You use the add_section_target() method on your updater to tell it which blocks of Umlaut content you'd like to put where on your page. The argument to add_section_target() is a JS object containing options. &lt;br /&gt;
&lt;br /&gt;
In the simplest case, you can simply supply an umlaut section in the &amp;quot;umlaut_section_id&amp;quot; option, and the ID of a div you'd like to place the content in on your page in &amp;quot;selector&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
     umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
     selector:&amp;quot;#my_full_text_div&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact umlaut sections available may depend on your Umlaut configuration. To see the sections in a default Umlaut installation, see: AppConfig::Base.bg_update_map [http://umlaut.rubyforge.org/svn/trunk/config/initializers/umlaut/resolve_views.rb in resolve_views in svn]&lt;br /&gt;
&lt;br /&gt;
The selector argument can actually be any JQuery selector. By default, the first item on the page that matches this selector will have it's content entirely replaced by the specified umlaut section. However, you can also supply a &amp;quot;position&amp;quot; argument of &amp;quot;before&amp;quot;, &amp;quot;after&amp;quot;, &amp;quot;append&amp;quot;, or &amp;quot;prepend&amp;quot;, and the umlaut section will instead be inserted before or after the element matching your selector, or prepended or appended to the element's children. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Call the updater ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //in a JQuery ready block&lt;br /&gt;
  updater.update();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The updater will now make a call to Umlaut, grab the content from Umlaut, and do what you've told it to do with it. Additionally, it will keep polling Umlaut until all content is available. How often it polls is configured by application config 'poll_wait_seconds', which defaults to 4 seconds. &lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
&lt;br /&gt;
When configuring the HtmlUpdate object, there are several callbacks you can supply functions to, for your own code to be called. &lt;br /&gt;
&lt;br /&gt;
=== Section Target callbacks ===&lt;br /&gt;
&lt;br /&gt;
Callback functions provided with add_section_target can be useful for modifying the HTML returned by Umlaut before it's placed on your page, or modifying other parts of your page upon receiving content. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== before_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Called before the Umlaut html is actually on the page, you can use it to modify the HTML before it gets added to the page. &amp;quot;count&amp;quot; is a JS integer count of how many items are included in the section; sometimes you may wish to hide the whole section from the page if there are 0 items; returning &amp;quot;false&amp;quot; from before_update will cause the HtmlUpdater to *not* place the block on the page. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;target_obj&amp;quot; is an HtmlUpdate internal object that's probably not too useful unless you want to look at the source, but can be used for some complex things. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;, &lt;br /&gt;
    before_update: function(html, count) {&lt;br /&gt;
     $(html).find(&amp;quot;.section_heading h3&amp;quot;).hide();&lt;br /&gt;
&lt;br /&gt;
     return (count &amp;gt; 0);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== after_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Similar to before_update, but called after the html has been placed in the DOM on the page. In after_update (unlike before_update) you can call JQuery closest() on the html to look up in the DOM if you want. This could be used for instance to show a previously hidden parent element only if there are umlaut items available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
            after_update: function(html, count) {&lt;br /&gt;
               if (count !=0 ) {&lt;br /&gt;
                 $(html).closest(&amp;quot;div.something&amp;quot;).show();&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
   });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== complete(target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Complete on a given section is called after there are no more updates for that section. Currently, the HtmlUpdate isn't smart enough to know that until the entire Umlaut update is done however, so it'll be called at the same time as complete() on the updater as a whole. This may change in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
                               complete: function() { alert(&amp;quot;fulltext done!&amp;quot;) }});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HtmlUpdate callbacks ===&lt;br /&gt;
&lt;br /&gt;
Currently just one, for when the Umlaut update is complete (all content has been fetched). &lt;br /&gt;
&lt;br /&gt;
==== complete(updater_obj) ====&lt;br /&gt;
  updater.complete = function() {&lt;br /&gt;
    alert(&amp;quot;all content has been fetched!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Complete Example ==&lt;br /&gt;
For clarity, this example has some javascript source inline in a &amp;lt;script&amp;gt; tag, the code that specifies how content is to be loaded. That javascript code could of course instead be in an external js file referenced by a &amp;lt;script src=&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
     jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
jQuery(function($) {&lt;br /&gt;
  var loader = new Umlaut.Loader();&lt;br /&gt;
  loader.load();&lt;br /&gt;
  &lt;br /&gt;
  /* pull openurl link out of the DOM, take umlaut base and context object&lt;br /&gt;
     out of it */ &lt;br /&gt;
  var openurl_link = $(&amp;quot;a.openurl_link&amp;quot;).attr(&amp;quot;href&amp;quot;);&lt;br /&gt;
  var ctx_object_kev = openurl_link.substring( openurl_link.indexOf(&amp;quot;?&amp;quot;) + 1);&lt;br /&gt;
  var umlaut_base = openurl_link.substring(0, openurl_link.indexOf(&amp;quot;/resolve&amp;quot;));&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater( umlaut_base  ,  ctx_object_kev );&lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.my_full_text&amp;quot; ,&lt;br /&gt;
    // only show ourself if we have umlaut hits, false return from&lt;br /&gt;
    // before_update stops update.  &lt;br /&gt;
    before_update: function(html, count) { return (count != 0); }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;search_inside&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;  &lt;br /&gt;
  });  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;excerpts&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;holding&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;,&lt;br /&gt;
    before_update: function(container_element) {&lt;br /&gt;
      //insert some content into the umlaut-delivered html&lt;br /&gt;
      //before it is placed on the page&lt;br /&gt;
      container_element.find(&amp;quot;h3&amp;quot;).after(&amp;quot;&amp;lt;h4&amp;gt;We love these holdings.&amp;lt;/h4&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;abstract&amp;quot;, &lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
      position: &amp;quot;append&amp;quot;,  &lt;br /&gt;
      before_update: function(html, count) {&lt;br /&gt;
        //only show if there are hits&lt;br /&gt;
        return ( count != 0);&lt;br /&gt;
      }&lt;br /&gt;
   });     &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;related_items&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_link&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.only_if_content&amp;quot;,&lt;br /&gt;
    after_update: function(updated_content, count) {&lt;br /&gt;
      //show the ancestor DOM element with certain class, only&lt;br /&gt;
      //if there are umlaut hits&lt;br /&gt;
      if ( count != 0 ) {&lt;br /&gt;
        updated_content.closest(&amp;quot;.only_if_content&amp;quot;).show();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    });   &lt;br /&gt;
  &lt;br /&gt;
    updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;export_citation&amp;quot;,&lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;,&lt;br /&gt;
      position:&amp;quot;append&amp;quot;,&lt;br /&gt;
      before_update: function(content, count) {&lt;br /&gt;
        $(content).find(&amp;quot;.section_heading h3&amp;quot;).text(&amp;quot;My own crazy export options&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    updater.complete = function() { alert(&amp;quot;Umlaut fully loaded&amp;quot;) };&lt;br /&gt;
  &lt;br /&gt;
    updater.update();   &lt;br /&gt;
&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a class=&amp;quot;openurl_link&amp;quot; href=&amp;quot;http://$UMLAUT_BASE/resolve?sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&amp;gt;Find It @ JH&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Full Text&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;my_full_text&amp;quot;&amp;gt;&lt;br /&gt;
Replace me.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;More Stuff&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;stuff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;only_if_content&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
This will be shown only if it actually contains content. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Auth_Module&amp;diff=15260</id>
		<title>Auth Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Auth_Module&amp;diff=15260"/>
				<updated>2012-06-19T16:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
== Auth Module (Developer Notes) ==&lt;br /&gt;
The Auth module extends functionality available from the [Authlogic|http://github.com/binarylogic/authlogic] (version 2.1.0) gem and included in the lib directory based on the [Authlogic OpenID add-on|http://github.com/binarylogic/authlogic_openid].'&lt;br /&gt;
&lt;br /&gt;
The idea is to allow services to be customized based on a logged in user's attributes.&lt;br /&gt;
Some examples could be: &lt;br /&gt;
* Store a user's mobile phone number or email address to default the txt/email values for those services.&lt;br /&gt;
* Provide extended request or paging functionality that is only available to a subset of patrons.&lt;br /&gt;
* Allow faculty members to place items on reserve from the Umlaut screen.&lt;br /&gt;
&lt;br /&gt;
Currently the Auth module requires existing Umlaut users to install the authlogic gem and perform a rails migration to update the user model to work with authlogic and the auth module.  After these two steps have been taken, the auth module should only take effect if a particular instance has defined a auth module in their local config.&lt;br /&gt;
&lt;br /&gt;
=== Umlaut Files Added or Updated ===&lt;br /&gt;
Several core Umlaut files were added and updated in order to support the Auth module.&lt;br /&gt;
==== app/controller/application.rb ====&lt;br /&gt;
The '''ApplicationController''' filters passwords and provides two methods for accessing the current user session and the current user.  &lt;br /&gt;
# '''current_user_session''' (aliased as has_logged_in_user) - returns nil if no user session has been established&lt;br /&gt;
# '''current_user''' (aliased as logged_in_user) - returns either nil or the current logged in user&lt;br /&gt;
The application calls '''current_user_session''' as a before filter on every request.&lt;br /&gt;
==== app/controllers/user_sessions_controller.rb ====&lt;br /&gt;
The '''UserSessionsController''' manages the routing of user session requests and provides three methods.&lt;br /&gt;
# '''new''' - renders the login screen or redirects to external login screen&lt;br /&gt;
# '''validate''' - validates the user upon login&lt;br /&gt;
# '''destroy''' - processes logout&lt;br /&gt;
==== app/controllers/users_controller.rb ====&lt;br /&gt;
The '''UsersController''' manages the routing of user related requests and provides two methods.&lt;br /&gt;
# '''edit''' (also called from show) - renders the user preferences screen&lt;br /&gt;
# '''update''' - processes updates to user preferences (not yet implemented)&lt;br /&gt;
====  app/models/user_sessions.rb ====&lt;br /&gt;
'''UserSessions''' extends Authlogic::Session::Base&lt;br /&gt;
==== app/models/user.rb ====&lt;br /&gt;
'''User''' serializes user_attributes and adds acts_as_authentic functionality to leverage the Authlogic gem.  Also sets to_param to username rather than id for prettier urls.&lt;br /&gt;
==== app/views/user_sessions/new.html.rb ====&lt;br /&gt;
The default login screen, doesn't currently do anything.&lt;br /&gt;
==== app/views/users/edit.html.rb ====&lt;br /&gt;
The default user preferences screen.  Users can update mobile phone numbers and the like (not yet implemented)&lt;br /&gt;
==== config/environment.rb ====&lt;br /&gt;
Added authlogic gem:   &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#require 'authlogic'&lt;br /&gt;
config.gem 'authlogic', :version =&amp;gt; &amp;quot;= 2.1.0&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== config/routes.rb ====&lt;br /&gt;
Added url routes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  map.login &amp;quot;login&amp;quot;, :controller =&amp;gt; &amp;quot;user_sessions&amp;quot;, :action =&amp;gt; &amp;quot;new&amp;quot;&lt;br /&gt;
  map.logout &amp;quot;logout&amp;quot;, :controller =&amp;gt; &amp;quot;user_sessions&amp;quot;, :action =&amp;gt; &amp;quot;destroy&amp;quot;&lt;br /&gt;
  map.validate &amp;quot;validate&amp;quot;, :controller =&amp;gt; &amp;quot;user_sessions&amp;quot;, :action =&amp;gt; &amp;quot;validate&amp;quot;&lt;br /&gt;
  map.resources :user_sessions&lt;br /&gt;
  map.resources :users&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== db/schema.rb ====&lt;br /&gt;
Modified the user table to use with authlogic.  Included column for mobile phone, user attributes and a refreshed_at date to track age of a particular record for better performance.  By default, data expires after 1 week.&lt;br /&gt;
==== lib/service.rb ====&lt;br /&gt;
Make the user accessible from a particular user via the session_user method.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Returns the currently logged in user, if available, based on the user_credentials_id in the &lt;br /&gt;
  # session from AuthLogic.  May want to make this more sophisticated and check user_credentials&lt;br /&gt;
  # against db.&lt;br /&gt;
  def session_user&lt;br /&gt;
    return User.find(session[&amp;quot;user_credentials_id&amp;quot;]) unless session[&amp;quot;user_credentials_id&amp;quot;].nil?&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Auth Module ===&lt;br /&gt;
The following files makeup the Auth module to extend the functionality of Authlogic for our purposes.  &lt;br /&gt;
==== lib/auth/acts_as_authentic.rb ====&lt;br /&gt;
The '''ActsAsAuthentic''' module extends the authlogic user model to ignore passwords, reset_persistence_token when the username changes, manage stale data (via refreshed_at date), and handle user attributes hash.&lt;br /&gt;
==== lib/auth/session.rb ====&lt;br /&gt;
The '''Session''' module establishes the Auth module callback functions and can serve as a template for further localizations.&lt;br /&gt;
Callback functions to be overridden locally as appropriate:&lt;br /&gt;
# '''before_login''' - called when a new user session is being established, before the actual login is called&lt;br /&gt;
# '''login_url''' - called if before_login isn't defined or returns false, convenience method for redirecting to an external login url&lt;br /&gt;
# '''after_login''' - called after login user has been validated, provides mechanism for authorization&lt;br /&gt;
# '''before_logout''' - called before current user session is destroyed&lt;br /&gt;
# '''after_logout''' - called after current user session is destroyed&lt;br /&gt;
# '''on_every_request''' - called on every request&lt;br /&gt;
The module also has two private methods for use in extended local classes.&lt;br /&gt;
# '''validate_url''' - generates the return url to send to external logins services&lt;br /&gt;
# '''session_user''' - facilitates saving user attributes to the user model&lt;br /&gt;
&lt;br /&gt;
== Configuring Local Auth Modules ==&lt;br /&gt;
&lt;br /&gt;
=== Auth Module Example ===&lt;br /&gt;
AuthPDS was developed at NYU as an example of generating a plugin and populating the stub methods provided.&lt;br /&gt;
&lt;br /&gt;
At NYU we're currently using the Auth module in our holdings table to offer request functionality based on &amp;quot;patron status&amp;quot;.  We display a request button, if the patron has the appropriate status to be able to request/page items and use a custom controller to provide this functionality seamlessly.  Screenshots of this functionality can be seen below.&lt;br /&gt;
&lt;br /&gt;
==== lib/auth/local/auth_pds.rb ====&lt;br /&gt;
The AuthPDS module gets mixed in with the Session module to log in via PDS (customized for NYU).  It implements the following callback functions:&lt;br /&gt;
# '''login_url''' - provides PDS login URL to redirect to&lt;br /&gt;
# '''after_login''' - checks authorization, stores some cookies to improve performance, saves some user data when appropriate&lt;br /&gt;
# '''logout_url''' - provides PDS logout URL&lt;br /&gt;
# '''after_logout''' - destroys some cookies that were stored to improve performance&lt;br /&gt;
# '''on_every_request''' - checks if the user has logged in (e.g. from another PDS SSO system)&lt;br /&gt;
&lt;br /&gt;
==== config/umlaut_config/environment.rb ====&lt;br /&gt;
The auth configuration settings are added to the local environment.rb to establish the appropriate class to mix in and to pass various options to the module.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  config.app_config.login = {&lt;br /&gt;
    # File name&lt;br /&gt;
    :id =&amp;gt; &amp;quot;auth_pds&amp;quot;,&lt;br /&gt;
    # Class name&lt;br /&gt;
    :module =&amp;gt; :AuthPDS,&lt;br /&gt;
    :options =&amp;gt; {&lt;br /&gt;
      # Make expiration date configurable&lt;br /&gt;
      :expiration_date =&amp;gt; lambda {return 1.week.ago},&lt;br /&gt;
      # OpenSSO URL, specific to NYU's implementation of PDS.&lt;br /&gt;
      # Could easily be removed to make the local PDS module more generic.&lt;br /&gt;
      :opensso_path =&amp;gt; &amp;quot;https://login.nyu.edu:443/sso&amp;quot;,&lt;br /&gt;
      # PDS URL&lt;br /&gt;
      :pds_url =&amp;gt; &amp;quot;https://pds.library.institution.edu:443/&amp;quot;,&lt;br /&gt;
      # System name since the module is used in many different contexts and different apps&lt;br /&gt;
      :system_name =&amp;gt; :umlaut,&lt;br /&gt;
      # Cookie name that is used to help with performance since the module is used in &lt;br /&gt;
      # many different contexts and different apps&lt;br /&gt;
      :cookie_name =&amp;gt; :nyulibrary_opensso_umlaut,&lt;br /&gt;
      :additional_user_attributes =&amp;gt; lambda do |user_session|&lt;br /&gt;
        h = {}&lt;br /&gt;
        # NYU is using this module for several of our ruby apps &lt;br /&gt;
        # and this mechanism allows us to include different user attributes per system.&lt;br /&gt;
        # It's included here to give an idea of the flexibility of the module.&lt;br /&gt;
        return h&lt;br /&gt;
      end&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Screenshots of Request Functionality ====&lt;br /&gt;
===== Not logged in, no request =====&lt;br /&gt;
No request button because generally patrons can't request available items.&lt;br /&gt;
&lt;br /&gt;
[[Image:Umlaut_no_request.png]]&lt;br /&gt;
&lt;br /&gt;
===== Logged in, request =====&lt;br /&gt;
Now the request button appears because I have permission to request available items.&lt;br /&gt;
[[Image:Umlaut_request.png]]&lt;br /&gt;
&lt;br /&gt;
===== Pretty jQuery modal dialog =====&lt;br /&gt;
You get the modal dialog upon clicking the request button&lt;br /&gt;
[[Image:Umlaut_request_modal.png]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15259</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15259"/>
				<updated>2012-06-19T16:17:34Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=WARNING: This is Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15258</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15258"/>
				<updated>2012-06-19T16:17:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Outdated Documentation!!!!=&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15257</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15257"/>
				<updated>2012-06-19T16:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Outdated Documentation!!!!&lt;br /&gt;
&lt;br /&gt;
'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15256</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15256"/>
				<updated>2012-06-19T16:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
---------&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15255</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15255"/>
				<updated>2012-06-19T16:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15254</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15254"/>
				<updated>2012-06-19T16:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''THIS IS OUTDATED DOCUMENTATION''' See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15253</id>
		<title>About Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=About_Umlaut&amp;diff=15253"/>
				<updated>2012-06-19T16:15:29Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;**THIS IS OUTDATED DOCUMENTATION** See new Umlaut documentation at http://github.com/team-umlaut/umlaut/wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]] __NOTOC__&lt;br /&gt;
Umlaut is an open source project originally developed by [[Ross Singer]] while at Georgia Tech, and subsequently worked on quite a bit by Jonathan Rochkind of Johns Hopkins University. Umlaut is sometimes called a “link-resolver front end” or a “middle-tier link resolver”. In fact, the Umlaut is a link resolver, in the sense that it receives [[OpenURL]] requests–usually representing a citation for a scholarly work–and responds with information on services available related to that citation–most significantly, with electronic availability. However, unlike most typical link resolver products (such as [[SFX]]), the Umlaut does not manage its own “knowledge base” of information on what titles an institution possesses from what vendors, and how to link to them. Umlaut relies on SFX–accessed through the [[SFX API]]–for that information and service.&lt;br /&gt;
&lt;br /&gt;
==User Interface Flexibility==&lt;br /&gt;
Umlaut provides a great deal of flexibility with the user interface. Despite any changes to SFX our interface should keep working with little or no modification. It also gives us flexibility to create interfaces that would have been difficult or impossible to create solely through the SFX template system. &lt;br /&gt;
&lt;br /&gt;
==Physical Holdings==&lt;br /&gt;
Umlaut still provides a ‘full’ link resolver menu too, which the user can choose to see, and which is shown when no full text is available. The menu provides location and availability information on physical holdings directly on the screen–no click necessary to see it (at least when there’s an ISSN match; if there’s no ISSN or ISBN match, a link is provided to a keyword search in the catalog instead). See http://findit.library.jhu.edu/go/329602?umlaut.skip_resolve_menu=false for an example. It also imports any URLs found in our catalog in a MARC 856 field, in addition to those in SFX.&lt;br /&gt;
&lt;br /&gt;
==Relevant Links==&lt;br /&gt;
Umlaut provides a few more value-added services too. When appropriate, Umlaut provides links to look up a periodical citation in Ulrich’s or OCLC Worldcat. For a book citation, Umlaut provides a link to Amazon, OCLC Worldcat, or isbndb to find other libraries with the book or the best online price for purchase. Links are put on the page only if a valid destination exists.&lt;br /&gt;
&lt;br /&gt;
==Check for Public Access Versions==&lt;br /&gt;
To discover if an open access version of an item is available, Umlaut does an author/title keyword search of IndexData’s indexes of [[OAISter]] and [[Open Content Alliance]] freely available text.. This is imperfect because all we can do is an author title keyword search. But when it works, it’s cool.&lt;br /&gt;
&lt;br /&gt;
==OPAC Integration==&lt;br /&gt;
It’s also possible to integrate Umlaut into an OPAC, so not only the full text links, but also those ’see also’ links (to WorldCat, isbndb, Amazon, etc) show up. &lt;br /&gt;
&lt;br /&gt;
==Potential Future Directions==&lt;br /&gt;
We have succeeded in de-coupling the link resolver knowledge base (still held within SFX in our case) with the link resolver software (Umlaut, which provides some services beyond what SFX does).Any other link resolver with an API, Umlaut could be hooked up to also, in theory, if someone wanted to write the connector. Could that lead to a commoditization of the link resolver knowledge base_ so we could buy knowledge base maintenance from whoever does the best job without worrying about the quality of their software? Theoretically, maybe some day.&lt;br /&gt;
&lt;br /&gt;
More nearer term, additional features I want to add to Umlaut include:&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
* Google Books search to complement the OCA and Gutenberg searches I’ve got.&lt;br /&gt;
* Connection to OCLC Identities&lt;br /&gt;
* [[xISBN]]/[[thingISBN]] use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available.&lt;br /&gt;
&lt;br /&gt;
==Are you interested in working with Umlaut?==&lt;br /&gt;
We are looking for more development partners for Umlaut. I say ‘development partners’ because it is still at the stage where it’s going to be a bit of work to get it deployed–and you’re probably going to have to write code to get it to talk to your OPAC. At this point, to use/participate in Umlaut, your library probably needs to have a programmer on staff who can devote some time to it (you don’t necessarily need a ruby/rails expert; I wasn’t before I started working with Umlaut). But I am interested in providing support and help for people to do that—and I’m interested in people who want to add even more services to Umlaut. The more institutions we can get using Umlaut, if we can build a community, then our investment in the software is more secure, it’s more likely to continue as a successful and full featured project. Interested? Talk to me.&lt;br /&gt;
&lt;br /&gt;
For those looking for technical details to give our Umlaut the run-through, the base url is:&lt;br /&gt;
 http://findit.library.jhu.edu/resolve&lt;br /&gt;
&lt;br /&gt;
[[Category: Umlaut]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Main_Page&amp;diff=11525</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Main_Page&amp;diff=11525"/>
				<updated>2012-03-07T02:16:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Other Code4Lib Sites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|align=right&lt;br /&gt;
 |__TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== About Code4Lib ==&lt;br /&gt;
&lt;br /&gt;
* [[About Code4Lib]] - Background and history of the community&lt;br /&gt;
* [[A Guide for the Perplexed]] - Building skills for working with library technologies&lt;br /&gt;
* [[How to hack code4lib]] - For those newer to the community&lt;br /&gt;
* [https://docs.google.com/document/d/1m-9VtL7L_fUxl2hTF_YZSdFRfucaLtmHvLSzom6XPVM/edit?pli=1 Code4Lib Indoctrination] (This is a Google doc open to all including anonymous feedback.)&lt;br /&gt;
**&amp;quot;How do we make code4lib a more inclusive place for newcomers? &amp;lt;br/&amp;gt; Or, how do we quickly indoctrinate newbies to our values and ways of doing things?&amp;quot; &lt;br /&gt;
**Suggestions, ideas, and follow-up actions solicited.&lt;br /&gt;
&lt;br /&gt;
==Code4Lib 2013 Conference==&lt;br /&gt;
*[[2013_committees_sign-up_page|Volunteer to help plan 2013 conference]]&lt;br /&gt;
&lt;br /&gt;
== Code4Lib 2012 Conference ==&lt;br /&gt;
&lt;br /&gt;
''See also the [http://wiki.code4lib.org/index.php/Category:Code4Lib2012 Code4lib2012 category]''&lt;br /&gt;
&lt;br /&gt;
* [http://code4lib.org/conference/2012/ 2012 home]&lt;br /&gt;
* [[During_the_Conference_Volunteers|Volunteer to help at code4lib 2012]]&lt;br /&gt;
* [[2012_committees_sign-up_page|Volunteer to help plan 2012 conference]]&lt;br /&gt;
* [[2012_preconference_proposals|2012 Preconference Proposals]]--due Sunday, November 20&lt;br /&gt;
* [[2012_talks_proposals|2012 Talk Proposals]]--due Sunday, November 20&lt;br /&gt;
* [[2012_c4l2012_social_activities|Social Activities]] - ideas and sign-up&lt;br /&gt;
* [[c4l2012_rideshare|Rideshare-Roomshare]]&lt;br /&gt;
* [[c4l2012_t-shirtcontest|T-shirt contest]]&lt;br /&gt;
* [[ideas_for_2012|Put your ideas for 2012 here!]]&lt;br /&gt;
* [[C4L2012_Call_For_Host|2012 Call For Host]]&lt;br /&gt;
* [[How To Plan A Code4LibCon]]&lt;br /&gt;
* [http://linkd.in/unhJsR LinkedIn Event]&lt;br /&gt;
* [[2012_twitter_list|List your Twitter handle here]]&lt;br /&gt;
* [[2012_Lightning_Talks_Signup|Lightning Talks Signup]]&lt;br /&gt;
* [http://irc.code4lib.org/ IRC Channel Timeline &amp;amp; Log]&lt;br /&gt;
* [http://www.livestream.com/code4lib Conference Livestream] (non-attendees only, please!)&lt;br /&gt;
&lt;br /&gt;
== Local / Regional Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[NYC|Code4LibNYC]] - NYC and surrounding areas&lt;br /&gt;
* [[NEC4L|New England Code4lib]] - New England&lt;br /&gt;
* [[NL|Code4Bib]] - Dutch Code4Bib&lt;br /&gt;
* [[MDC|Code4libMDC]] - Maryland, Washington D.C and surrounding areas&lt;br /&gt;
* [http://groups.google.com/group/pnwcode4lib?hl=en PNWCode4Lib] - Pacific Northwest&lt;br /&gt;
* [[North|code4lib North]] - Ontario and surrounding areas ''(new for Jan 2010!)''&lt;br /&gt;
* [[Midwest|Code4Lib Midwest]] - Wherever that is...&lt;br /&gt;
* [http://groups.google.com/group/ikr-fejlesztok/ Code4lib.hu] - Group of Hungarian library developers&lt;br /&gt;
* [http://www.code4lib.jp/ Code4Lib Japan] -  ''(new in 2010!)'', see also [http://twitter.com/yesonline/statuses/28561046501 tweet from Jerry Lee]&lt;br /&gt;
* [http://groups.google.com/group/code4glam Code4GLAM Australia] - coders, hackers, developers and technologists in the Australian GLAM (Galleries, Libraries, Archives &amp;amp; Museums) sector.&lt;br /&gt;
&lt;br /&gt;
== Interest Groups ==&lt;br /&gt;
&lt;br /&gt;
* [[ILS_Interop|ILS Interoperability]] - A group working to develop an infrastructure for interoperating between discovery layers and integrated library systems.&lt;br /&gt;
* [[Open_Source_Book_Widgets|Open Source Book Widgets]] - A list of open source book widgets&lt;br /&gt;
* [[Discovery|Open Source Discovery]] - Open Source application to enhance and support &amp;quot;discovery&amp;quot; in libraries&lt;br /&gt;
* [[Mobile_Apps|Mobile Applications]] - A group interested in mobile web and native application development for libraries&lt;br /&gt;
* [[Sources_Of_Metadata|Sources Of Metadata]] - list of api's and sources of interest to libraries&lt;br /&gt;
&lt;br /&gt;
== Software Usage and Documentation ==&lt;br /&gt;
&lt;br /&gt;
* [[Umlaut]] - OpenURL link resolving middleware&lt;br /&gt;
* [[:Category:Patterns|Patterns for Collaborative Code]] - Patterns to make your open source 'more open', more amenable to distributed development and use at multiple institutions without forking. &lt;br /&gt;
* [[ILS Documentation]]&lt;br /&gt;
* [[OSS Directory]]&lt;br /&gt;
* [[Working with MaRC]]&lt;br /&gt;
* [[Rogue]] - principles for standards creation&lt;br /&gt;
&lt;br /&gt;
== Code4Lib Journal ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Code4Lib Journal|Code4Lib Journal]] - information and working documents&lt;br /&gt;
&lt;br /&gt;
== Current topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Code4Lib Website Update]]&lt;br /&gt;
* [[OCLC Policy Change]]&lt;br /&gt;
* [[SirsiDynix: Integrated Library System Platforms on Open Source]]&lt;br /&gt;
* [[Parsing Library Data]]&lt;br /&gt;
&lt;br /&gt;
== Other Code4Lib Sites ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.code4lib.org/ code4lib.org]&lt;br /&gt;
* [http://planet.code4lib.org planet.code4lib.org]&lt;br /&gt;
* [http://journal.code4lib.org journal.code4lib.org]&lt;br /&gt;
&lt;br /&gt;
== Earlier Conferences and events ==&lt;br /&gt;
[[Conference Financial History At A Glance]]&lt;br /&gt;
&lt;br /&gt;
===Code4Lib 2012 Conference===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Code4Lib 2011 Conference ===&lt;br /&gt;
''See also the [http://wiki.code4lib.org/index.php/Category:Code4Lib2011 Code4lib2011 category]''&lt;br /&gt;
&lt;br /&gt;
* [http://code4lib.org/conference/2011 C4L2011 Home]&lt;br /&gt;
* [[C4L2011_registration | Registration Information!]]&lt;br /&gt;
* [[2011_committees_sign-up_page | 2011 Committees Sign-Up]] - '''Volunteer to help'''&lt;br /&gt;
* [[How To Plan A Code4LibCon]]&lt;br /&gt;
* [[C4L2011_social_activities|Social Activities]] - ideas &amp;amp; sign-up&lt;br /&gt;
* [[C4L2011_planning_wishlist|'''Put your ideas for 2011 here!''']]&lt;br /&gt;
* [http://www.facebook.com/event.php?eid=161853827200024 Facebook Event Page]&lt;br /&gt;
* [http://events.linkedin.com/Code4Lib-2011/pub/448897 LinkedIn Event Page]&lt;br /&gt;
&amp;lt;!-- commenting out until later * '''[[2011 Conference Buzz]] - Conference announcements and a place for code4libbers to plan stuff''' --&amp;gt;&lt;br /&gt;
* [[C4L2011_rideshare|Airport Ride Share and Carpooling]]&lt;br /&gt;
* [[C4L2011_roomshare | Hotel room share]]&lt;br /&gt;
&lt;br /&gt;
=== Code4Lib 2010 Conference ===&lt;br /&gt;
&lt;br /&gt;
''See also the [http://wiki.code4lib.org/index.php/Category:Code4Lib2010 Code4lib2010 category]''&lt;br /&gt;
* [http://code4lib.org/conference/2010/schedule Finalized schedule]&lt;br /&gt;
* [[2010 Lightning Talks Signup]] - sign up to give a lightning talk&lt;br /&gt;
* [[2010 Breakout Sessions]] - suggest a breakout here&lt;br /&gt;
* '''[[2010 Conference Buzz]] - Conference announcements and a place for code4libbers to plan stuff'''&lt;br /&gt;
* [[C4L2010_social_activities|Social Activities]] - ideas &amp;amp; sign-up&lt;br /&gt;
* [[Committees sign-up page]] - '''Volunteer to help'''&lt;br /&gt;
* [[C4L2011_planning_wishlist|'''Put your ideas for 2011 here!''']]&lt;br /&gt;
* [[Asheville Airport to Hotel Van Manifest]] &lt;br /&gt;
* [[C4L2010rideshare|General shared travel/transportation planning]]&lt;br /&gt;
* [[C4L2010planning:RoommatesRidesEtc|Roommates, Rides, Etc]]&lt;br /&gt;
* [[C4L2010_manning_discount|Manning Publications Discount]] - discount code (40% off) for use by attendees through Feb. 28, 2010&lt;br /&gt;
* Thanks also to our other sponsors!&lt;br /&gt;
* [[C4L2010planning|2010 Planning]]&lt;br /&gt;
* [[C4L2010planning:_wishlist | 2010 Planning Wishlist]] - planning page for issues, expectations, etc. for the 2010 conference&lt;br /&gt;
&lt;br /&gt;
=== Code4Lib 2009 Conference ===&lt;br /&gt;
&lt;br /&gt;
* [[BookRaffle]] - coordinate begging publishers for books to raffle off at the conference&lt;br /&gt;
* [http://inkdroid.org/c4l2009/attendees Get FOAFed] - add your FOAF profile to the network of c4l2009 attendees&lt;br /&gt;
* PreConferences:&lt;br /&gt;
** [[GIS_preconf_code4libcon2009]] - Open source GIS just like mom used to make&lt;br /&gt;
** [[LinkedData]] - A proposal for a linked-data code4lib2009 pre-conference&lt;br /&gt;
** [[LibX_Preconference]] - Proposal for a half-day pre-conference targeted at developers who wish to use the LibX 2.0 platform&lt;br /&gt;
** [http://code4lib.org/2009/oclc-precon OCLC Grid Services Preconference]&lt;br /&gt;
* [[RoommatesRidesEtc]] - Find roommates for Code4Lib 2009, share rides, etc.&lt;br /&gt;
* [[2009 Conference Buzz]] - Conference announcements and a place for code4libbers to plan stuff&lt;br /&gt;
&lt;br /&gt;
=== Other workshops ===&lt;br /&gt;
* [http://barcamp.org/SearchCampDC SearchCampDC] - barcamp style event in DC with usual suspects from code4lib&lt;br /&gt;
* [[code4lib/elag2010]] - 1-day code4lib preconference at elag2010&lt;br /&gt;
&lt;br /&gt;
== Archived topics ==&lt;br /&gt;
&lt;br /&gt;
* [[Logo Design Process]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[AdminToDo]] - ideas and tasks for maintaining the Code4Lib sites&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10302</id>
		<title>2012 preconference proposals</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10302"/>
				<updated>2012-01-17T15:48:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Interest in Attending */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Proposals for 2012 Code4LibCon Preconferences=&lt;br /&gt;
Proposals closed Sunday, November 20, 2011, so we can finalize the list and add them to registration! (The deadline for preconference proposals has passed.)&lt;br /&gt;
&lt;br /&gt;
Spaces available: main meeting room (max 275) + 5 breakout rooms (max 30-50). &lt;br /&gt;
&lt;br /&gt;
'''Please include a &amp;quot;Contact/Responsible Individual&amp;quot; name and email address so we know who is willing to put on the proposed precon.&lt;br /&gt;
'''&lt;br /&gt;
==Full Day==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hacking Content ===&lt;br /&gt;
&lt;br /&gt;
What is the future of getting library information and resources into users’ hands at the right time and with appropriate context and relevancy.  Learning management systems, library guides, Web-scale discovery systems-plenty of tools to choose from and still we see lots of opportunities for improvement. Let’s pick them apart and brainstorm ideas for projects that could address weaknesses in one or all of these systems. If you’re interested in these issues, challenges and conundrums join us for a day of thinking, dreaming and scheming. All skill sets and backgrounds needed. &lt;br /&gt;
&lt;br /&gt;
Speakers/Facilitators will be:&lt;br /&gt;
 - Thom Cox - Manager of Library Information Technology Services - Tufts University&lt;br /&gt;
 - Ken Varnum – Web Systems Manager - University of Michigan Libraries&lt;br /&gt;
 - Evviva Weinraub – Director, Emerging Technologies and Services - Oregon State University Libraries &lt;br /&gt;
&lt;br /&gt;
Contact:  Margaret Mellinger - margaret dot mellinger at oregonstate dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*David Uspal (david DOT uspal AT villanova DOT edu)&lt;br /&gt;
*Tammy Allgood Wolf&lt;br /&gt;
&lt;br /&gt;
=== Developing applications using REST web services ===&lt;br /&gt;
&lt;br /&gt;
Been hearing about web services but don’t know where to start to build something? Have you built applications that use read services but are stumped by OAuth, Content Negotiation and HTTP Headers? Come dig in and learn how to build applications that interact with both read and write REST services. We’ll cover the basic principles and practices of REST services and discuss the Atom Publishing Protocol as a REST service and its extensibility. The group will examine and test the CouchDB HTTP API by building a simple list creation tool. You’ll learn how OCLC’s platform web services leverage Atom to expose the data and business processes from OCLC’s library systems. By the end of the session, you’ll know the basic principles of REST services, be able to perform Create, Read, Update and Delete operations via REST and be able to authenticate to REST services via API keys and OAuth.&lt;br /&gt;
&lt;br /&gt;
Come ready to learn and code!&lt;br /&gt;
&lt;br /&gt;
Presenter: Karen Coombs - coombsk at oclc dot org&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*Sam Kome&lt;br /&gt;
*Ray Schwartz&lt;br /&gt;
*Jim Robinson&lt;br /&gt;
*David Bucknum&lt;br /&gt;
*Jean Rainwater&lt;br /&gt;
*Laney McGlohon&lt;br /&gt;
*Joshua Gomez&lt;br /&gt;
*Wayne Schneider&lt;br /&gt;
*Andy Kohler&lt;br /&gt;
*Michael North&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
*Charlie Morris&lt;br /&gt;
*Michael Lindsey&lt;br /&gt;
* Kåre Fiedler Christiansen (morning only)&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
&lt;br /&gt;
==Half Day Morning==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linkfest ===&lt;br /&gt;
&lt;br /&gt;
We've had talks and sessions galore about Linked Data at code4lib in past years.  Let's focus on linking.  Bring data you want to publish and link to or link from and your ideas about new ways we can push data linking into being part of our regular approach to how we put our libraries' content and services on the web.  At the start of the session we'll run a quick poll to see who wants to link to what and how, and we'll pair or group up and get to work from there.  May a kajillion links bloom!&lt;br /&gt;
&lt;br /&gt;
If you need an &amp;quot;intro to linked data&amp;quot; we can prep a good list of readings/talks to review before you come.  But please come ready to link!&lt;br /&gt;
&lt;br /&gt;
Organizer type person:  Dan Chudnov, GWU Libraries, @dchud or dchud at gwu edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
*Becky Yoose&lt;br /&gt;
*Tom Johnson&lt;br /&gt;
*Ed Summers&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* William Gunn&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* Keri Thompson&lt;br /&gt;
* David Lacy&lt;br /&gt;
* Corey A Harper&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
&lt;br /&gt;
=== What's New in Solr ===&lt;br /&gt;
&lt;br /&gt;
This session will bring folks up to speed on the latest developments in Lucene and Solr.  There's always a lot of new capabilities as well as tips and tricks on using Solr in clever and powerful ways.  &lt;br /&gt;
&lt;br /&gt;
Presenter: Erik Hatcher - erik . hatcher @ lucidimagination dot com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* &amp;quot;Erik Hetzner&amp;quot; &amp;lt;erik.hetzner AT ucop BORK edu&amp;gt;&lt;br /&gt;
* &amp;quot;Kevin S. Clarke&amp;quot; &amp;lt;ksclarke@gmail&amp;gt;&lt;br /&gt;
* &amp;quot;Michael B. Klein&amp;quot; &amp;lt;mbklein@gmail&amp;gt;&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* &amp;quot;Mark Mounts&amp;quot; &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* David Isaak &amp;lt;david.isaak@kpchr.org&amp;gt;&lt;br /&gt;
* John Pillans &amp;lt;jpillan@indiana.edu&amp;gt;&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
==Half Day Afternoon==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git -r done === &lt;br /&gt;
&lt;br /&gt;
A session to cover all things Git, everyone's favorite distributed version control system.  This session should cover a little bit of the history of Git, how it works, and how it's different than other version controls systems like SVN.  Practical application should also be covered, including how to clone existing repos and contribute code back to them, how to host your own repository, and best practices for setting up a distributed network.&lt;br /&gt;
&lt;br /&gt;
Looking for attendees with real-life Git experience to share it, so we can all broaden our understanding of possible use-cases and nifty advanced features.&lt;br /&gt;
&lt;br /&gt;
Coordinator:  Ian Walls, ByWater Solutions, @sekjal or ian.walls at bywatersolutions com&lt;br /&gt;
&lt;br /&gt;
Helper: Cary Gordon, Cherry Hill Company, @highermath / cgordon@chillco.com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
* Patrick Berry (pberry@csuchico.edu)&lt;br /&gt;
* Chris Sharp (csharp@georgialibraries.org)&lt;br /&gt;
* Matt Critchlow (mcritchlow@ucsd.edu)&lt;br /&gt;
* Peter Murray (Peter.Murray@lyrasis.org)&lt;br /&gt;
* Margaret Heller (mheller@dom.edu)&lt;br /&gt;
* Kevin S. Clarke (ksclarke@gmail)&lt;br /&gt;
* Michael B. Klein (mbklein@gmail)&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* Benjamin Shum (bshum@biblio.org)&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* Tammy Allgood Wolf (tammy.allgood@asu.edu)&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Lisa Kurt (lkurt@unr.edu)&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
&lt;br /&gt;
=== Blacklight ===&lt;br /&gt;
&lt;br /&gt;
This session will be walk-through of the architecture of Blacklight and what we have been improving since the rails 3 upgrade.  In addition to the architecture of the software, we will also briefly discuss the architecture of the Blacklight community and what has made it successful so far.&lt;br /&gt;
&lt;br /&gt;
For part of the session we will install Blacklight live and get it up and running.  This install demo will include a How-To on basic customizations in Blacklight using a test-driven approach (one of the cornerstones of the Blacklight community).&lt;br /&gt;
&lt;br /&gt;
For more information about Blacklight see our wiki ( http://projectblacklight.org/ ) and our GitHub repo ( https://github.com/projectblacklight/blacklight ).  We will also send out some brief instructions beforehand for those that would like to setup their environments to follow along and get Blacklight up and running on their local machines.&lt;br /&gt;
&lt;br /&gt;
Presenters: Jessie Keck, Stanford University - jkeck at stanford dot edu | Molly Pickral, University of Virginia - mpc3c at virginia dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* John Pillans (jpillan@indiana.edu)&lt;br /&gt;
* Mang Sun (mang.dot sun at rice dot edu)&lt;br /&gt;
* Emily Lynema (emily_lynema at ncsu dot edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Daniel Lovins (daniel dot lovins at nyu dot edu)&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
=== DACS and EAD Overview ===&lt;br /&gt;
&lt;br /&gt;
This session will look at what DACS (Describing Archives: a Content Standard) is and describe the ten required elements.  Then there will be an overview of what EAD is, how it works, and the required elements.  The final part will be a practice session on taking a paper finding aid and coding it using DACS and EAD.&lt;br /&gt;
&lt;br /&gt;
Presenter:  Doris Munson, Eastern Washington University, dmunson at ewu dot edu&lt;br /&gt;
(please feel free to contact me if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Francis Kayiwa ( kayiwa@ YouEyeSee dot edu )&lt;br /&gt;
* Carmen Mitchell (carmenmitchell at gmail dot com)&lt;br /&gt;
&lt;br /&gt;
=== [[Digging into metadata: context, code, and collaboration]] ===&lt;br /&gt;
&lt;br /&gt;
Working with library/archival metadata is difficult. This preconference will tackle pressing questions and will show some of the intricacies of metadata (including AACR2/MARC) with exercises to demonstrate why inconsistencies exist in the data. What steps can the cataloging &amp;amp; metadata community take to help improve the quality of this data?  What tools &amp;amp; techniques could help?  Rules have evolved over time leaving dirty legacy data.  Systems have impacted--and will continue to impact--data structure &amp;amp; design.  How can this data be aggregated and refined for use in a new emerging data environments?  What assumptions can safely be made and when do you need to inquire about local practice?  We will end with a hack-fest where you can ask questions of experienced catalogers and get help with your metadata related problems.  Bring your laptops and data.   &lt;br /&gt;
&lt;br /&gt;
Person Herder: Becky Yoose, Grinnell College, yoosebec at grinnell dot edu&lt;br /&gt;
&lt;br /&gt;
Collaborators/Facilitators: Corey Harper, New York University - corey dot harper at nyu dot edu | Shana L. McDanold, University of Pennsylvania - 	&lt;br /&gt;
mcdanold at pobox dot upenn dot edu  | Laura Smart, Caltech - laura at library dot caltech dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Jen Weintraub (jweintraub@library.ucla.edu)&lt;br /&gt;
* Peter Green (pmgreen@princeton.edu)&lt;br /&gt;
* David Isaak (david.isaak@kpchr.org)&lt;br /&gt;
* Alex Rolfe (arolfe@georgefox.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sarah Johnston (johnsts@stolaf.edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Geo&amp;quot; ===&lt;br /&gt;
This session will explore, we hope collaboratively, the presentation of objects on maps.  There will be a section on workflow, a section on discovering objects via &amp;quot;geobrowse,&amp;quot; a section discovery of objects via &amp;quot;geosearch,&amp;quot; and an exploration of the discovery and presentation of geo-referenced images (e.g. historic maps). There will be open discussion on other approaches to map-based discovery.  Emphasis will be placed on simplicity of workflow and implementation.  Technologies include: Atom, Django, Solr, and OpenLayers.  &lt;br /&gt;
&lt;br /&gt;
Presenters:  Mike Graves, UNC Chapel Hill, gravm at email dot unc dot edu; Tim Shearer, UNC Chapel Hill, tshearer at email dot unc dot edu&lt;br /&gt;
(please feel free to contact Tim if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Jason Casden (jmcasden AT ncsu DOT edu&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
== Half-day Evening ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Campus Visit ===&lt;br /&gt;
Join us for a trip across Lake Washington to Microsoft Headquarters.  Bus will depart from the conference hotel at 4:15pm on Monday. We will visit the Microsoft Home and the Envisioning Lab.  The we'll head over to Microsoft Research for drinks and appetizers, and you'll see some great demos of some cool new (and free!) technologies coming out of MSR.  Bus will get back to hotel by 9:00pm, plenty of time to hit a pub.  You'll learn about:&lt;br /&gt;
&lt;br /&gt;
1. Layerscape -[http://communities.worldwidetelescope.org/]&lt;br /&gt;
&lt;br /&gt;
2. ChronoZoom - [http://research.microsoft.com/chronozoom/]&lt;br /&gt;
&lt;br /&gt;
3. F# - [http://www.tryfsharp.org]&lt;br /&gt;
&lt;br /&gt;
4. Microsoft Academic Search - [http://academic.research.microsoft.com]&lt;br /&gt;
&lt;br /&gt;
5. Microsoft Audio Visual Indexing System - [http://research.microsoft.com/mavis] &lt;br /&gt;
&lt;br /&gt;
Space is limited, so reserve your seat today  Email Alex at the address below.    &lt;br /&gt;
&lt;br /&gt;
Coordinator: Alex Wade, Microsoft Research, awade at microsoft dot com &lt;br /&gt;
&lt;br /&gt;
Presenters: Behrooz Chitsaz; Rob Fatland; Christophe Poulain; Michael Zyskowski &lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Matt Critchlow&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Kyle Banerjee &amp;lt;banerjek@uoregon.edu&amp;gt;&lt;br /&gt;
* Evviva Weinraub&lt;br /&gt;
* Emily Lynema &amp;lt;emily_lynema at ncsu dot edu&amp;gt;&lt;br /&gt;
* Jason Casden &amp;lt;jmcasden AT ncsu DOT edu&amp;gt;&lt;br /&gt;
* Daniel Lovins &amp;lt;daniel.lovins@nyu.edu&amp;gt;&lt;br /&gt;
* Cynthia Ng&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Shaun Ellis (shaune AT princeton DOT edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
* Anna Headley&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Dileshni Jayasinghe&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib2012]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10301</id>
		<title>2012 preconference proposals</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10301"/>
				<updated>2012-01-17T15:47:31Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Interest in Attending */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Proposals for 2012 Code4LibCon Preconferences=&lt;br /&gt;
Proposals closed Sunday, November 20, 2011, so we can finalize the list and add them to registration! (The deadline for preconference proposals has passed.)&lt;br /&gt;
&lt;br /&gt;
Spaces available: main meeting room (max 275) + 5 breakout rooms (max 30-50). &lt;br /&gt;
&lt;br /&gt;
'''Please include a &amp;quot;Contact/Responsible Individual&amp;quot; name and email address so we know who is willing to put on the proposed precon.&lt;br /&gt;
'''&lt;br /&gt;
==Full Day==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hacking Content ===&lt;br /&gt;
&lt;br /&gt;
What is the future of getting library information and resources into users’ hands at the right time and with appropriate context and relevancy.  Learning management systems, library guides, Web-scale discovery systems-plenty of tools to choose from and still we see lots of opportunities for improvement. Let’s pick them apart and brainstorm ideas for projects that could address weaknesses in one or all of these systems. If you’re interested in these issues, challenges and conundrums join us for a day of thinking, dreaming and scheming. All skill sets and backgrounds needed. &lt;br /&gt;
&lt;br /&gt;
Speakers/Facilitators will be:&lt;br /&gt;
 - Thom Cox - Manager of Library Information Technology Services - Tufts University&lt;br /&gt;
 - Ken Varnum – Web Systems Manager - University of Michigan Libraries&lt;br /&gt;
 - Evviva Weinraub – Director, Emerging Technologies and Services - Oregon State University Libraries &lt;br /&gt;
&lt;br /&gt;
Contact:  Margaret Mellinger - margaret dot mellinger at oregonstate dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*David Uspal (david DOT uspal AT villanova DOT edu)&lt;br /&gt;
*Tammy Allgood Wolf&lt;br /&gt;
&lt;br /&gt;
=== Developing applications using REST web services ===&lt;br /&gt;
&lt;br /&gt;
Been hearing about web services but don’t know where to start to build something? Have you built applications that use read services but are stumped by OAuth, Content Negotiation and HTTP Headers? Come dig in and learn how to build applications that interact with both read and write REST services. We’ll cover the basic principles and practices of REST services and discuss the Atom Publishing Protocol as a REST service and its extensibility. The group will examine and test the CouchDB HTTP API by building a simple list creation tool. You’ll learn how OCLC’s platform web services leverage Atom to expose the data and business processes from OCLC’s library systems. By the end of the session, you’ll know the basic principles of REST services, be able to perform Create, Read, Update and Delete operations via REST and be able to authenticate to REST services via API keys and OAuth.&lt;br /&gt;
&lt;br /&gt;
Come ready to learn and code!&lt;br /&gt;
&lt;br /&gt;
Presenter: Karen Coombs - coombsk at oclc dot org&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*Sam Kome&lt;br /&gt;
*Ray Schwartz&lt;br /&gt;
*Jim Robinson&lt;br /&gt;
*David Bucknum&lt;br /&gt;
*Jean Rainwater&lt;br /&gt;
*Laney McGlohon&lt;br /&gt;
*Joshua Gomez&lt;br /&gt;
*Wayne Schneider&lt;br /&gt;
*Andy Kohler&lt;br /&gt;
*Michael North&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
*Charlie Morris&lt;br /&gt;
*Michael Lindsey&lt;br /&gt;
* Kåre Fiedler Christiansen (morning only)&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
&lt;br /&gt;
==Half Day Morning==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linkfest ===&lt;br /&gt;
&lt;br /&gt;
We've had talks and sessions galore about Linked Data at code4lib in past years.  Let's focus on linking.  Bring data you want to publish and link to or link from and your ideas about new ways we can push data linking into being part of our regular approach to how we put our libraries' content and services on the web.  At the start of the session we'll run a quick poll to see who wants to link to what and how, and we'll pair or group up and get to work from there.  May a kajillion links bloom!&lt;br /&gt;
&lt;br /&gt;
If you need an &amp;quot;intro to linked data&amp;quot; we can prep a good list of readings/talks to review before you come.  But please come ready to link!&lt;br /&gt;
&lt;br /&gt;
Organizer type person:  Dan Chudnov, GWU Libraries, @dchud or dchud at gwu edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
*Becky Yoose&lt;br /&gt;
*Tom Johnson&lt;br /&gt;
*Ed Summers&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* William Gunn&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* Keri Thompson&lt;br /&gt;
* David Lacy&lt;br /&gt;
* Corey A Harper&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
&lt;br /&gt;
=== What's New in Solr ===&lt;br /&gt;
&lt;br /&gt;
This session will bring folks up to speed on the latest developments in Lucene and Solr.  There's always a lot of new capabilities as well as tips and tricks on using Solr in clever and powerful ways.  &lt;br /&gt;
&lt;br /&gt;
Presenter: Erik Hatcher - erik . hatcher @ lucidimagination dot com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* &amp;quot;Erik Hetzner&amp;quot; &amp;lt;erik.hetzner AT ucop BORK edu&amp;gt;&lt;br /&gt;
* &amp;quot;Kevin S. Clarke&amp;quot; &amp;lt;ksclarke@gmail&amp;gt;&lt;br /&gt;
* &amp;quot;Michael B. Klein&amp;quot; &amp;lt;mbklein@gmail&amp;gt;&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* &amp;quot;Mark Mounts&amp;quot; &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* David Isaak &amp;lt;david.isaak@kpchr.org&amp;gt;&lt;br /&gt;
* John Pillans &amp;lt;jpillan@indiana.edu&amp;gt;&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
==Half Day Afternoon==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git -r done === &lt;br /&gt;
&lt;br /&gt;
A session to cover all things Git, everyone's favorite distributed version control system.  This session should cover a little bit of the history of Git, how it works, and how it's different than other version controls systems like SVN.  Practical application should also be covered, including how to clone existing repos and contribute code back to them, how to host your own repository, and best practices for setting up a distributed network.&lt;br /&gt;
&lt;br /&gt;
Looking for attendees with real-life Git experience to share it, so we can all broaden our understanding of possible use-cases and nifty advanced features.&lt;br /&gt;
&lt;br /&gt;
Coordinator:  Ian Walls, ByWater Solutions, @sekjal or ian.walls at bywatersolutions com&lt;br /&gt;
&lt;br /&gt;
Helper: Cary Gordon, Cherry Hill Company, @highermath / cgordon@chillco.com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
* Patrick Berry (pberry@csuchico.edu)&lt;br /&gt;
* Chris Sharp (csharp@georgialibraries.org)&lt;br /&gt;
* Matt Critchlow (mcritchlow@ucsd.edu)&lt;br /&gt;
* Peter Murray (Peter.Murray@lyrasis.org)&lt;br /&gt;
* Margaret Heller (mheller@dom.edu)&lt;br /&gt;
* Kevin S. Clarke (ksclarke@gmail)&lt;br /&gt;
* Michael B. Klein (mbklein@gmail)&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* Benjamin Shum (bshum@biblio.org)&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* Tammy Allgood Wolf (tammy.allgood@asu.edu)&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Lisa Kurt (lkurt@unr.edu)&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
&lt;br /&gt;
=== Blacklight ===&lt;br /&gt;
&lt;br /&gt;
This session will be walk-through of the architecture of Blacklight and what we have been improving since the rails 3 upgrade.  In addition to the architecture of the software, we will also briefly discuss the architecture of the Blacklight community and what has made it successful so far.&lt;br /&gt;
&lt;br /&gt;
For part of the session we will install Blacklight live and get it up and running.  This install demo will include a How-To on basic customizations in Blacklight using a test-driven approach (one of the cornerstones of the Blacklight community).&lt;br /&gt;
&lt;br /&gt;
For more information about Blacklight see our wiki ( http://projectblacklight.org/ ) and our GitHub repo ( https://github.com/projectblacklight/blacklight ).  We will also send out some brief instructions beforehand for those that would like to setup their environments to follow along and get Blacklight up and running on their local machines.&lt;br /&gt;
&lt;br /&gt;
Presenters: Jessie Keck, Stanford University - jkeck at stanford dot edu | Molly Pickral, University of Virginia - mpc3c at virginia dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* John Pillans (jpillan@indiana.edu)&lt;br /&gt;
* Mang Sun (mang.dot sun at rice dot edu)&lt;br /&gt;
* Emily Lynema (emily_lynema at ncsu dot edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Daniel Lovins (daniel dot lovins at nyu dot edu)&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
=== DACS and EAD Overview ===&lt;br /&gt;
&lt;br /&gt;
This session will look at what DACS (Describing Archives: a Content Standard) is and describe the ten required elements.  Then there will be an overview of what EAD is, how it works, and the required elements.  The final part will be a practice session on taking a paper finding aid and coding it using DACS and EAD.&lt;br /&gt;
&lt;br /&gt;
Presenter:  Doris Munson, Eastern Washington University, dmunson at ewu dot edu&lt;br /&gt;
(please feel free to contact me if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Francis Kayiwa ( kayiwa@ YouEyeSee dot edu )&lt;br /&gt;
* Carmen Mitchell (carmenmitchell at gmail dot com)&lt;br /&gt;
&lt;br /&gt;
=== [[Digging into metadata: context, code, and collaboration]] ===&lt;br /&gt;
&lt;br /&gt;
Working with library/archival metadata is difficult. This preconference will tackle pressing questions and will show some of the intricacies of metadata (including AACR2/MARC) with exercises to demonstrate why inconsistencies exist in the data. What steps can the cataloging &amp;amp; metadata community take to help improve the quality of this data?  What tools &amp;amp; techniques could help?  Rules have evolved over time leaving dirty legacy data.  Systems have impacted--and will continue to impact--data structure &amp;amp; design.  How can this data be aggregated and refined for use in a new emerging data environments?  What assumptions can safely be made and when do you need to inquire about local practice?  We will end with a hack-fest where you can ask questions of experienced catalogers and get help with your metadata related problems.  Bring your laptops and data.   &lt;br /&gt;
&lt;br /&gt;
Person Herder: Becky Yoose, Grinnell College, yoosebec at grinnell dot edu&lt;br /&gt;
&lt;br /&gt;
Collaborators/Facilitators: Corey Harper, New York University - corey dot harper at nyu dot edu | Shana L. McDanold, University of Pennsylvania - 	&lt;br /&gt;
mcdanold at pobox dot upenn dot edu  | Laura Smart, Caltech - laura at library dot caltech dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Jen Weintraub (jweintraub@library.ucla.edu)&lt;br /&gt;
* Peter Green (pmgreen@princeton.edu)&lt;br /&gt;
* David Isaak (david.isaak@kpchr.org)&lt;br /&gt;
* Alex Rolfe (arolfe@georgefox.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sarah Johnston (johnsts@stolaf.edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Geo&amp;quot; ===&lt;br /&gt;
This session will explore, we hope collaboratively, the presentation of objects on maps.  There will be a section on workflow, a section on discovering objects via &amp;quot;geobrowse,&amp;quot; a section discovery of objects via &amp;quot;geosearch,&amp;quot; and an exploration of the discovery and presentation of geo-referenced images (e.g. historic maps). There will be open discussion on other approaches to map-based discovery.  Emphasis will be placed on simplicity of workflow and implementation.  Technologies include: Atom, Django, Solr, and OpenLayers.  &lt;br /&gt;
&lt;br /&gt;
Presenters:  Mike Graves, UNC Chapel Hill, gravm at email dot unc dot edu; Tim Shearer, UNC Chapel Hill, tshearer at email dot unc dot edu&lt;br /&gt;
(please feel free to contact Tim if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Jason Casden (jmcasden AT ncsu DOT edu&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
&lt;br /&gt;
== Half-day Evening ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Campus Visit ===&lt;br /&gt;
Join us for a trip across Lake Washington to Microsoft Headquarters.  Bus will depart from the conference hotel at 4:15pm on Monday. We will visit the Microsoft Home and the Envisioning Lab.  The we'll head over to Microsoft Research for drinks and appetizers, and you'll see some great demos of some cool new (and free!) technologies coming out of MSR.  Bus will get back to hotel by 9:00pm, plenty of time to hit a pub.  You'll learn about:&lt;br /&gt;
&lt;br /&gt;
1. Layerscape -[http://communities.worldwidetelescope.org/]&lt;br /&gt;
&lt;br /&gt;
2. ChronoZoom - [http://research.microsoft.com/chronozoom/]&lt;br /&gt;
&lt;br /&gt;
3. F# - [http://www.tryfsharp.org]&lt;br /&gt;
&lt;br /&gt;
4. Microsoft Academic Search - [http://academic.research.microsoft.com]&lt;br /&gt;
&lt;br /&gt;
5. Microsoft Audio Visual Indexing System - [http://research.microsoft.com/mavis] &lt;br /&gt;
&lt;br /&gt;
Space is limited, so reserve your seat today  Email Alex at the address below.    &lt;br /&gt;
&lt;br /&gt;
Coordinator: Alex Wade, Microsoft Research, awade at microsoft dot com &lt;br /&gt;
&lt;br /&gt;
Presenters: Behrooz Chitsaz; Rob Fatland; Christophe Poulain; Michael Zyskowski &lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Matt Critchlow&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Kyle Banerjee &amp;lt;banerjek@uoregon.edu&amp;gt;&lt;br /&gt;
* Evviva Weinraub&lt;br /&gt;
* Emily Lynema &amp;lt;emily_lynema at ncsu dot edu&amp;gt;&lt;br /&gt;
* Jason Casden &amp;lt;jmcasden AT ncsu DOT edu&amp;gt;&lt;br /&gt;
* Daniel Lovins &amp;lt;daniel.lovins@nyu.edu&amp;gt;&lt;br /&gt;
* Cynthia Ng&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Shaun Ellis (shaune AT princeton DOT edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
* Anna Headley&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Dileshni Jayasinghe&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib2012]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10300</id>
		<title>2012 preconference proposals</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=2012_preconference_proposals&amp;diff=10300"/>
				<updated>2012-01-17T15:47:07Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Interest in Attending */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Proposals for 2012 Code4LibCon Preconferences=&lt;br /&gt;
Proposals closed Sunday, November 20, 2011, so we can finalize the list and add them to registration! (The deadline for preconference proposals has passed.)&lt;br /&gt;
&lt;br /&gt;
Spaces available: main meeting room (max 275) + 5 breakout rooms (max 30-50). &lt;br /&gt;
&lt;br /&gt;
'''Please include a &amp;quot;Contact/Responsible Individual&amp;quot; name and email address so we know who is willing to put on the proposed precon.&lt;br /&gt;
'''&lt;br /&gt;
==Full Day==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Hacking Content ===&lt;br /&gt;
&lt;br /&gt;
What is the future of getting library information and resources into users’ hands at the right time and with appropriate context and relevancy.  Learning management systems, library guides, Web-scale discovery systems-plenty of tools to choose from and still we see lots of opportunities for improvement. Let’s pick them apart and brainstorm ideas for projects that could address weaknesses in one or all of these systems. If you’re interested in these issues, challenges and conundrums join us for a day of thinking, dreaming and scheming. All skill sets and backgrounds needed. &lt;br /&gt;
&lt;br /&gt;
Speakers/Facilitators will be:&lt;br /&gt;
 - Thom Cox - Manager of Library Information Technology Services - Tufts University&lt;br /&gt;
 - Ken Varnum – Web Systems Manager - University of Michigan Libraries&lt;br /&gt;
 - Evviva Weinraub – Director, Emerging Technologies and Services - Oregon State University Libraries &lt;br /&gt;
&lt;br /&gt;
Contact:  Margaret Mellinger - margaret dot mellinger at oregonstate dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*David Uspal (david DOT uspal AT villanova DOT edu)&lt;br /&gt;
*Tammy Allgood Wolf&lt;br /&gt;
&lt;br /&gt;
=== Developing applications using REST web services ===&lt;br /&gt;
&lt;br /&gt;
Been hearing about web services but don’t know where to start to build something? Have you built applications that use read services but are stumped by OAuth, Content Negotiation and HTTP Headers? Come dig in and learn how to build applications that interact with both read and write REST services. We’ll cover the basic principles and practices of REST services and discuss the Atom Publishing Protocol as a REST service and its extensibility. The group will examine and test the CouchDB HTTP API by building a simple list creation tool. You’ll learn how OCLC’s platform web services leverage Atom to expose the data and business processes from OCLC’s library systems. By the end of the session, you’ll know the basic principles of REST services, be able to perform Create, Read, Update and Delete operations via REST and be able to authenticate to REST services via API keys and OAuth.&lt;br /&gt;
&lt;br /&gt;
Come ready to learn and code!&lt;br /&gt;
&lt;br /&gt;
Presenter: Karen Coombs - coombsk at oclc dot org&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
*Sam Kome&lt;br /&gt;
*Ray Schwartz&lt;br /&gt;
*Jim Robinson&lt;br /&gt;
*David Bucknum&lt;br /&gt;
*Jean Rainwater&lt;br /&gt;
*Laney McGlohon&lt;br /&gt;
*Joshua Gomez&lt;br /&gt;
*Wayne Schneider&lt;br /&gt;
*Andy Kohler&lt;br /&gt;
*Michael North&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
*Charlie Morris&lt;br /&gt;
*Michael Lindsey&lt;br /&gt;
* Kåre Fiedler Christiansen (morning only)&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
&lt;br /&gt;
==Half Day Morning==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Linkfest ===&lt;br /&gt;
&lt;br /&gt;
We've had talks and sessions galore about Linked Data at code4lib in past years.  Let's focus on linking.  Bring data you want to publish and link to or link from and your ideas about new ways we can push data linking into being part of our regular approach to how we put our libraries' content and services on the web.  At the start of the session we'll run a quick poll to see who wants to link to what and how, and we'll pair or group up and get to work from there.  May a kajillion links bloom!&lt;br /&gt;
&lt;br /&gt;
If you need an &amp;quot;intro to linked data&amp;quot; we can prep a good list of readings/talks to review before you come.  But please come ready to link!&lt;br /&gt;
&lt;br /&gt;
Organizer type person:  Dan Chudnov, GWU Libraries, @dchud or dchud at gwu edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
*Becky Yoose&lt;br /&gt;
*Tom Johnson&lt;br /&gt;
*Ed Summers&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* William Gunn&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* Keri Thompson&lt;br /&gt;
* David Lacy&lt;br /&gt;
* Corey A Harper&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
&lt;br /&gt;
=== What's New in Solr ===&lt;br /&gt;
&lt;br /&gt;
This session will bring folks up to speed on the latest developments in Lucene and Solr.  There's always a lot of new capabilities as well as tips and tricks on using Solr in clever and powerful ways.  &lt;br /&gt;
&lt;br /&gt;
Presenter: Erik Hatcher - erik . hatcher @ lucidimagination dot com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* &amp;quot;Erik Hetzner&amp;quot; &amp;lt;erik.hetzner AT ucop BORK edu&amp;gt;&lt;br /&gt;
* &amp;quot;Kevin S. Clarke&amp;quot; &amp;lt;ksclarke@gmail&amp;gt;&lt;br /&gt;
* &amp;quot;Michael B. Klein&amp;quot; &amp;lt;mbklein@gmail&amp;gt;&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* &amp;quot;Mark Mounts&amp;quot; &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* David Isaak &amp;lt;david.isaak@kpchr.org&amp;gt;&lt;br /&gt;
* John Pillans &amp;lt;jpillan@indiana.edu&amp;gt;&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Jonathan Rochkind&lt;br /&gt;
&lt;br /&gt;
==Half Day Afternoon==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Git -r done === &lt;br /&gt;
&lt;br /&gt;
A session to cover all things Git, everyone's favorite distributed version control system.  This session should cover a little bit of the history of Git, how it works, and how it's different than other version controls systems like SVN.  Practical application should also be covered, including how to clone existing repos and contribute code back to them, how to host your own repository, and best practices for setting up a distributed network.&lt;br /&gt;
&lt;br /&gt;
Looking for attendees with real-life Git experience to share it, so we can all broaden our understanding of possible use-cases and nifty advanced features.&lt;br /&gt;
&lt;br /&gt;
Coordinator:  Ian Walls, ByWater Solutions, @sekjal or ian.walls at bywatersolutions com&lt;br /&gt;
&lt;br /&gt;
Helper: Cary Gordon, Cherry Hill Company, @highermath / cgordon@chillco.com&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
&lt;br /&gt;
* Patrick Berry (pberry@csuchico.edu)&lt;br /&gt;
* Chris Sharp (csharp@georgialibraries.org)&lt;br /&gt;
* Matt Critchlow (mcritchlow@ucsd.edu)&lt;br /&gt;
* Peter Murray (Peter.Murray@lyrasis.org)&lt;br /&gt;
* Margaret Heller (mheller@dom.edu)&lt;br /&gt;
* Kevin S. Clarke (ksclarke@gmail)&lt;br /&gt;
* Michael B. Klein (mbklein@gmail)&lt;br /&gt;
* Demian Katz (demian DOT katz AT villanova DOT edu)&lt;br /&gt;
* Benjamin Shum (bshum@biblio.org)&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* Tammy Allgood Wolf (tammy.allgood@asu.edu)&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Lisa Kurt (lkurt@unr.edu)&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* John Wynstra (john.wynstra@uni.edu)&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Shaun Ellis (shaune@princeton.edu)&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
&lt;br /&gt;
=== Blacklight ===&lt;br /&gt;
&lt;br /&gt;
This session will be walk-through of the architecture of Blacklight and what we have been improving since the rails 3 upgrade.  In addition to the architecture of the software, we will also briefly discuss the architecture of the Blacklight community and what has made it successful so far.&lt;br /&gt;
&lt;br /&gt;
For part of the session we will install Blacklight live and get it up and running.  This install demo will include a How-To on basic customizations in Blacklight using a test-driven approach (one of the cornerstones of the Blacklight community).&lt;br /&gt;
&lt;br /&gt;
For more information about Blacklight see our wiki ( http://projectblacklight.org/ ) and our GitHub repo ( https://github.com/projectblacklight/blacklight ).  We will also send out some brief instructions beforehand for those that would like to setup their environments to follow along and get Blacklight up and running on their local machines.&lt;br /&gt;
&lt;br /&gt;
Presenters: Jessie Keck, Stanford University - jkeck at stanford dot edu | Molly Pickral, University of Virginia - mpc3c at virginia dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* bernardo gomez ( bgomez at emory dot edu )&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Sibyl Schaefer (sschaefer@rockarch.org)&lt;br /&gt;
* John Pillans (jpillan@indiana.edu)&lt;br /&gt;
* Mang Sun (mang.dot sun at rice dot edu)&lt;br /&gt;
* Emily Lynema (emily_lynema at ncsu dot edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Daniel Lovins (daniel dot lovins at nyu dot edu)&lt;br /&gt;
&lt;br /&gt;
=== DACS and EAD Overview ===&lt;br /&gt;
&lt;br /&gt;
This session will look at what DACS (Describing Archives: a Content Standard) is and describe the ten required elements.  Then there will be an overview of what EAD is, how it works, and the required elements.  The final part will be a practice session on taking a paper finding aid and coding it using DACS and EAD.&lt;br /&gt;
&lt;br /&gt;
Presenter:  Doris Munson, Eastern Washington University, dmunson at ewu dot edu&lt;br /&gt;
(please feel free to contact me if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Francis Kayiwa ( kayiwa@ YouEyeSee dot edu )&lt;br /&gt;
* Carmen Mitchell (carmenmitchell at gmail dot com)&lt;br /&gt;
&lt;br /&gt;
=== [[Digging into metadata: context, code, and collaboration]] ===&lt;br /&gt;
&lt;br /&gt;
Working with library/archival metadata is difficult. This preconference will tackle pressing questions and will show some of the intricacies of metadata (including AACR2/MARC) with exercises to demonstrate why inconsistencies exist in the data. What steps can the cataloging &amp;amp; metadata community take to help improve the quality of this data?  What tools &amp;amp; techniques could help?  Rules have evolved over time leaving dirty legacy data.  Systems have impacted--and will continue to impact--data structure &amp;amp; design.  How can this data be aggregated and refined for use in a new emerging data environments?  What assumptions can safely be made and when do you need to inquire about local practice?  We will end with a hack-fest where you can ask questions of experienced catalogers and get help with your metadata related problems.  Bring your laptops and data.   &lt;br /&gt;
&lt;br /&gt;
Person Herder: Becky Yoose, Grinnell College, yoosebec at grinnell dot edu&lt;br /&gt;
&lt;br /&gt;
Collaborators/Facilitators: Corey Harper, New York University - corey dot harper at nyu dot edu | Shana L. McDanold, University of Pennsylvania - 	&lt;br /&gt;
mcdanold at pobox dot upenn dot edu  | Laura Smart, Caltech - laura at library dot caltech dot edu&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Jen Weintraub (jweintraub@library.ucla.edu)&lt;br /&gt;
* Peter Green (pmgreen@princeton.edu)&lt;br /&gt;
* David Isaak (david.isaak@kpchr.org)&lt;br /&gt;
* Alex Rolfe (arolfe@georgefox.edu)&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Sarah Johnston (johnsts@stolaf.edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Geo&amp;quot; ===&lt;br /&gt;
This session will explore, we hope collaboratively, the presentation of objects on maps.  There will be a section on workflow, a section on discovering objects via &amp;quot;geobrowse,&amp;quot; a section discovery of objects via &amp;quot;geosearch,&amp;quot; and an exploration of the discovery and presentation of geo-referenced images (e.g. historic maps). There will be open discussion on other approaches to map-based discovery.  Emphasis will be placed on simplicity of workflow and implementation.  Technologies include: Atom, Django, Solr, and OpenLayers.  &lt;br /&gt;
&lt;br /&gt;
Presenters:  Mike Graves, UNC Chapel Hill, gravm at email dot unc dot edu; Tim Shearer, UNC Chapel Hill, tshearer at email dot unc dot edu&lt;br /&gt;
(please feel free to contact Tim if you are interested in being a co-presenter)&lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Anoop Atre ~ anoop.atre AT mnsu . edu&lt;br /&gt;
* Chad Nelson (cnelson17 AT gsu DOT edu)&lt;br /&gt;
* Jason Casden (jmcasden AT ncsu DOT edu&lt;br /&gt;
* Dileshni Jayasinghe (d.jayasinghe@utoronto.ca)&lt;br /&gt;
* Sepehr Mavedati (sepehr DOT mavedati AT utoronto DOT ca)&lt;br /&gt;
* Anna Headley aheadle1 swarthmore edu&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
* Joel Richard (richardjm AT si DOT edu)&lt;br /&gt;
&lt;br /&gt;
== Half-day Evening ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Campus Visit ===&lt;br /&gt;
Join us for a trip across Lake Washington to Microsoft Headquarters.  Bus will depart from the conference hotel at 4:15pm on Monday. We will visit the Microsoft Home and the Envisioning Lab.  The we'll head over to Microsoft Research for drinks and appetizers, and you'll see some great demos of some cool new (and free!) technologies coming out of MSR.  Bus will get back to hotel by 9:00pm, plenty of time to hit a pub.  You'll learn about:&lt;br /&gt;
&lt;br /&gt;
1. Layerscape -[http://communities.worldwidetelescope.org/]&lt;br /&gt;
&lt;br /&gt;
2. ChronoZoom - [http://research.microsoft.com/chronozoom/]&lt;br /&gt;
&lt;br /&gt;
3. F# - [http://www.tryfsharp.org]&lt;br /&gt;
&lt;br /&gt;
4. Microsoft Academic Search - [http://academic.research.microsoft.com]&lt;br /&gt;
&lt;br /&gt;
5. Microsoft Audio Visual Indexing System - [http://research.microsoft.com/mavis] &lt;br /&gt;
&lt;br /&gt;
Space is limited, so reserve your seat today  Email Alex at the address below.    &lt;br /&gt;
&lt;br /&gt;
Coordinator: Alex Wade, Microsoft Research, awade at microsoft dot com &lt;br /&gt;
&lt;br /&gt;
Presenters: Behrooz Chitsaz; Rob Fatland; Christophe Poulain; Michael Zyskowski &lt;br /&gt;
&lt;br /&gt;
==== Interest in Attending ====&lt;br /&gt;
* Declan Fleming&lt;br /&gt;
* Matt Critchlow&lt;br /&gt;
* Tom Keays (keaysht at lemoyne dot edu)&lt;br /&gt;
* Jason Ronallo&lt;br /&gt;
* mark a. matienzo (mark at matienzo dot oh are gee)&lt;br /&gt;
* Mark Mounts &amp;lt;mark.mounts@dartmouth.edu&amp;gt;&lt;br /&gt;
* Kyle Banerjee &amp;lt;banerjek@uoregon.edu&amp;gt;&lt;br /&gt;
* Evviva Weinraub&lt;br /&gt;
* Emily Lynema &amp;lt;emily_lynema at ncsu dot edu&amp;gt;&lt;br /&gt;
* Jason Casden &amp;lt;jmcasden AT ncsu DOT edu&amp;gt;&lt;br /&gt;
* Daniel Lovins &amp;lt;daniel.lovins@nyu.edu&amp;gt;&lt;br /&gt;
* Cynthia Ng&lt;br /&gt;
* &amp;quot;Gabriel Farrell&amp;quot; &amp;lt;gsf24@drexel.edu&amp;gt;&lt;br /&gt;
* Shaun Ellis (shaune AT princeton DOT edu)&lt;br /&gt;
* Derek Merleaux (derek@merleaux d0t net)&lt;br /&gt;
* Anna Headley&lt;br /&gt;
* Mads Villadsen&lt;br /&gt;
* Kåre Fiedler Christiansen&lt;br /&gt;
* Jørn Thøgersen&lt;br /&gt;
* Michael Poltorak Nielsen&lt;br /&gt;
* Dileshni Jayasinghe&lt;br /&gt;
* Matt Phillips (mphillips@law.harvard.edu)&lt;br /&gt;
* Wendy Robertson&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib2012]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=10102</id>
		<title>JQuery HTML Updater</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=10102"/>
				<updated>2012-01-05T19:06:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: Undo revision 10101 by Jrochkind (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
If you want to include [[Umlaut]]-generated HTML directly on a third party page via javascript, there is a Javascript helper object to make that very easy. This helper uses the [[Umlaut partial html API]], but does everything for you.  The helper will update your page at DOM locations you specify, and keep polling Umlaut for new results, continuing to re-update your page until Umlaut is finished.   &lt;br /&gt;
&lt;br /&gt;
The Javascript helper object relies on JQuery.&lt;br /&gt;
&lt;br /&gt;
This Javascript helper is actually also used internally by Umlaut to load background results as they come in, on the Umlaut resolver menu page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: The intended use case at the moment is a &amp;quot;single item&amp;quot; or &amp;quot;item detail&amp;quot; page. You may think &amp;quot;Gee, I want to embed umlaut content for every item on a 10-item results page!&amp;quot;   Handling this case isn't fully fleshed out yet, in part becuase it might put unreasonable load on an Umlaut server. But I have it in mind, and we may be able to get there, let jrochkind know if you demand it. &lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You need to have the ability to add html &amp;lt;script&amp;gt; tags referencing external js files to the page you'd like to Embed Umlaut content in. You also need to be able to somehow make an OpenURL Context Object representing the thing you'd like to load Umlaut content for, and pass this to the Javascript.  If an OpenURL link is already on your HTML somewhere, Javascript can easily pull the 'context object' out of this (see example). &lt;br /&gt;
&lt;br /&gt;
You need to be willing to load the JQuery library on your page, although it can be loaded in &amp;quot;no conflict&amp;quot; mode if you also need Prototype or another JS library. jQuery 1.4 is highly recommended, although jQuery 1.3 will likely work too if you already depend on that in your application.&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, $UMLAUT_BASE stands for the base URL you have installed Umlaut at, for instance http://findit.library.jhu.edu for JHU. &lt;br /&gt;
&lt;br /&gt;
=== Load JQuery ===&lt;br /&gt;
&lt;br /&gt;
You can load JQuery from your installed Umlaut if you want. This is not neccesary if your app already includes JQuery. It's probably best to load it in &amp;quot;no conflict&amp;quot; mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load the Umlaut.HtmlUpdater object ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASEjavascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optionally, load Umlaut Javascript UI Behaviors ===&lt;br /&gt;
&lt;br /&gt;
HTML loaded in by the HtmlUpdater may include javascript behaviors when displayed in Umlaut, such as expand/contract toggles.   You can choose to load JS files providing those behaviors into your local app. If you don't, certain links will degrade to linking out to Umlaut, but everything should still work fine. &lt;br /&gt;
&lt;br /&gt;
Currently, expand/contract toggles are actually the only js behavior supported on external pages; dialog boxes will necessarily degrade to links out to your Umlaut app. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://app01.mse.jhu.edu:3000/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    jQuery(function($) {&lt;br /&gt;
      var loader = new Umlaut.Loader();&lt;br /&gt;
      loader.load();&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instantiate an HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You need to instantiate an Umlaut.HtmlUpdater, and tell it your Umlaut base url, and a context object key-encoded-value query parameter string. If you already have an OpenURL link on the page, it may be convenient to pull the context object out of that, see [[#Complete Example|example]] below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //inside a jQuery ready()&lt;br /&gt;
  var ctx = &amp;quot;sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater($UMLAUT_BASE,  ctx  );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You use the add_section_target() method on your updater to tell it which blocks of Umlaut content you'd like to put where on your page. The argument to add_section_target() is a JS object containing options. &lt;br /&gt;
&lt;br /&gt;
In the simplest case, you can simply supply an umlaut section in the &amp;quot;umlaut_section_id&amp;quot; option, and the ID of a div you'd like to place the content in on your page in &amp;quot;selector&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
     umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
     selector:&amp;quot;#my_full_text_div&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact umlaut sections available may depend on your Umlaut configuration. To see the sections in a default Umlaut installation, see: AppConfig::Base.bg_update_map [http://umlaut.rubyforge.org/svn/trunk/config/initializers/umlaut/resolve_views.rb in resolve_views in svn]&lt;br /&gt;
&lt;br /&gt;
The selector argument can actually be any JQuery selector. By default, the first item on the page that matches this selector will have it's content entirely replaced by the specified umlaut section. However, you can also supply a &amp;quot;position&amp;quot; argument of &amp;quot;before&amp;quot;, &amp;quot;after&amp;quot;, &amp;quot;append&amp;quot;, or &amp;quot;prepend&amp;quot;, and the umlaut section will instead be inserted before or after the element matching your selector, or prepended or appended to the element's children. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Call the updater ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //in a JQuery ready block&lt;br /&gt;
  updater.update();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The updater will now make a call to Umlaut, grab the content from Umlaut, and do what you've told it to do with it. Additionally, it will keep polling Umlaut until all content is available. How often it polls is configured by application config 'poll_wait_seconds', which defaults to 4 seconds. &lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
&lt;br /&gt;
When configuring the HtmlUpdate object, there are several callbacks you can supply functions to, for your own code to be called. &lt;br /&gt;
&lt;br /&gt;
=== Section Target callbacks ===&lt;br /&gt;
&lt;br /&gt;
Callback functions provided with add_section_target can be useful for modifying the HTML returned by Umlaut before it's placed on your page, or modifying other parts of your page upon receiving content. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== before_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Called before the Umlaut html is actually on the page, you can use it to modify the HTML before it gets added to the page. &amp;quot;count&amp;quot; is a JS integer count of how many items are included in the section; sometimes you may wish to hide the whole section from the page if there are 0 items; returning &amp;quot;false&amp;quot; from before_update will cause the HtmlUpdater to *not* place the block on the page. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;target_obj&amp;quot; is an HtmlUpdate internal object that's probably not too useful unless you want to look at the source, but can be used for some complex things. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;, &lt;br /&gt;
    before_update: function(html, count) {&lt;br /&gt;
     $(html).find(&amp;quot;.section_heading h3&amp;quot;).hide();&lt;br /&gt;
&lt;br /&gt;
     return (count &amp;gt; 0);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== after_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Similar to before_update, but called after the html has been placed in the DOM on the page. In after_update (unlike before_update) you can call JQuery closest() on the html to look up in the DOM if you want. This could be used for instance to show a previously hidden parent element only if there are umlaut items available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
            after_update: function(html, count) {&lt;br /&gt;
               if (count !=0 ) {&lt;br /&gt;
                 $(html).closest(&amp;quot;div.something&amp;quot;).show();&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
   });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== complete(target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Complete on a given section is called after there are no more updates for that section. Currently, the HtmlUpdate isn't smart enough to know that until the entire Umlaut update is done however, so it'll be called at the same time as complete() on the updater as a whole. This may change in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
                               complete: function() { alert(&amp;quot;fulltext done!&amp;quot;) }});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HtmlUpdate callbacks ===&lt;br /&gt;
&lt;br /&gt;
Currently just one, for when the Umlaut update is complete (all content has been fetched). &lt;br /&gt;
&lt;br /&gt;
==== complete(updater_obj) ====&lt;br /&gt;
  updater.complete = function() {&lt;br /&gt;
    alert(&amp;quot;all content has been fetched!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Complete Example ==&lt;br /&gt;
For clarity, this example has some javascript source inline in a &amp;lt;script&amp;gt; tag, the code that specifies how content is to be loaded. That javascript code could of course instead be in an external js file referenced by a &amp;lt;script src=&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
     jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
jQuery(function($) {&lt;br /&gt;
  var loader = new Umlaut.Loader();&lt;br /&gt;
  loader.load();&lt;br /&gt;
  &lt;br /&gt;
  /* pull openurl link out of the DOM, take umlaut base and context object&lt;br /&gt;
     out of it */ &lt;br /&gt;
  var openurl_link = $(&amp;quot;a.openurl_link&amp;quot;).attr(&amp;quot;href&amp;quot;);&lt;br /&gt;
  var ctx_object_kev = openurl_link.substring( openurl_link.indexOf(&amp;quot;?&amp;quot;) + 1);&lt;br /&gt;
  var umlaut_base = openurl_link.substring(0, openurl_link.indexOf(&amp;quot;/resolve&amp;quot;));&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater( umlaut_base  ,  ctx_object_kev );&lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.my_full_text&amp;quot; ,&lt;br /&gt;
    // only show ourself if we have umlaut hits, false return from&lt;br /&gt;
    // before_update stops update.  &lt;br /&gt;
    before_update: function(html, count) { return (count != 0); }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;search_inside&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;  &lt;br /&gt;
  });  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;excerpts&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;holding&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;,&lt;br /&gt;
    before_update: function(container_element) {&lt;br /&gt;
      //insert some content into the umlaut-delivered html&lt;br /&gt;
      //before it is placed on the page&lt;br /&gt;
      container_element.find(&amp;quot;h3&amp;quot;).after(&amp;quot;&amp;lt;h4&amp;gt;We love these holdings.&amp;lt;/h4&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;abstract&amp;quot;, &lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
      position: &amp;quot;append&amp;quot;,  &lt;br /&gt;
      before_update: function(html, count) {&lt;br /&gt;
        //only show if there are hits&lt;br /&gt;
        return ( count != 0);&lt;br /&gt;
      }&lt;br /&gt;
   });     &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;related_items&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_link&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.only_if_content&amp;quot;,&lt;br /&gt;
    after_update: function(updated_content, count) {&lt;br /&gt;
      //show the ancestor DOM element with certain class, only&lt;br /&gt;
      //if there are umlaut hits&lt;br /&gt;
      if ( count != 0 ) {&lt;br /&gt;
        updated_content.closest(&amp;quot;.only_if_content&amp;quot;).show();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    });   &lt;br /&gt;
  &lt;br /&gt;
    updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;export_citation&amp;quot;,&lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;,&lt;br /&gt;
      position:&amp;quot;append&amp;quot;,&lt;br /&gt;
      before_update: function(content, count) {&lt;br /&gt;
        $(content).find(&amp;quot;.section_heading h3&amp;quot;).text(&amp;quot;My own crazy export options&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    updater.complete = function() { alert(&amp;quot;Umlaut fully loaded&amp;quot;) };&lt;br /&gt;
  &lt;br /&gt;
    updater.update();   &lt;br /&gt;
&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a class=&amp;quot;openurl_link&amp;quot; href=&amp;quot;http://$UMLAUT_BASE/resolve?sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&amp;gt;Find It @ JH&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Full Text&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;my_full_text&amp;quot;&amp;gt;&lt;br /&gt;
Replace me.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;More Stuff&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;stuff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;only_if_content&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
This will be shown only if it actually contains content. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=10101</id>
		<title>JQuery HTML Updater</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=10101"/>
				<updated>2012-01-05T19:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
If you want to include [[Umlaut]]-generated HTML directly on a third party page via javascript, there is a Javascript helper object to make that very easy. This helper uses the [[Umlaut partial html API]], but does everything for you.  The helper will update your page at DOM locations you specify, and keep polling Umlaut for new results, continuing to re-update your page until Umlaut is finished.   &lt;br /&gt;
&lt;br /&gt;
The Javascript helper object relies on JQuery.&lt;br /&gt;
&lt;br /&gt;
This Javascript helper is actually also used internally by Umlaut to load background results as they come in, on the Umlaut resolver menu page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: The intended use case at the moment is a &amp;quot;single item&amp;quot; or &amp;quot;item detail&amp;quot; page. You may think &amp;quot;Gee, I want to embed umlaut content for every item on a 10-item results page!&amp;quot;   Handling this case isn't fully fleshed out yet, in part becuase it might put unreasonable load on an Umlaut server. But I have it in mind, and we may be able to get there, let jrochkind know if you demand it. &lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You need to have the ability to add html &amp;lt;script&amp;gt; tags referencing external js files to the page you'd like to Embed Umlaut content in. You also need to be able to somehow make an OpenURL Context Object representing the thing you'd like to load Umlaut content for, and pass this to the Javascript.  If an OpenURL link is already on your HTML somewhere, Javascript can easily pull the 'context object' out of this (see example). &lt;br /&gt;
&lt;br /&gt;
You need to be willing to load the JQuery library on your page, although it can be loaded in &amp;quot;no conflict&amp;quot; mode if you also need Prototype or another JS library. jQuery 1.4 is highly recommended, although jQuery 1.3 will likely work too if you already depend on that in your application.&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, $UMLAUT_BASE stands for the base URL you have installed Umlaut at, for instance http://findit.library.jhu.edu for JHU. &lt;br /&gt;
&lt;br /&gt;
=== Load JQuery ===&lt;br /&gt;
&lt;br /&gt;
You can load JQuery from your installed Umlaut if you want. This is not neccesary if your app already includes JQuery. It's probably best to load it in &amp;quot;no conflict&amp;quot; mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load the Umlaut.HtmlUpdater object ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASEjavascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optionally, load Umlaut Javascript UI Behaviors ===&lt;br /&gt;
&lt;br /&gt;
HTML loaded in by the HtmlUpdater may include javascript behaviors when displayed in Umlaut, such as expand/contract toggles.   You can choose to load JS files providing those behaviors into your local app. If you don't, certain links will degrade to linking out to Umlaut, but everything should still work fine. &lt;br /&gt;
&lt;br /&gt;
Currently, expand/contract toggles are actually the only js behavior supported on external pages; dialog boxes will necessarily degrade to links out to your Umlaut app. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://app01.mse.jhu.edu:3000/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    jQuery(function($) {&lt;br /&gt;
      var loader = new Umlaut.Loader();&lt;br /&gt;
      loader.load();&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instantiate an HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You need to instantiate an Umlaut.HtmlUpdater, and tell it your Umlaut base url, and a context object key-encoded-value query parameter string. If you already have an OpenURL link on the page, it may be convenient to pull the context object out of that, see [[#Complete Example|example]] below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //inside a jQuery ready()&lt;br /&gt;
  var ctx = &amp;quot;sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater($UMLAUT_BASE,  ctx  );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You use the add_section_target() method on your updater to tell it which blocks of Umlaut content you'd like to put where on your page. The argument to add_section_target() is a JS object containing options. &lt;br /&gt;
&lt;br /&gt;
In the simplest case, you can simply supply an umlaut section in the &amp;quot;umlaut_section_id&amp;quot; option, and the ID of a div you'd like to place the content in on your page in &amp;quot;selector&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
     umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
     selector:&amp;quot;#my_full_text_div&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact umlaut sections available may depend on your Umlaut configuration. To see the sections in a default Umlaut installation, see: AppConfig::Base.bg_update_map [http://umlaut.rubyforge.org/svn/trunk/config/initializers/umlaut/resolve_views.rb in resolve_views in svn]&lt;br /&gt;
&lt;br /&gt;
The selector argument can actually be any JQuery selector. By default, the first item on the page that matches this selector will have it's content entirely replaced by the specified umlaut section. However, you can also supply a &amp;quot;position&amp;quot; argument of &amp;quot;before&amp;quot;, &amp;quot;after&amp;quot;, &amp;quot;append&amp;quot;, or &amp;quot;prepend&amp;quot;, and the umlaut section will instead be inserted before or after the element matching your selector, or prepended or appended to the element's children. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Call the updater ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //in a JQuery ready block&lt;br /&gt;
  updater.update();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The updater will now make a call to Umlaut, grab the content from Umlaut, and do what you've told it to do with it. Additionally, it will keep polling Umlaut until all content is available. How often it polls is configured by application config 'poll_wait_seconds', which defaults to 4 seconds. &lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
&lt;br /&gt;
When configuring the HtmlUpdate object, there are several callbacks you can supply functions to, for your own code to be called. &lt;br /&gt;
&lt;br /&gt;
=== Section Target callbacks ===&lt;br /&gt;
&lt;br /&gt;
Callback functions provided with add_section_target can be useful for modifying the HTML returned by Umlaut before it's placed on your page, or modifying other parts of your page upon receiving content. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== before_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Called before the Umlaut html is actually on the page, you can use it to modify the HTML before it gets added to the page. &amp;quot;count&amp;quot; is a JS integer count of how many items are included in the section; sometimes you may wish to hide the whole section from the page if there are 0 items; returning &amp;quot;false&amp;quot; from before_update will cause the HtmlUpdater to *not* place the block on the page. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;target_obj&amp;quot; is an HtmlUpdate internal object that's probably not too useful unless you want to look at the source, but can be used for some complex things. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;, &lt;br /&gt;
    before_update: function(html, count) {&lt;br /&gt;
     $(html).find(&amp;quot;.section_heading h3&amp;quot;).hide();&lt;br /&gt;
&lt;br /&gt;
     return (count &amp;gt; 0);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== after_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Similar to before_update, but called after the html has been placed in the DOM on the page. In after_update (unlike before_update) you can call JQuery closest() on the html to look up in the DOM if you want. This could be used for instance to show a previously hidden parent element only if there are umlaut items available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
            after_update: function(html, count) {&lt;br /&gt;
               if (count !=0 ) {&lt;br /&gt;
                 $(html).closest(&amp;quot;div.something&amp;quot;).show();&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
   });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== complete(target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Complete on a given section is called after there are no more updates for that section. Currently, the HtmlUpdate isn't smart enough to know that until the entire Umlaut update is done however, so it'll be called at the same time as complete() on the updater as a whole. This may change in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
                               complete: function() { alert(&amp;quot;fulltext done!&amp;quot;) }});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HtmlUpdate callbacks ===&lt;br /&gt;
&lt;br /&gt;
Currently just one, for when the Umlaut update is complete (all content has been fetched). &lt;br /&gt;
&lt;br /&gt;
==== complete(updater_obj) ====&lt;br /&gt;
  updater.complete = function() {&lt;br /&gt;
    alert(&amp;quot;all content has been fetched!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Complete Example ==&lt;br /&gt;
For clarity, this example has some javascript source inline in a &amp;lt;script&amp;gt; tag, the code that specifies how content is to be loaded. That javascript code could of course instead be in an external js file referenced by a &amp;lt;script src=&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
```html&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
     jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
jQuery(function($) {&lt;br /&gt;
  var loader = new Umlaut.Loader();&lt;br /&gt;
  loader.load();&lt;br /&gt;
  &lt;br /&gt;
  /* pull openurl link out of the DOM, take umlaut base and context object&lt;br /&gt;
     out of it */ &lt;br /&gt;
  var openurl_link = $(&amp;quot;a.openurl_link&amp;quot;).attr(&amp;quot;href&amp;quot;);&lt;br /&gt;
  var ctx_object_kev = openurl_link.substring( openurl_link.indexOf(&amp;quot;?&amp;quot;) + 1);&lt;br /&gt;
  var umlaut_base = openurl_link.substring(0, openurl_link.indexOf(&amp;quot;/resolve&amp;quot;));&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater( umlaut_base  ,  ctx_object_kev );&lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.my_full_text&amp;quot; ,&lt;br /&gt;
    // only show ourself if we have umlaut hits, false return from&lt;br /&gt;
    // before_update stops update.  &lt;br /&gt;
    before_update: function(html, count) { return (count != 0); }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;search_inside&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;  &lt;br /&gt;
  });  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;excerpts&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;holding&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;,&lt;br /&gt;
    before_update: function(container_element) {&lt;br /&gt;
      //insert some content into the umlaut-delivered html&lt;br /&gt;
      //before it is placed on the page&lt;br /&gt;
      container_element.find(&amp;quot;h3&amp;quot;).after(&amp;quot;&amp;lt;h4&amp;gt;We love these holdings.&amp;lt;/h4&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;abstract&amp;quot;, &lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
      position: &amp;quot;append&amp;quot;,  &lt;br /&gt;
      before_update: function(html, count) {&lt;br /&gt;
        //only show if there are hits&lt;br /&gt;
        return ( count != 0);&lt;br /&gt;
      }&lt;br /&gt;
   });     &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;related_items&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_link&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.only_if_content&amp;quot;,&lt;br /&gt;
    after_update: function(updated_content, count) {&lt;br /&gt;
      //show the ancestor DOM element with certain class, only&lt;br /&gt;
      //if there are umlaut hits&lt;br /&gt;
      if ( count != 0 ) {&lt;br /&gt;
        updated_content.closest(&amp;quot;.only_if_content&amp;quot;).show();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    });   &lt;br /&gt;
  &lt;br /&gt;
    updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;export_citation&amp;quot;,&lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;,&lt;br /&gt;
      position:&amp;quot;append&amp;quot;,&lt;br /&gt;
      before_update: function(content, count) {&lt;br /&gt;
        $(content).find(&amp;quot;.section_heading h3&amp;quot;).text(&amp;quot;My own crazy export options&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    updater.complete = function() { alert(&amp;quot;Umlaut fully loaded&amp;quot;) };&lt;br /&gt;
  &lt;br /&gt;
    updater.update();   &lt;br /&gt;
&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a class=&amp;quot;openurl_link&amp;quot; href=&amp;quot;http://$UMLAUT_BASE/resolve?sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&amp;gt;Find It @ JH&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Full Text&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;my_full_text&amp;quot;&amp;gt;&lt;br /&gt;
Replace me.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;More Stuff&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;stuff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;only_if_content&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
This will be shown only if it actually contains content. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut_wishlist&amp;diff=9540</id>
		<title>Umlaut wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut_wishlist&amp;diff=9540"/>
				<updated>2011-10-26T16:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
Some actual current future plans:&lt;br /&gt;
&lt;br /&gt;
* Fix HathiTrust adapter to use new HT plugin, including not showing fulltext for just portions of a serial. (Or showing it in 'see also' section only)&lt;br /&gt;
&lt;br /&gt;
* Use OCLC xISBN to find HT and Internet Archive/OCA matches?&lt;br /&gt;
&lt;br /&gt;
* Rails3&lt;br /&gt;
&lt;br /&gt;
* Internet Archive -- use new OL/IA api, discover search-inside-the-book. &lt;br /&gt;
&lt;br /&gt;
* WorldCat, use new api, link directly to nearest public library in 'see also' or elsewhere. &lt;br /&gt;
&lt;br /&gt;
* CiteSeerX -- source of 'cited by' info, AND, most excitingly, open access pre-prints. But their Atom/RSS feeds (the only API I could find) don't seem to advertise enough info to actually use these features. Would need to talk to developer team -- possibly offer to help code? Also not entirely clear how big their corpus actually is, if it's worth it. &lt;br /&gt;
&lt;br /&gt;
* Try screen-scraping Google Scholar (and maybe Microsoft Academic) to get the open access full text links they find.  Also, there's a Springer API for open access content now. http://dev.springer.com/docs/Restful_operations&lt;br /&gt;
&lt;br /&gt;
* When no full text is found, provide link to search on Google Scholar, or Bing Academic?  Need to have sufficient metadata to create the search. Oct 2010 Library Technology Reports article has some ideas, I think. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''old''' Desired or planned features. &lt;br /&gt;
&lt;br /&gt;
* Check for similar articles from: http://biosemantics.org/jane/faq.php#api&lt;br /&gt;
&lt;br /&gt;
* Full-text availability check from http://chroniclingamerica.loc.gov/ -- check by title/city, check by lccn (?), able to check particular dates/link to particular dates and/or pages of paper?&lt;br /&gt;
&lt;br /&gt;
* Allow a service_response to have a tree relationship to children, so for instance alternate versions of a text can be attached as children of the main link, expandable by the user. &lt;br /&gt;
&lt;br /&gt;
* http://export.arxiv.org/api_help/   !!!!&lt;br /&gt;
&lt;br /&gt;
* PubMed Central full text lookup http://www.ncbi.nlm.nih.gov/entrez/query/static/esearch_help.html (SFX may already do this?)&lt;br /&gt;
&lt;br /&gt;
* Journal ToC from CiteULike&lt;br /&gt;
&lt;br /&gt;
* Parsing of formatted references from an entry screen. Use http://wing.comp.nus.edu.sg/parsCit/ package. Very interesting!  Or a similar UCOP package: http://purl.net/net/egh/hmm-citation-extractor/ See list of such packages here under &amp;quot;Other Parsing Tools&amp;quot; http://freecite.library.brown.edu/&lt;br /&gt;
&lt;br /&gt;
* LibraryThing open knowledge API for more data. http://www.librarything.com/blog/2008/08/free-web-services-api-to-common.php&lt;br /&gt;
&lt;br /&gt;
* Connect to internet linked movie database on movies: http://www.linkedmdb.org/&lt;br /&gt;
&lt;br /&gt;
* Add information about the conversation happening around an article with Scintilla if we have a URL, PMID or DOI (Alf at Scintilla would prefer us NOT to use the API for high-traffic. But we can copy his techniques internally to Umlaut. CrossRef and PubMed for &amp;quot;cited by&amp;quot; on DOI and PMID identifiers are a good idea. He has also reverse engineered the Scopus javascript api to allow server-side json access. http://hublog.hubmed.org/archives/001512.html):&lt;br /&gt;
     http://hublog.hubmed.org/archives/001609.html&lt;br /&gt;
     Unofficially it will return json:&lt;br /&gt;
     http://scintilla.nature.com/conversations?uri=info%3Adoi%2F10.1371%2Fjournal.pmed.0020124&amp;amp;format=json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Rochester “Getting Users Fulltext” style code to skip right to the full text, skipping content-provider metadata pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* UMich Mirlyn for metadata enrichment? &lt;br /&gt;
     http://webservices.itcs.umich.edu/mediawiki/MLibraryAPI/index.php/Mirlynapi:Home&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* xISBN/thingISBN use. (Some thought is required in how to integrate this while avoiding false positives). Bowker ISSN service for metadata enhancement. OCLC xISSN?  Integrate preceding/succeeding title information from OPAC or xISSN?&lt;br /&gt;
&lt;br /&gt;
* LibraryLookup: http://xisbn.worldcat.org/liblook/index.htm  At least until xISBN is baked in we could provide a link to this service. Increases the chances of finding a desired book in the catalog through work set grouping. Used by LibX.&lt;br /&gt;
      http://xisbn.worldcat.org/liblook/resolve.htm?res_id=http://www.iucat.iu.edu&amp;amp;rft.isbn=0451530942&amp;amp;url_ver=Z39.88-2004&amp;amp;rft_val_fmt=info:ofi/fmt:kev:mtx:book&lt;br /&gt;
&lt;br /&gt;
* Journal covers from Ulrich's via screen-scraping (or Ulrich's/sersol built in api?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Connotea integration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fetch ToC from LC. Screen scrape, I guess? Or z3950? Any other content from LC?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Link to Books In Print ala Notre Dame. &lt;br /&gt;
http://www.library.nd.edu/eresources/findit/findit.cgi?doc_num=001939269&amp;amp;aleph_session=U5AVHRXD5QB1CGDFDSVJ9DSY2UA6QNCGVEU8EYRX9NNMIQ429Q-54668%22&lt;br /&gt;
example &lt;br /&gt;
&lt;br /&gt;
* bip search url? :&lt;br /&gt;
http://www.booksinprint.com/merge_shared/Search/advsearch.asp%3FdateState%3DY%26txtAction%3D%26BooleanSearch%3D%26SType%3Dadv%26collection%3DBIP%26QueryMode%3DSimple%26ResultCount%3D25%26ResultTemplate%3Dmbbookresult_fl.hts%26navPage%3D1%26SrchFrm%3DAdv%26ScoreThreshold%3D0%26Criteria1%3DISBN%26CriteriaText1%3D0838935370&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SFX plugin:  Notice when first title given is non-roman, and look for roman title to enhance metadata with when so. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* HIP and other OPAC searchers should pull ToC from MARC 505 when present.  And 856's judged to be ToC in ToC, not full text. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fix Umlaut Referent to more easily allow multiple authors. Architectural change neccessary to get a lot of this stuff working right. &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Cited by&amp;quot; service. Scopus via screen scraping? (scopus javascript api? http://www.scopus.com/scsearchapi/ See also http://hublog.hubmed.org/archives/001512.html ) ISI Web of Science is too hard to even screen scrape the interface is such a mess, but Scopus looks do-able.  Google scholar?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Enhance metadata to have full metadata for a refworks etc export. Using: CrossRef?  Metalib?  Anything else?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* A general purpose responsecache. Schema: Date, service/source, key.  Use for caching image urls, ToC urls from LC, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Fix Worldcat registry auto-discovery. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Add a Worldcat search that uses API, instead of screen scrape. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Switch OCA search to use OCA native APIs, instead of indexdata mirror index. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* fix unapi in umlaut. unapi to rsi?  For zotero. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Change background to use Spawn plugin instead of manual threading. Investigating using spawn with fork instead of thread (terry reese on limited pool of forks). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Crazy idea for an abstract interface/architecture to support querying web service apis that require client side javascript, like Google Books and Scopus. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Integrate my various local document delivery services into menu of options when full text isn’t available. More generally, a clear architecture for providing localized doc delivery services in addition to a single ILL link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SFX adaptor: Add a &amp;quot;rollup&amp;quot; feature that pays attention to dates to avoid eliminating coverage.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7538</id>
		<title>Code4Lib Journal Tech Wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7538"/>
				<updated>2011-02-14T16:44:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Things on this page aren't neccesarily consensus, just things people listed as tech wishlist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Seperate author names in individual fields in db, for better metadata generation.  (Then make export of DOAJ metadata use it, to make it a fully automated process!)&lt;br /&gt;
&lt;br /&gt;
* epub and/or PDF export of a complete issue. (&amp;quot;Anthologize&amp;quot; plugin for PDF?  This plugin for epub?: http://blogs.plos.org/mfenner/2011/02/01/epub-wordpress-plugin-released-today/)&lt;br /&gt;
&lt;br /&gt;
* PDF of individual article&lt;br /&gt;
&lt;br /&gt;
* Include &amp;quot;cite as&amp;quot; text on each page, with several major citation formats filled in with our data. Especially important because we use an &amp;quot;article number&amp;quot;, rather than a page number -- which is supported by most citation formats, but it's not obvious from looking at an article what it's &amp;quot;article number&amp;quot; _is_, you have to know to get it from the URL. Makes it hard to cite correctly. &lt;br /&gt;
&lt;br /&gt;
* Automated list of &amp;quot;most viewed articles&amp;quot;, from WP statistics or Google Analytics?&lt;br /&gt;
&lt;br /&gt;
* Investigate usefulness for us: Here is a WordPress plugin designed to implement editorial workflows: http://editflow.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib Journal]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7046</id>
		<title>Code4Lib Journal Tech Wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7046"/>
				<updated>2011-02-01T20:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Things on this page aren't neccesarily consensus, just things people listed as tech wishlist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Seperate author names in individual fields in db, for better metadata generation.  (Then make export of DOAJ metadata use it, to make it a fully automated process!)&lt;br /&gt;
&lt;br /&gt;
* epub and/or PDF export of a complete issue&lt;br /&gt;
&lt;br /&gt;
* Include &amp;quot;cite as&amp;quot; text on each page, with several major citation formats filled in with our data. Especially important because we use an &amp;quot;article number&amp;quot;, rather than a page number -- which is supported by most citation formats, but it's not obvious from looking at an article what it's &amp;quot;article number&amp;quot; _is_, you have to know to get it from the URL. Makes it hard to cite correctly. &lt;br /&gt;
&lt;br /&gt;
* Automated list of &amp;quot;most viewed articles&amp;quot;, from WP statistics or Google Analytics?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib Journal]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7045</id>
		<title>Code4Lib Journal Tech Wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Code4Lib_Journal_Tech_Wishlist&amp;diff=7045"/>
				<updated>2011-02-01T20:20:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: New page: Things on this page aren't neccesarily consensus, just things people listed as tech wishlist.    # Seperate author names in individual fields in db, for better metadata generation.  (Then ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Things on this page aren't neccesarily consensus, just things people listed as tech wishlist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Seperate author names in individual fields in db, for better metadata generation.  (Then make export of DOAJ metadata use it, to make it a fully automated process!)&lt;br /&gt;
&lt;br /&gt;
# epub and/or PDF export of a complete issue&lt;br /&gt;
&lt;br /&gt;
# Include &amp;quot;cite as&amp;quot; text on each page, with several major citation formats filled in with our data. Especially important because we use an &amp;quot;article number&amp;quot;, rather than a page number -- which is supported by most citation formats, but it's not obvious from looking at an article what it's &amp;quot;article number&amp;quot; _is_, you have to know to get it from the URL. Makes it hard to cite correctly. &lt;br /&gt;
&lt;br /&gt;
# Automated list of &amp;quot;most viewed articles&amp;quot;, from WP statistics or Google Analytics?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Code4Lib Journal]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=6153</id>
		<title>JQuery HTML Updater</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=JQuery_HTML_Updater&amp;diff=6153"/>
				<updated>2010-09-20T21:20:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* Load JQuery */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
If you want to include [[Umlaut]]-generated HTML directly on a third party page via javascript, there is a Javascript helper object to make that very easy. This helper uses the [[Umlaut partial html API]], but does everything for you.  The helper will update your page at DOM locations you specify, and keep polling Umlaut for new results, continuing to re-update your page until Umlaut is finished.   &lt;br /&gt;
&lt;br /&gt;
The Javascript helper object relies on JQuery.&lt;br /&gt;
&lt;br /&gt;
This Javascript helper is actually also used internally by Umlaut to load background results as they come in, on the Umlaut resolver menu page. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOTE&amp;lt;/b&amp;gt;: The intended use case at the moment is a &amp;quot;single item&amp;quot; or &amp;quot;item detail&amp;quot; page. You may think &amp;quot;Gee, I want to embed umlaut content for every item on a 10-item results page!&amp;quot;   Handling this case isn't fully fleshed out yet, in part becuase it might put unreasonable load on an Umlaut server. But I have it in mind, and we may be able to get there, let jrochkind know if you demand it. &lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
You need to have the ability to add html &amp;lt;script&amp;gt; tags referencing external js files to the page you'd like to Embed Umlaut content in. You also need to be able to somehow make an OpenURL Context Object representing the thing you'd like to load Umlaut content for, and pass this to the Javascript.  If an OpenURL link is already on your HTML somewhere, Javascript can easily pull the 'context object' out of this (see example). &lt;br /&gt;
&lt;br /&gt;
You need to be willing to load the JQuery library on your page, although it can be loaded in &amp;quot;no conflict&amp;quot; mode if you also need Prototype or another JS library. jQuery 1.4 is highly recommended, although jQuery 1.3 will likely work too if you already depend on that in your application.&lt;br /&gt;
&lt;br /&gt;
== Step by Step ==&lt;br /&gt;
&lt;br /&gt;
In the following examples, $UMLAUT_BASE stands for the base URL you have installed Umlaut at, for instance http://findit.library.jhu.edu for JHU. &lt;br /&gt;
&lt;br /&gt;
=== Load JQuery ===&lt;br /&gt;
&lt;br /&gt;
You can load JQuery from your installed Umlaut if you want. This is not neccesary if your app already includes JQuery. It's probably best to load it in &amp;quot;no conflict&amp;quot; mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
      jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Load the Umlaut.HtmlUpdater object ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASEjavascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optionally, load Umlaut Javascript UI Behaviors ===&lt;br /&gt;
&lt;br /&gt;
HTML loaded in by the HtmlUpdater may include javascript behaviors when displayed in Umlaut, such as expand/contract toggles.   You can choose to load JS files providing those behaviors into your local app. If you don't, certain links will degrade to linking out to Umlaut, but everything should still work fine. &lt;br /&gt;
&lt;br /&gt;
Currently, expand/contract toggles are actually the only js behavior supported on external pages; dialog boxes will necessarily degrade to links out to your Umlaut app. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;http://app01.mse.jhu.edu:3000/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    jQuery(function($) {&lt;br /&gt;
      var loader = new Umlaut.Loader();&lt;br /&gt;
      loader.load();&lt;br /&gt;
    });&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instantiate an HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You need to instantiate an Umlaut.HtmlUpdater, and tell it your Umlaut base url, and a context object key-encoded-value query parameter string. If you already have an OpenURL link on the page, it may be convenient to pull the context object out of that, see [[#Complete Example|example]] below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //inside a jQuery ready()&lt;br /&gt;
  var ctx = &amp;quot;sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater($UMLAUT_BASE,  ctx  );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configure HtmlUpdater ===&lt;br /&gt;
&lt;br /&gt;
You use the add_section_target() method on your updater to tell it which blocks of Umlaut content you'd like to put where on your page. The argument to add_section_target() is a JS object containing options. &lt;br /&gt;
&lt;br /&gt;
In the simplest case, you can simply supply an umlaut section in the &amp;quot;umlaut_section_id&amp;quot; option, and the ID of a div you'd like to place the content in on your page in &amp;quot;selector&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
     umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
     selector:&amp;quot;#my_full_text_div&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact umlaut sections available may depend on your Umlaut configuration. To see the sections in a default Umlaut installation, see: AppConfig::Base.bg_update_map [http://umlaut.rubyforge.org/svn/trunk/config/initializers/umlaut/resolve_views.rb in resolve_views in svn]&lt;br /&gt;
&lt;br /&gt;
The selector argument can actually be any JQuery selector. By default, the first item on the page that matches this selector will have it's content entirely replaced by the specified umlaut section. However, you can also supply a &amp;quot;position&amp;quot; argument of &amp;quot;before&amp;quot;, &amp;quot;after&amp;quot;, &amp;quot;append&amp;quot;, or &amp;quot;prepend&amp;quot;, and the umlaut section will instead be inserted before or after the element matching your selector, or prepended or appended to the element's children. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Call the updater ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  //in a JQuery ready block&lt;br /&gt;
  updater.update();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The updater will now make a call to Umlaut, grab the content from Umlaut, and do what you've told it to do with it. Additionally, it will keep polling Umlaut until all content is available. How often it polls is configured by application config 'poll_wait_seconds', which defaults to 4 seconds. &lt;br /&gt;
&lt;br /&gt;
== Callbacks ==&lt;br /&gt;
&lt;br /&gt;
When configuring the HtmlUpdate object, there are several callbacks you can supply functions to, for your own code to be called. &lt;br /&gt;
&lt;br /&gt;
=== Section Target callbacks ===&lt;br /&gt;
&lt;br /&gt;
Callback functions provided with add_section_target can be useful for modifying the HTML returned by Umlaut before it's placed on your page, or modifying other parts of your page upon receiving content. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== before_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Called before the Umlaut html is actually on the page, you can use it to modify the HTML before it gets added to the page. &amp;quot;count&amp;quot; is a JS integer count of how many items are included in the section; sometimes you may wish to hide the whole section from the page if there are 0 items; returning &amp;quot;false&amp;quot; from before_update will cause the HtmlUpdater to *not* place the block on the page. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;target_obj&amp;quot; is an HtmlUpdate internal object that's probably not too useful unless you want to look at the source, but can be used for some complex things. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_links&amp;quot;, &lt;br /&gt;
    selector: &amp;quot;.sidebar&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;, &lt;br /&gt;
    before_update: function(html, count) {&lt;br /&gt;
     $(html).find(&amp;quot;.section_heading h3&amp;quot;).hide();&lt;br /&gt;
&lt;br /&gt;
     return (count &amp;gt; 0);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== after_update(html, count, target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Similar to before_update, but called after the html has been placed in the DOM on the page. In after_update (unlike before_update) you can call JQuery closest() on the html to look up in the DOM if you want. This could be used for instance to show a previously hidden parent element only if there are umlaut items available:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
            after_update: function(html, count) {&lt;br /&gt;
               if (count !=0 ) {&lt;br /&gt;
                 $(html).closest(&amp;quot;div.something&amp;quot;).show();&lt;br /&gt;
               }&lt;br /&gt;
            }&lt;br /&gt;
   });&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== complete(target_obj) ====&lt;br /&gt;
&lt;br /&gt;
Complete on a given section is called after there are no more updates for that section. Currently, the HtmlUpdate isn't smart enough to know that until the entire Umlaut update is done however, so it'll be called at the same time as complete() on the updater as a whole. This may change in the future. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   updater.add_section_target({umlaut_section_id: &amp;quot;fulltext&amp;quot;, selector:&amp;quot;#my_fulltext&amp;quot;, &lt;br /&gt;
                               complete: function() { alert(&amp;quot;fulltext done!&amp;quot;) }});&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HtmlUpdate callbacks ===&lt;br /&gt;
&lt;br /&gt;
Currently just one, for when the Umlaut update is complete (all content has been fetched). &lt;br /&gt;
&lt;br /&gt;
==== complete(updater_obj) ====&lt;br /&gt;
  updater.complete = function() {&lt;br /&gt;
    alert(&amp;quot;all content has been fetched!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== Complete Example ==&lt;br /&gt;
For clarity, this example has some javascript source inline in a &amp;lt;script&amp;gt; tag, the code that specifies how content is to be loaded. That javascript code could of course instead be in an external js file referenced by a &amp;lt;script src=&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/jquery-1.4.2.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
     jQuery.noConflict();&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/javascripts/jquery/umlaut/update_html.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;$UMLAUT_BASE/js_helper/loader&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
jQuery(function($) {&lt;br /&gt;
  var loader = new Umlaut.Loader();&lt;br /&gt;
  loader.load();&lt;br /&gt;
  &lt;br /&gt;
  /* pull openurl link out of the DOM, take umlaut base and context object&lt;br /&gt;
     out of it */ &lt;br /&gt;
  var openurl_link = $(&amp;quot;a.openurl_link&amp;quot;).attr(&amp;quot;href&amp;quot;);&lt;br /&gt;
  var ctx_object_kev = openurl_link.substring( openurl_link.indexOf(&amp;quot;?&amp;quot;) + 1);&lt;br /&gt;
  var umlaut_base = openurl_link.substring(0, openurl_link.indexOf(&amp;quot;/resolve&amp;quot;));&lt;br /&gt;
  var updater = new Umlaut.HtmlUpdater( umlaut_base  ,  ctx_object_kev );&lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;fulltext&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.my_full_text&amp;quot; ,&lt;br /&gt;
    // only show ourself if we have umlaut hits, false return from&lt;br /&gt;
    // before_update stops update.  &lt;br /&gt;
    before_update: function(html, count) { return (count != 0); }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;search_inside&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;  &lt;br /&gt;
  });  &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;excerpts&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;holding&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;,&lt;br /&gt;
    before_update: function(container_element) {&lt;br /&gt;
      //insert some content into the umlaut-delivered html&lt;br /&gt;
      //before it is placed on the page&lt;br /&gt;
      container_element.find(&amp;quot;h3&amp;quot;).after(&amp;quot;&amp;lt;h4&amp;gt;We love these holdings.&amp;lt;/h4&amp;gt;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;abstract&amp;quot;, &lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
      position: &amp;quot;append&amp;quot;,  &lt;br /&gt;
      before_update: function(html, count) {&lt;br /&gt;
        //only show if there are hits&lt;br /&gt;
        return ( count != 0);&lt;br /&gt;
      }&lt;br /&gt;
   });     &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;related_items&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.stuff&amp;quot;, &lt;br /&gt;
    position: &amp;quot;append&amp;quot;&lt;br /&gt;
  });   &lt;br /&gt;
  &lt;br /&gt;
  updater.add_section_target({ &lt;br /&gt;
    umlaut_section_id: &amp;quot;highlighted_link&amp;quot;, &lt;br /&gt;
    selector:&amp;quot;.only_if_content&amp;quot;,&lt;br /&gt;
    after_update: function(updated_content, count) {&lt;br /&gt;
      //show the ancestor DOM element with certain class, only&lt;br /&gt;
      //if there are umlaut hits&lt;br /&gt;
      if ( count != 0 ) {&lt;br /&gt;
        updated_content.closest(&amp;quot;.only_if_content&amp;quot;).show();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    });   &lt;br /&gt;
  &lt;br /&gt;
    updater.add_section_target({&lt;br /&gt;
      umlaut_section_id: &amp;quot;export_citation&amp;quot;,&lt;br /&gt;
      selector:&amp;quot;.stuff&amp;quot;,&lt;br /&gt;
      position:&amp;quot;append&amp;quot;,&lt;br /&gt;
      before_update: function(content, count) {&lt;br /&gt;
        $(content).find(&amp;quot;.section_heading h3&amp;quot;).text(&amp;quot;My own crazy export options&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    updater.complete = function() { alert(&amp;quot;Umlaut fully loaded&amp;quot;) };&lt;br /&gt;
  &lt;br /&gt;
    updater.update();   &lt;br /&gt;
&lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;a class=&amp;quot;openurl_link&amp;quot; href=&amp;quot;http://$UMLAUT_BASE/resolve?sid=google&amp;amp;auinit=N&amp;amp;aulast=Chomsky&amp;amp;title=Aspects+of+the+Theory+of+Syntax&amp;amp;genre=book&amp;amp;isbn=0262530074&amp;amp;date=1965&amp;quot;&amp;gt;Find It @ JH&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Full Text&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;my_full_text&amp;quot;&amp;gt;&lt;br /&gt;
Replace me.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;More Stuff&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;stuff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;only_if_content&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&lt;br /&gt;
This will be shown only if it actually contains content. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5982</id>
		<title>Cql context set solr</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5982"/>
				<updated>2010-06-14T22:55:36Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A URI registered to identify a [http://www.loc.gov/standards/sru/specs/cql.html#contextsets CQL Context Set] that defines operations originally from the Solr text indexing tool. &lt;br /&gt;
&lt;br /&gt;
URI: http://purl.org/net/cql-context-set/solr&lt;br /&gt;
&lt;br /&gt;
Right now, only one relation is defined in this context set. &lt;br /&gt;
&lt;br /&gt;
== relations ==&lt;br /&gt;
&lt;br /&gt;
=== dismax ===&lt;br /&gt;
&lt;br /&gt;
A relation indicating that the value will be interpreted using the Solr Dismax query parser. See [[http://wiki.apache.org/solr/DisMaxRequestHandler#q]] .&lt;br /&gt;
&lt;br /&gt;
The actual Dismax query params (qf, pf, etc) will be chosen by the server, generally based on the CQL index specified. &lt;br /&gt;
&lt;br /&gt;
While there usually will be an actual Solr instance backing things up, the dismax relation simply means the value will be interpreted per the syntax of the Solr Dismax query parser, it does not guarantee that there is a Solr server involved.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5980</id>
		<title>Cql context set solr</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5980"/>
				<updated>2010-06-14T22:33:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A URI registered to identify a CQL Context Set in terms of Solr operations. &lt;br /&gt;
&lt;br /&gt;
http://purl.org/net/cql-context-set/solr&lt;br /&gt;
&lt;br /&gt;
== relations ==&lt;br /&gt;
&lt;br /&gt;
=== dismax ===&lt;br /&gt;
&lt;br /&gt;
A relation indicating that the value will be interpreted using the Solr Dismax query parser. See [[http://wiki.apache.org/solr/DisMaxRequestHandler#q]] .&lt;br /&gt;
&lt;br /&gt;
The actual Dismax query params (qf, pf, etc) will be chosen by the server, generally based on the CQL index specified. &lt;br /&gt;
&lt;br /&gt;
While there usually will be an actual Solr instance backing things up, the dismax relation simply means the value will be interpreted per the syntax of the Solr Dismax query parser, it does not guarantee that there is a Solr server involved.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5979</id>
		<title>Cql context set solr</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Cql_context_set_solr&amp;diff=5979"/>
				<updated>2010-06-14T22:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: New page: A URI registered for a CQL Context Set in terms of Solr operations.   == relations ==  === dismax ===  A relation indicating that the value will be interpreted using the Solr Dismax query ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A URI registered for a CQL Context Set in terms of Solr operations. &lt;br /&gt;
&lt;br /&gt;
== relations ==&lt;br /&gt;
&lt;br /&gt;
=== dismax ===&lt;br /&gt;
&lt;br /&gt;
A relation indicating that the value will be interpreted using the Solr Dismax query parser. See [[http://wiki.apache.org/solr/DisMaxRequestHandler#q]] .&lt;br /&gt;
&lt;br /&gt;
The actual Dismax query params (qf, pf, etc) will be chosen by the server, generally based on the CQL index specified. &lt;br /&gt;
&lt;br /&gt;
While there usually will be an actual Solr instance backing things up, the dismax relation simply means the value will be interpreted per the syntax of the Solr Dismax query parser, it does not guarantee that there is a Solr server involved.&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=Umlaut&amp;diff=5943</id>
		<title>Umlaut</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=Umlaut&amp;diff=5943"/>
				<updated>2010-06-01T18:09:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jrochkind: /* APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Umlaut is [[OpenURL]] link resolving middleware that adds functions and services to commercial link resolving software such as [[SFX]]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Umlaut]]&lt;br /&gt;
&lt;br /&gt;
==More information==&lt;br /&gt;
&lt;br /&gt;
[[About Umlaut]] - A gentle introduction to what Umlaut is and what it can do for you.&lt;br /&gt;
&lt;br /&gt;
[http://bibwild.wordpress.com/2008/10/16/umlaut-digital-book/ Digital Text Features] - A tour of some of the 'advanced' digital text features, with a demos pointing to JHU site, hosted on jrochkind's blog. &lt;br /&gt;
&lt;br /&gt;
[http://rubyforge.org/mail/?group_id=4382 Umlaut Listserv]&lt;br /&gt;
&lt;br /&gt;
[http://umlaut.rubyforge.org/ Rubyforge home page for developers]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut wishlist]]&lt;br /&gt;
&lt;br /&gt;
==Installation and Configuration==&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Installation]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut_Deployment]]&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
[http://umlaut.rubyforge.org/api/ Umlaut API Documentation]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Technical Overview]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut_Deployment]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut Local Configuration Architecture]]&lt;br /&gt;
&lt;br /&gt;
===Specific Topics===&lt;br /&gt;
&lt;br /&gt;
[[Umlaut URL parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut logging]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut SFX statistics gotchas]]&lt;br /&gt;
&lt;br /&gt;
====APIs====&lt;br /&gt;
&lt;br /&gt;
[[Umlaut full API]]&lt;br /&gt;
&lt;br /&gt;
[[Umlaut partial html API]]&lt;br /&gt;
&lt;br /&gt;
[[JQuery HTML Updater]]&lt;br /&gt;
&lt;br /&gt;
====Developer Notes====&lt;br /&gt;
[[Notes for a User/Auth architecture]]&lt;/div&gt;</summary>
		<author><name>Jrochkind</name></author>	</entry>

	</feed>