<?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=Shadowspar</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=Shadowspar"/>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/Special:Contributions/Shadowspar"/>
		<updated>2026-04-24T00:48:57Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=North&amp;diff=13045</id>
		<title>North</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=North&amp;diff=13045"/>
				<updated>2012-05-25T13:35:11Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* hashtag and twitter list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the home of the new Ontario/Canada chapter of [http://code4lib.org/ Code4Lib].  Our aim is to create more opportunities for Code4Lib folks in the Ontario/Quebec/Manitoba/Northeast USA area to meet up in person.&lt;br /&gt;
&lt;br /&gt;
==Mailing list==&lt;br /&gt;
&lt;br /&gt;
Want to participate in Code4Lib North meetups and receive &amp;quot;North&amp;quot;-oriented Code4Lib announcements?  Join the code4lib mailing list. (The code4lib-north mailing list was discontinued.)&lt;br /&gt;
&lt;br /&gt;
== Third Meeting: University of Windsor, May 24 and 25th, 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:code4libnorth.png|code4libnorth logo]] &lt;br /&gt;
&lt;br /&gt;
=== Schedule ===&lt;br /&gt;
The schedule has now been moved to an editable google doc at : http://led.uwindsor.ca/c4ln otherwise known as: https://docs.google.com/document/d/1dlTqrBNfiYwjRpVnUvJbtW0K7en1ndVp84WqWbfOrvE/edit&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
This unconference runs on love... and the kindness of the Leddy Library who will provide : coffee, lunch, and wireless and the space&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 24 and 25th, 2012 (it's on!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Times: 9 am start time. 4 pm end time&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: 4th Floor, Leddy Library, University of Windsor: http://www.uwindsor.ca/&lt;br /&gt;
Google Map: http://tinyurl.com/7a79qvw&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Contact: mita@uwindsor.ca&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accommodation ===&lt;br /&gt;
The University offers rooms and suites for travellers, youth, and families seeking overnight, short or extended accommodations through its [http://www.conferences.uwindsor.ca/accommodations-for-individuals-and-families Conference Services: description of services provided]. Use this [https://web4.uwindsor.ca/units/AEC/Hospitality/conferenceServices/Registrations.nsf/CODE4LIBNorth?OpenForm Registration Form] to book a room with Conference Services.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
In addition, University of Windsor special visit rates may be available by calling the local number and asking for the University of Windsor rate at certain hotels (which shouldn't dissuade you from staying wherever you prefer):&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://his-windsor.com/ Holiday Inn Select]&lt;br /&gt;
1855 Huron Church Road, Windsor&lt;br /&gt;
Tel: 1-800-465-4329 or 519-966-1200 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://hamptoninn.hilton.com/en/hp/hotels/index.jhtml?ctyhocn=YQGCNHX Hampton Inn &amp;amp; Suites]&lt;br /&gt;
1840 Huron Church Road, Windsor&lt;br /&gt;
Tel: 800-Hampton or 519-972-0770 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.qualityinn.com/hotel-windsor-canada-CN317 Quality Suites Downtown]&lt;br /&gt;
250 Dougall Ave., Windsor&lt;br /&gt;
Tel: 519-977-9707 (3 km from campus)&lt;br /&gt;
(frequently used hotel for participants in [http://projectconifer.ca Conifer] hackfests)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ceasarswindsor.com/ Caesars Windsor]&lt;br /&gt;
377 Riverside Dr. East, Windsor&lt;br /&gt;
Tel: 800-991-8888 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.windsorriversideinn.com/ The Windsor Riverside Inn]&lt;br /&gt;
333 Riverside Dr. West&lt;br /&gt;
Tel: 519-977-9777 (2 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.travelodge.ca/hotel-search/list/windsor/all/ Travelodge Hotel Windsor Downtown Windsor]&lt;br /&gt;
33 Riverside Dr. East&lt;br /&gt;
Tel: 519-258-7774 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are no bed and breakfasts in the immediate area but the [http://www.bbcanada.com/ontario/southwestern_ontario/windsor Argyle and Olde Walkerville Bed and Breakfasts] are a bus ride away.&lt;br /&gt;
&lt;br /&gt;
=== Social Events ===&lt;br /&gt;
&lt;br /&gt;
There's nothing formal planned but on Wednesday and Thursday nights, we'll try to informally coordinate places to have supper together.  &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suggest that those around on Wednesday night meet up at the [http://www.rockbottom.ca/ Rock Bottom Grill] at 3236 Sandwich Street, Windsor. It will busy because it's &amp;quot;2 for 1 Wing Night&amp;quot; but it should be worth it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
For those who love experimental film, there is the [http://mediacityfilmfestival.com/films-and-schedule-2012/ Media City Film Festival] taking place in Windsor and Detroit. Jason Scott aka textfiles will be speaking at the  [http://www.aadl.org/events/list?id=14190 Ann Arbor Public Library] on Wednesday night&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Food ===&lt;br /&gt;
We will be providing lunch and snacks. (please email organizers if you have a dietary restriction - we will be ordering vegetarian options but we want to make sure we have enough!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Generally folks informally gather for supper. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Here are some of our nearby options:&lt;br /&gt;
[http://www.windsoreats.com/rest_search.php?rest_location=Windsor%20-%20West%20Windsor WindsorEats: Windsor West]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
But there is much more if we wander farther afield: [http://www.windsoreats.com/ WindsorEats]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Near the university on Wyndotte Street are various Asian dining options including:&lt;br /&gt;
* [http://www.restaurantica.com/on/windsor/eros-restaurant/23004000/ Eros Restaurant]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1482082/restaurant/Detroit/Windsor-Seoul-Windsor Windsor Seoul]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1648665/restaurant/Detroit/Bibim-To-Go-Windsor Bibim-To-Go]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
And here's a list of places that could probably fit 40 people:&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1426344/restaurant/Detroit/Bubis-Awsome-Eats-Windsor Bubis Awesome Eats]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1435280/restaurant/Detroit/Hurricanes-Windsor Hurricane's]&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
A combination of 20 talks, 5 minute lightning talks, an Ask Anything session, workshops / hackfest time. We will try to find time for everyone who wants to present!&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
We have talks in the morning and hackfests in the afternoon. We will finalize the speaking schedule Thursday morning but we will try to split the talks between the two days equally.&lt;br /&gt;
&lt;br /&gt;
=== 20 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Ted Lawless || easyArticle - streamlining access to library materials with OpenURL, automated interlibrary loan submission, vendor APIs, Django/Python.&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || my sekret art project &lt;br /&gt;
|-&lt;br /&gt;
| John Fink and Warren Layton|| Embedded Hardware Hijinx&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || RDA for coders/systems folk&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum ||  Our favorite jQuery modules for Drupal 7&lt;br /&gt;
|-&lt;br /&gt;
| David Fiander || The state of the ebook marketplace&lt;br /&gt;
|- &lt;br /&gt;
| Dan Chudnov || backplane&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || Having provocative fun with reference desk statistics in R&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Nick Ruest || Other Redmine uses&lt;br /&gt;
|-&lt;br /&gt;
| Tim Ribaric || Circumvention using the Cloud?&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || #catcode: Cataloguers embrace Code Year&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || &amp;quot;My god, it's full of &amp;lt;span style=&amp;quot;text-decoration:line-through;&amp;quot;&amp;gt;stars!&amp;lt;/span&amp;gt; lists&amp;quot;: building the library website that will incorporate [http://librarian.newjackalmanac.ca/2011/05/code4lib-north-presentation-were-jamun.html Jamun.]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || occupy 1923&lt;br /&gt;
|-&lt;br /&gt;
| Graham Fawcett || A Web-based video annotation tool (for peer review, possibly captioning, maybe for some nefarious library uses we haven't imagined)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 20 or 40 minute workshops: each one teach one ===&lt;br /&gt;
&lt;br /&gt;
:: a workshop you are willing to lead&lt;br /&gt;
::* Intro to Git, if demand warrants -- if not, no big deal (John Fink)&lt;br /&gt;
::* Environmental monitoring on the cheap (Doug Sartori)&lt;br /&gt;
::* (I program in a few languages, and could do a teaser-session on one of them if there's interest. Maybe [http://www.python.org Python], [http://www.haskell.org/ Haskell], [http://clojure.org/  Clojure] or [http://dlang.org D]?) (Graham Fawcett)&lt;br /&gt;
::* [[C4LN 2012: Intro to the Twitter API|Intro to the Twitter API]], including how one might use it to make a Twitter bot ([[User:shadowspar|Rick Scott]])&lt;br /&gt;
&lt;br /&gt;
:: a workshop of what you would love to attend&lt;br /&gt;
::* intro to IRC, meet zoia (Mita, Warren, Sarah, John F)&lt;br /&gt;
::* how to create a twitter bot (Mita, John F, David F)&lt;br /&gt;
::* intro to Git (Warren, Sarah, David F)&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: scheme schemas  ===&lt;br /&gt;
- build your own twitter bot; bot battles&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: feel free to add to the list ===&lt;br /&gt;
*twitter bot war with code4lib The Great Eastern? http://wiki.code4lib.org/index.php/GreatEastern&lt;br /&gt;
*changing Odessi XML records to MARC XML so OCUL libraries can load MARC for Odessi, esp. Stats Can stuff. We started this project at TUG, so need someone to help me get further or finish! New note: Chris put what he did so far on [https://github.com/lib-uoguelph-ca/ddi2marc-xml github](Alison)&lt;br /&gt;
*[http://twitter.com/CanadianPoetry @CanadianPoetry]  Sprint: [http://library.utoronto.ca/canpoetry Canadian Poetry Online] needs an overhaul! Canadian Poetry is a web anthology of contemporary Canadian poetry, providing biographies and full-text poems from Canada's leading poets. Join in this [http://drupal.org/node/247982 code sprint] to help with the migration to Drupal, site building, development, and theming of the new version. (Andrew)&lt;br /&gt;
*[http://www.jasongriffey.net/librarybox/ LibraryBox] is a customized version of PirateBox that can run be run on the inexpensive TP-Link MR 3020. Currently, it acts as a simple file server but it could potentially offer a more library-focused service, such as [https://twitter.com/#!/djfiander/status/184315493157576704 an eBook server for nearby devices using OPDS]. (Warren)&lt;br /&gt;
* [http://evergreen-ils.org/ Evergreen]: The Evergreen project is currently recruiting volunteers for the Google Summer of Code effort and has [http://evergreen-ils.org/dokuwiki/doku.php?id=dev:summer_of_coding_ideas#project_ideas a list of project ideas]. Some of these ideas, if not already claimed by a student GSoC participant, might make for interesting hackfest projects. Or we could rewrite the MARC editor in Dojo.&lt;br /&gt;
* [https://github.com/wdenton/splurge/ SPLURGE]: The Scholars Portal Library Usage-Based Recommendation Engine began at a hackfest in February and has been worked on since then, but it needs one last push to get all of the pieces joined together so that an easy-to-use &amp;quot;people who borrowed this also borrowed that&amp;quot; service built on shared circ data can be tested. There are four parts to SPLURGE: data cleanup, getting it into a properly configured database, a web service that talks to the database, some Javascript that can dropped into a catalogue to talk to the web service. They all exist, but not all of them are quite done and they don't all talk to each other. The purpose of this hackfest project would be for people to familiarize themselves with the work that's been done, and then try to finish it up.&lt;br /&gt;
&lt;br /&gt;
=== code4lib north organizational team ===&lt;br /&gt;
*Mita Williams &lt;br /&gt;
*Karen Pillon&lt;br /&gt;
*Peter Zimmerman&lt;br /&gt;
*Jennifer Soutter&lt;br /&gt;
*Cathy Maskell&lt;br /&gt;
*Ranti Junus (Michigan State)&lt;br /&gt;
&lt;br /&gt;
=== hashtag and twitter list ===&lt;br /&gt;
*c4ln2012&lt;br /&gt;
*c4ln&lt;br /&gt;
*https://twitter.com/#!/copystar/c4ln&lt;br /&gt;
&lt;br /&gt;
== Code4lib North Meetups in Ottawa ==&lt;br /&gt;
&lt;br /&gt;
'''Purpose:''' To connect with other code4libbers in the area and start building a code4lib community in Ottawa, Ontario&lt;br /&gt;
&lt;br /&gt;
===Next Meetup===&lt;br /&gt;
&lt;br /&gt;
The next meetup is scheduled for Wednesday June 13th 2012 at 5pm (we'll take May off for code4lib North in Windsor). Once again, we'll be in the private room downstairs in The Exchange Pub.&lt;br /&gt;
&lt;br /&gt;
As usual, please bring your laptops, tablets, demos, problems, and topics of discussion. Beginners are always welcome!&lt;br /&gt;
&lt;br /&gt;
Those interested in attending or speaking can e-mail warren.layton@gmail.com for more information and (if not on the code4lib mailing list) to be kept informed of future events.&lt;br /&gt;
&lt;br /&gt;
===Past Meetups===&lt;br /&gt;
&lt;br /&gt;
The inaugural code4lib Ottawa meetup occurred on March 28, 2012 and was a simple meet-and-greet at a local pub. Since then, we try to combine this social event with some short interesting talks. Here is what we have learned about in recent meetups:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''April 24, 2012 - Show and Tell Session'''&lt;br /&gt;
{| border=1&lt;br /&gt;
! Presenter&lt;br /&gt;
! Description of Talk&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/maxneuvians Max Neuvians] || [http://social-biblio.ca/ Social-biblio.ca] : An approach to Twitter data visualization, archiving, and the larger narrative.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/scilib Richard Akerman] || [http://twitter.com/scilib Richard Akerman] and [http://twitter.com/bethmaru Mary Beth Baker] are organizing a Reading Garden at the upcoming Canadian Library Association conference. They are seeking advice on how to provide wireless access. Anyone with ideas is encouraged to get in touch with them.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/warlayton Warren Layton] || A quick demo of [http://www.jasongriffey.net/librarybox/ LibraryBox], a wireless filesharing device, which may have interesting applications in government and other libraries where IT restrictions can limit network use.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Second Meeting: McMaster University, May 5-6, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign Up ===&lt;br /&gt;
We can handle a maximum of 50 people and you can signup here: http://c4ln2011.eventbrite.com/.&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 5-6, 2011&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: &lt;br /&gt;
* 1280 Main St. West, [http://www.google.com/maps/place?cid=4151756913136304412&amp;amp;q=mcmaster+university+mills+memorial+library&amp;amp;hl=en&amp;amp;dtab=0&amp;amp;sll=43.260928,-79.91933&amp;amp;sspn=0.773056,1.227722&amp;amp;ie=UTF8&amp;amp;ll=43.647007,-80.532532&amp;amp;spn=0,0&amp;amp;z=10 McMaster University, Hamilton, Ontario - ]  (map)&lt;br /&gt;
* Mills Memorial Library, [http://library.mcmaster.ca/lyons Lyons New Media Centre] (4th floor)&lt;br /&gt;
&lt;br /&gt;
=== Accommodation === &lt;br /&gt;
Our helpful folks in Research Collections put this [http://library.mcmaster.ca/archives/visiting guide] together a while back.&lt;br /&gt;
&lt;br /&gt;
=== Parking, Campus Map, Public Transit ===&lt;br /&gt;
* [http://parking.mcmaster.ca/ Parking] - I understand we have the most expensive parking in OCUL. I'm sorry :( - There is one bit of good news: if you park in the M lot, the day rate drops from $20 to $5. The M lot is about a 10-12 minute walk from the library, and there is a shuttle that will take you part of the way.&lt;br /&gt;
* [http://parking.mcmaster.ca/June25UpdatedMapWithAutomation.PDF Campus map] - we are building #10 - Mills Memorial Library&lt;br /&gt;
* [http://www.hamilton.ca/CityServices/transit?WT.mc_id=hsr&amp;amp;WT.hamilton_redirect_friendly=1/ Public Transit] &lt;br /&gt;
* HSR buses that come to campus are: [http://www.hamilton.ca/NR/rdonlyres/F831E17F-2373-48C8-A808-F7DB7873400E/0/JA11Route1.pdf 1], [http://www.hamilton.ca/NR/rdonlyres/FB34FB4E-EF3A-4154-AF2D-46C06F05F06F/0/JA11Route51.pdf 51], [http://www.hamilton.ca/NR/rdonlyres/53F0A87E-6DA9-4E04-A6A6-6BF5E7482806/0/JA11Route5.pdf 5c], [http://www.hamilton.ca/NR/rdonlyres/B25032CD-ABC4-40D3-8509-FA6CCB7DB4CA/0/JA11Route52A.pdf 52], and [http://www.hamilton.ca/NR/rdonlyres/650AA6C2-DD5F-422F-86A6-E0D6EA688CEE/0/JA11Route10.pdf 10] - The 10 and 52 drop off by the hospital, the others drop off right outside Mills.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
Keep with tradition set last year - No cost and McMaster University has tentatively agreed to provided coffee, lunch, space, and wireless.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
Day 1:&lt;br /&gt;
* Hackfest (send problems/proposals to John Fink and Nick Ruest)&lt;br /&gt;
Day 2&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF/breakouts&lt;br /&gt;
&lt;br /&gt;
=== 20-minute talks ===&lt;br /&gt;
I'd like to start a new tradition with Code4Lib North and deposit the slides and *maybe* recordings of the presentations in our IR. If people are cool with this, I can get it all setup prior to the event.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| William J Turkel || [http://digitalcommons.mcmaster.ca/c4ln/9/ Functional Programming Workout]&lt;br /&gt;
|-&lt;br /&gt;
| Dileshni Jayasinghe &amp;amp; Majid Valipour || [http://digitalcommons.mcmaster.ca/c4ln/8/ Programming at Scholars Portal: apps and APIs]&lt;br /&gt;
|-&lt;br /&gt;
| William Wueppelmann || [http://digitalcommons.mcmaster.ca/c4ln/1/ The Canadiana Web API]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || [http://digitalcommons.mcmaster.ca/c4ln/7/ WWIC? Linked Library Data as a Customer Service Medium]&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || [http://digitalcommons.mcmaster.ca/c4ln/3/ We're jamun (and we hope you like jamun too)]&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || [http://digitalcommons.mcmaster.ca/c4ln/10/ Getting started with R]&lt;br /&gt;
|-&lt;br /&gt;
| Alan Harnum || [http://digitalcommons.mcmaster.ca/c4ln/5/ When All You Have Is XSLT, Everything Looks Like XML: Heterogeneous Cloud-Based Content Management Using Google Docs and Other Services]&lt;br /&gt;
|-&lt;br /&gt;
| Wendy Huot || [http://digitalcommons.mcmaster.ca/c4ln/12/ Why can't a web page be more like a book? Using LaTeX with Readability to generate better 'print friendly' versions of web pages]&lt;br /&gt;
|-&lt;br /&gt;
| Chris Charles || [http://digitalcommons.mcmaster.ca/c4ln/11/ Introduction to Google Refine]&lt;br /&gt;
|-&lt;br /&gt;
| Karen A. Coombs || [http://digitalcommons.mcmaster.ca/c4ln/2/ Zend Framework: making using web services easier]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5-minute lighting talks ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum || [http://digitalcommons.mcmaster.ca/c4ln/4/ Transition to Unity]&lt;br /&gt;
|-&lt;br /&gt;
| Dale Askey || [http://digitalcommons.mcmaster.ca/c4ln/6/ Fun with Failure, or, Learning to Stick a Fork in Things]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Getting testers to test what you need to have tested!]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Using RT Tracker for user feedback]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== First Meeting: Kingston ON, May 6-7, 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign up ===&lt;br /&gt;
&lt;br /&gt;
Free registration -- but registration is now closed (we have 40+ signed up).&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
&lt;br /&gt;
'''May 6-7, 2010''' &lt;br /&gt;
* Thursday: 2pm-5:30pm, followed by dinner and drinks&lt;br /&gt;
* Friday: 9am-4:30pm&lt;br /&gt;
&lt;br /&gt;
Meeting location:&lt;br /&gt;
* [http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;source=embed&amp;amp;msa=0&amp;amp;msid=103786326471006763157.0004700577498a9166e33&amp;amp;ll=44.227888,-76.494584&amp;amp;spn=0.009226,0.012875&amp;amp;z=15| 93 University Ave, Queen's University, Kingston Ontario] (map) &lt;br /&gt;
* Meeting room: [http://library.queensu.ca/library/floorplans/index.php?library=Douglas&amp;amp;floorpos=4F&amp;amp;section=North_Reading_Room#map| 1966 North Reading Room, Level 7, Douglas Library Building] (floorplan) - located on the top floor, just follow the signs to find the room.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
&lt;br /&gt;
There was no charge. Queen's University very generously supplied the space, the Internet connection, and free lunch on Friday!&lt;br /&gt;
&lt;br /&gt;
=== How to get involved ===&lt;br /&gt;
&lt;br /&gt;
Join the mailing list.  That is where the planning will happen.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF sessions&lt;br /&gt;
* Maybe a hackfest.&lt;br /&gt;
&lt;br /&gt;
=== How many are attending? ===&lt;br /&gt;
&lt;br /&gt;
45 people have registered. Most will be attending.&lt;br /&gt;
&lt;br /&gt;
=== Program ===&lt;br /&gt;
&lt;br /&gt;
'''Thursday May 6:'''&lt;br /&gt;
&lt;br /&gt;
* 2pm-5pm: Open format (hang out and hack)&lt;br /&gt;
* Evening: Go out for dinner and drinks &lt;br /&gt;
&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
&lt;br /&gt;
* 9am-4:30pm: Schedule currently &amp;quot;under construction&amp;quot; -- see table below.&lt;br /&gt;
&lt;br /&gt;
Morning Break: 10:30-10:45 .... Lunch: 12-1 .... &lt;br /&gt;
&lt;br /&gt;
Afternoon: 5 minute lightning talks .... &amp;quot;Birds of a feather&amp;quot; breakout sessions (sign up sheets on front table)&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || OpenFRBR &lt;br /&gt;
|-&lt;br /&gt;
| Walter Lewis || Exposing Linked Data &lt;br /&gt;
|-&lt;br /&gt;
| Art Rhyno || Open Layers and Newspapers (Walter Lewis)&lt;br /&gt;
|-&lt;br /&gt;
| MJ Suhonos || [http://mytpl.ca Location-aware Mobile Search]&lt;br /&gt;
|-&lt;br /&gt;
|Alan Harnum || Building A [http://beta.torontopubliclibrary.ca/ Library Website] with [http://www.endeca.com/ Endeca] technology&lt;br /&gt;
|-&lt;br /&gt;
|Wendy Huot || &amp;quot;Your feedback, please&amp;quot;: library web design critique&lt;br /&gt;
|-&lt;br /&gt;
|Glen Newton || [http://zzzoot.blogspot.com/2009/07/project-torngat-building-large-scale.html Using Open Source Tools for Visualization and Semantic Mapping in a Large Scale Article Digital Library]&lt;br /&gt;
|-&lt;br /&gt;
| Eric Palmitesta || XQuery &lt;br /&gt;
|-&lt;br /&gt;
| John Miedema || [http://code.google.com/p/openbook4wordpress/wiki/index OpenBook WordPress Plugin Update - Why It's Cool to Love OpenURL +++]&lt;br /&gt;
|-&lt;br /&gt;
|Nasser Saleh || Coagmento!: a potential collaborative search tool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Who's interested in Code4Lib North? ==&lt;br /&gt;
&lt;br /&gt;
Declare your interest in a Code4lib North chapter:&lt;br /&gt;
&lt;br /&gt;
* Wendy Huot, Queen's University&lt;br /&gt;
* Michael Vandenburg, Queen's University&lt;br /&gt;
* [http://www.miskatonic.org/ William Denton], York University&lt;br /&gt;
* John Fink, McMaster University&lt;br /&gt;
* [http://ruebot.net/ Nick Ruest], [http://digitalcollections.mcmaster.ca/ McMaster University]&lt;br /&gt;
* Walter Lewis, Halton Hills/OurOntario&lt;br /&gt;
* Edward Corrado, Binghamton University (NY, USA)&lt;br /&gt;
* [http://thebookpile.wordpress.com Warren Layton], Library of Parliament (Ottawa)&lt;br /&gt;
* Pascal Calarco, University of Notre Dame (IN, USA)&lt;br /&gt;
* Rob Fox, University of Notre Dame (IN, USA)&lt;br /&gt;
* Mita Williams, University of Windsor&lt;br /&gt;
* John Fereira, Cornell University&lt;br /&gt;
* MJ Suhonos, Toronto Public Library&lt;br /&gt;
* Dianne Dietrich, Cornell University&lt;br /&gt;
* David Fiander, University of Western Ontario&lt;br /&gt;
* Peter Schlumpf, [http://www.avantilibrarysystems.com/ Avanti Library Systems]&lt;br /&gt;
* Roy Zimmer, Western Michigan University&lt;br /&gt;
* Kimberly Silk, Martin Prosperity Institute, University of Toronto&lt;br /&gt;
* Andrew Darby, Ithaca College (Ithaca, NY)&lt;br /&gt;
* Laura Harris, Grand Valley State University (western Michigan)&lt;br /&gt;
* Tim Ribaric, Brock University&lt;br /&gt;
* Sibyl Schaefer, University of Vermont&lt;br /&gt;
* Peter Ellinger, Ontario Legislative Library, Toronto&lt;br /&gt;
* Keith Jenkins, Cornell University&lt;br /&gt;
* [http://pmlozeau.ca/ Patrick M. Lozeau]&lt;br /&gt;
* Mike Kreyche, Kent State University&lt;br /&gt;
* Graham McCarthy, [http://www.ryerson.ca/library/ Ryerson University]&lt;br /&gt;
* [http://johnmiedema.ca John Miedema]&lt;br /&gt;
* Janey Chen, Ontario Legislative Library, Toronto&lt;br /&gt;
* Rob McDonald, Carleton University&lt;br /&gt;
* Amy Buckland, McGill University&lt;br /&gt;
* Tricia Williams (pgwillia), Consultant/[http://search.ourontario.ca OurOntario]&lt;br /&gt;
* Mike Beccaria, Paul Smith's College (Paul Smiths, NY)&lt;br /&gt;
* Amanda Etches-Johnson, McMaster University&lt;br /&gt;
* Art Rhyno, University of Windsor&lt;br /&gt;
* [http://bethmaru.com Mary Beth Baker], CIC (Ottawa)&lt;br /&gt;
* Wayne Schneider, Hennepin County Library&lt;br /&gt;
* Carol Serroul, CISTI&lt;br /&gt;
* Graham Stewart, University of Toronto Libraries&lt;br /&gt;
* Peter Zimmerman, University of Windsor&lt;br /&gt;
* Margaret Kipp, University of Wisconsin Milwaukee&lt;br /&gt;
* [http://coffeecode.net Dan Scott], Laurentian University&lt;br /&gt;
* Lawrence Wardroper (Courts Administration Services Library, Ottawa)&lt;br /&gt;
* Matt McCollow, McMaster University&lt;br /&gt;
* [http://www.parser.ca/z678/ George Duimovich], NRCan Library (Ottawa)&lt;br /&gt;
* [mailto:bobbi_fox@harvard.edu Bobbi Fox], Harvard University Library (Massachusetts)&lt;br /&gt;
* Dileshni Jayasinghe, OCUL, University of Toronto&lt;br /&gt;
* Eric Palmitesta, OCUL, University of Toronto&lt;br /&gt;
* [http://twitter.com/alxp Alexander O'Neill], Robertson Library, University of Prince Edward Island&lt;br /&gt;
* Chris Beer, WGBH (Massachusetts)&lt;br /&gt;
* Robin Isard, Algoma University (Sault Ste Marie ON)&lt;br /&gt;
* Pat Moore, Carleton University (Ottawa ON)&lt;br /&gt;
* [http://wagathon.tumblr.com/ Alan Harnum], Toronto Public LIbrary (Toronto ON)&lt;br /&gt;
* Colin Prince, University of Toronto Libraries&lt;br /&gt;
* Tom Keays, Syracuse University LIbrary (Syracuse, NY)&lt;br /&gt;
* Chris Charles, University of Guelph (Guelph, ON)&lt;br /&gt;
* John MacGillivray, Carleton University (Ottawa ON)&lt;br /&gt;
* Lester Webb, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Elizabeth Goldman, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Jennifer O'Donnell, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* David Smith, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Loren Fantin, Our Ontario,Knowledge Ontario&lt;br /&gt;
* Daulton Theodore, Carleton University (Ottawa, ON)&lt;br /&gt;
* Peter MacDonald, Hamilton College (Clinton, NY)&lt;br /&gt;
* Rebecca Larocque, North Bay Public Library (North Bay, ON)&lt;br /&gt;
* Doris Rankin, Library and Information Management Consultant, Ottawa, ON&lt;br /&gt;
* Diane Bédard, Learn Ontario &amp;amp; Our Ontario; Knowledge Ontario&lt;br /&gt;
* [http://www.arts.uottawa.ca/eng/avellino.html Andre Vellino], CISTI / University of Ottawa&lt;br /&gt;
* [http://twitter.com/markswartz Mark Swartz], Queen's University&lt;br /&gt;
* Adam Wead, Rock and Roll Hall of Fame Library and Archives (Cleveland, OH)&lt;br /&gt;
* Pramila Thakur, Ontario Legislative Library, Toronto&lt;br /&gt;
* Anthony Petryk, University of Ottawa&lt;br /&gt;
* Jan Dawson, Ask Ontario, Knowledge Ontario&lt;br /&gt;
* [http://lab.cisti-icist.nrc-cnrc.gc.ca/cistilabswiki/index.php/Glen_Newton Glen Newton], Carleton University&lt;br /&gt;
* Patrick McMaster, Leeds &amp;amp; the 1000 Islands, Rideau Lakes, and North Grenville Public Libraries&lt;br /&gt;
* Nasser Saleh, Queen's University (Kingston ON)&lt;br /&gt;
* [http://stefansinclair.name/ Stéfan Sinclair], McMaster University&lt;br /&gt;
* [http://williamjturkel.net/ William J Turkel], University of Western Ontario&lt;br /&gt;
* Shirley Lew, [http://library.vcc.ca/ Vancouver Community College], (Vancouver BC)&lt;br /&gt;
* [http://twitter.com/edbilodeau Edward Bilodeau], [http://www.mcgill.ca/library/ McGill University]&lt;br /&gt;
* Andrew McAlorum, University of Toronto Libraries&lt;br /&gt;
&lt;br /&gt;
== Meeting Location Suggestions for the Future ==&lt;br /&gt;
&lt;br /&gt;
* Toronto, Ontario&lt;br /&gt;
* Sudbury, Ontario&lt;br /&gt;
* Ottawa, Ontario&lt;br /&gt;
* Montreal, Quebec&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12987</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12987"/>
				<updated>2012-05-24T16:27:13Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: ws&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
'''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
Other useful things:&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  Amongst other things, it links to: &lt;br /&gt;
** [https://dev.twitter.com/status API Status]&lt;br /&gt;
** [https://dev.twitter.com/issues API Known Issues]&lt;br /&gt;
** API blog, discussion, etc etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account === &lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up.  Usually it's going to start with creating an object to represent your connection to Twitter and feeding it ALL THE KEYS. &lt;br /&gt;
&lt;br /&gt;
    my $twitter = Net::Twitter-&amp;gt;new(&lt;br /&gt;
        traits =&amp;gt; [qw/API::REST OAuth/],&lt;br /&gt;
        consumer_key =&amp;gt; $conf{'consumer_key'},&lt;br /&gt;
        consumer_secret =&amp;gt; $conf{'consumer_secret'},&lt;br /&gt;
        access_token =&amp;gt; $conf{'access_token'},&lt;br /&gt;
        access_token_secret =&amp;gt; $conf{'access_token_secret'},&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
...and then you'll be able to use the library methods to do the things that you might want to do.&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
    twitter = TwitterConnection.new() &lt;br /&gt;
    &lt;br /&gt;
    at (interval) {&lt;br /&gt;
        msg = fetch_external_resource;&lt;br /&gt;
        msg.truncate_to_140_chars;&lt;br /&gt;
        twitter-&amp;gt;update(msg)&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
    twitter = TwitterConnection.new() &lt;br /&gt;
    &lt;br /&gt;
    mentions = twitter-&amp;gt;mentions( since_id =&amp;gt; last_mention )&lt;br /&gt;
    &lt;br /&gt;
    at (interval) {&lt;br /&gt;
        foreach mention in mentions {&lt;br /&gt;
            mention.parse&lt;br /&gt;
            mention.reply&lt;br /&gt;
            last_mention = mention.id&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    sub reply(mention) {&lt;br /&gt;
        msg = fetch_external_resource()&lt;br /&gt;
    &lt;br /&gt;
        msg = '@' + mention.sending_user-&amp;gt;screen_name + ' ' + msg&lt;br /&gt;
        msg.truncate_to_140_chars&lt;br /&gt;
        twitter-&amp;gt;update(msg, in_reply_to =&amp;gt; mention)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12986</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12986"/>
				<updated>2012-05-24T16:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +getting started on code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
'''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
Other useful things:&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  Amongst other things, it links to: &lt;br /&gt;
** [https://dev.twitter.com/status API Status]&lt;br /&gt;
** [https://dev.twitter.com/issues API Known Issues]&lt;br /&gt;
** API blog, discussion, etc etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account === &lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up.  Usually it's going to start with creating an object to represent your connection to Twitter and feeding it ALL THE KEYS. &lt;br /&gt;
&lt;br /&gt;
    my $twitter = Net::Twitter-&amp;gt;new(&lt;br /&gt;
        traits =&amp;gt; [qw/API::REST OAuth/],&lt;br /&gt;
        consumer_key =&amp;gt; $conf{'consumer_key'},&lt;br /&gt;
        consumer_secret =&amp;gt; $conf{'consumer_secret'},&lt;br /&gt;
        access_token =&amp;gt; $conf{'access_token'},&lt;br /&gt;
        access_token_secret =&amp;gt; $conf{'access_token_secret'},&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
...and then you'll be able to use the library methods to do the things that you might want to do.&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
    twitter = TwitterConnection.new() &lt;br /&gt;
&lt;br /&gt;
    at (interval) {&lt;br /&gt;
        msg = fetch_external_resource;&lt;br /&gt;
        msg.truncate_to_140_chars;&lt;br /&gt;
        twitter-&amp;gt;update(msg)&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
    twitter = TwitterConnection.new() &lt;br /&gt;
&lt;br /&gt;
    mentions = twitter-&amp;gt;mentions( since_id =&amp;gt; last_mention )&lt;br /&gt;
&lt;br /&gt;
    at (interval) {&lt;br /&gt;
        foreach mention in mentions {&lt;br /&gt;
            mention.parse&lt;br /&gt;
            mention.reply&lt;br /&gt;
            last_mention = mention.id&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    sub reply(mention) {&lt;br /&gt;
        msg = fetch_external_resource()&lt;br /&gt;
&lt;br /&gt;
        msg = '@' + mention.sending_user-&amp;gt;screen_name + ' ' + msg&lt;br /&gt;
        msg.truncate_to_140_chars&lt;br /&gt;
        twitter-&amp;gt;update(msg, in_reply_to =&amp;gt; mention)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12982</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12982"/>
				<updated>2012-05-24T16:05:49Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* API Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
'''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
Other useful things:&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  Amongst other things, it links to: &lt;br /&gt;
** [https://dev.twitter.com/status API Status]&lt;br /&gt;
** [https://dev.twitter.com/issues API Known Issues]&lt;br /&gt;
** API blog, discussion, etc etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12980</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12980"/>
				<updated>2012-05-24T16:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* API Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
'''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* useful things linked from [https://dev.twitter.com/ dev.twitter.com]: &lt;br /&gt;
** [https://dev.twitter.com/status API Status]&lt;br /&gt;
** [https://dev.twitter.com/issues API Known Issues]&lt;br /&gt;
** blog, discussion, etc etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12978</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12978"/>
				<updated>2012-05-24T16:04:33Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* API Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* useful things linked from [https://dev.twitter.com/ dev.twitter.com]: &lt;br /&gt;
** [https://dev.twitter.com/status API Status]&lt;br /&gt;
** [https://dev.twitter.com/issues API Known Issues]&lt;br /&gt;
** blog, discussion, etc etc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12976</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12976"/>
				<updated>2012-05-24T16:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
* pretty much anything that involves hitting the REST API: fetching tweets from your timeline, fetching user profiles, fetching your @-replies, getting a list of followers, whatever.&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit (but see below)&lt;br /&gt;
* publishing status updates (sending tweets)&lt;br /&gt;
* sending direct messages&lt;br /&gt;
* following and unfollowing &lt;br /&gt;
* checking the rate limit by querying &amp;lt;tt&amp;gt;account/rate_limit_status&amp;lt;/tt&amp;gt;&lt;br /&gt;
** it can change, though nowadays it rarely does&lt;br /&gt;
** note also that you get three headers describing how quickly you're nomming through your ratelimit as part of every REST API reply, eg: &lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Limit: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Remaining: 350&amp;lt;/tt&amp;gt;&lt;br /&gt;
*** &amp;lt;tt&amp;gt;X-RateLimit-Reset: 1277485629&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other, service-specific limits&lt;br /&gt;
* 1,000 tweets per day&lt;br /&gt;
* 250 DMs per day&lt;br /&gt;
* follow limits: +1,000 per day plus additional monitoring once you hit 2,000 followed users &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* '''Repeated tweets'''&lt;br /&gt;
** You can't post a tweet that's an exact duplicate of any of your last few tweets. &amp;quot;Whoops! You already tweeted that!&amp;quot;&lt;br /&gt;
* '''Failed requests'''&lt;br /&gt;
** Twitter does crap out every now and again due to load or whatever other reason, so you need to watch for failures and catch the resulting exceptions. [500/502/503/504]&lt;br /&gt;
&lt;br /&gt;
* [https://dev.twitter.com/docs/error-codes-responses HTTP responses / error codes] ''are'' meaningful and you must honour them in your bot's behaviour.  In particular:&lt;br /&gt;
** '''400''' means you've hit the ratelimit on the REST API&lt;br /&gt;
** '''420''' means you've hit the ratelimit on the Search or Streaming API &lt;br /&gt;
** '''403''' means you've hit update (tweeting) limit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting started on the code ==&lt;br /&gt;
&lt;br /&gt;
Each Twitter API library is going to have its own way to get initialized and set up. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12972</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12972"/>
				<updated>2012-05-24T15:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +don't abide by the ratelimit? NO SOUP FOR YOU.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
After you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
Now your bot's twitter account has granted authorization to your app to act on its behalf.  You'll that the relevant access token credentials have been created: &lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
* '''&amp;lt;tt&amp;gt;access_token_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduct and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
Twitter has a very, very load/performance-centric outlook on the world because of the massive amounts of data and requests they deal with.  If you don't play by the rules, twitter has absolutely no hesitation in going [http://i.imgur.com/bf1Xu.jpg NO SOUP FOR YOU].&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit&lt;br /&gt;
* checking the rate limit (it can change, though nowadays it rarely does)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
* failed reqs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example: inetkami ==&lt;br /&gt;
&lt;br /&gt;
* Twitter account: [http://twitter.com/inetkami @inetkami]&lt;br /&gt;
* Code: https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
What it does: fetches, on request:&lt;br /&gt;
* [http://en.wikipedia.org/wiki/METAR METAR] (terse weather condition reports intended for aviators)&lt;br /&gt;
* [http://apps.cbp.gov/bwt/ Border Wait Times]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12968</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12968"/>
				<updated>2012-05-24T15:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +much more detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== BEFORE creating an app: Bot-specific stuff ===&lt;br /&gt;
&lt;br /&gt;
If you're going to have a separate twitter account for your bot, the best thing to do is to create that account ''before you create your app''.  Then create your new app under ''under the bot's account''.  This will simplify doing the OAuth dance below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== First steps to create an app ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter (bot's) account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up the App ===&lt;br /&gt;
&lt;br /&gt;
* after you've set up your app, you receive your OAuth consumer keys for the app:&lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Authorize the App on your Bot's Account ===&lt;br /&gt;
&lt;br /&gt;
While still logged in under the bot's account, navigate to the app's page and generate your access token:&lt;br /&gt;
&lt;br /&gt;
Details tab → Your Access Token ''*click*''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of the Road ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of Conduc and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* REST api is limited to...&lt;br /&gt;
** 350/reqs per hour ''per signed-in account''&lt;br /&gt;
** 150/reqs per hour ''per anonymous IP address''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Things that '''do''' count against your limit&lt;br /&gt;
&lt;br /&gt;
Things that '''do not''' count against your limit&lt;br /&gt;
* checking the rate limit (it can change, though nowadays it rarely does)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
* failed reqs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General things you may want to do ==&lt;br /&gt;
&lt;br /&gt;
=== Check for @-messages and reply === &lt;br /&gt;
&lt;br /&gt;
=== Tweet updates from elsewhere === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12967</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12967"/>
				<updated>2012-05-24T14:16:41Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +more OAuth and setup details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== First steps ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
Credentials&lt;br /&gt;
* consumer credentials (consumer key &amp;amp; consumer secret)&lt;br /&gt;
* access credentials (access token &amp;amp; access secret)&lt;br /&gt;
* (also request token &amp;amp; secret)&lt;br /&gt;
&lt;br /&gt;
OAuth workflow:&lt;br /&gt;
* user goes to server and says they'd like to authorize application ''X'' to do action ''Y''&lt;br /&gt;
* server generates access token which represents the combination of the specific app &amp;amp; the specific user &amp;amp; the specific level of access the user has granted to that app&lt;br /&gt;
* user feeds the access token to the app&lt;br /&gt;
* the app can then present the access token to the server (in combination with its consumer credentials) and be permitted to do whatever's been authorized&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
* after you've set up your app, you receive your OAuth consumer keys:&lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
The first thing you're going to want to do is go into your app settings and set the correct level of access that your app is going to request from users.  This is under the '''Settings''' tab:&lt;br /&gt;
&lt;br /&gt;
* Application type:&lt;br /&gt;
** Read&lt;br /&gt;
** Read/Write&lt;br /&gt;
** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
You are probably going to want one of the latter two.  Which one depends on whether or not your app is going to work with DMs (direct messages) or not.&lt;br /&gt;
&lt;br /&gt;
You can also fill in the rest of the self-explanatory fields in the Details and Settings tabs as you like (organization, etc).&lt;br /&gt;
&lt;br /&gt;
== Bot-specific stuff ==&lt;br /&gt;
&lt;br /&gt;
* create an account for your bot&lt;br /&gt;
* authorize it on your app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of the Road and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12966</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12966"/>
				<updated>2012-05-24T13:58:57Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: working up a terse OAuth intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== First steps ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
=== A brief segue into OAuth ===&lt;br /&gt;
&lt;br /&gt;
http://hueniverse.com/oauth/guide/intro/&lt;br /&gt;
&lt;br /&gt;
OAuth metaphor: ''valet key'' to your car &lt;br /&gt;
* lets an app act on behalf of a user when dealing with some service&lt;br /&gt;
* lets a user give an app specific permissions to interact with a service on their behalf&lt;br /&gt;
&lt;br /&gt;
Roles in OAuth:&lt;br /&gt;
* consumer (client) -- ''your app''&lt;br /&gt;
* service provider (server) -- ''Twitter''&lt;br /&gt;
* user (resource owner) -- ''user''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* receive OAuth keys &lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_key&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
** '''&amp;lt;tt&amp;gt;consumer_secret&amp;lt;/tt&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* tabs we're initially interested in: Details &amp;amp; Settings&lt;br /&gt;
* Settings tab:&lt;br /&gt;
** Application type:&lt;br /&gt;
*** Read&lt;br /&gt;
*** Read/Write&lt;br /&gt;
*** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bot-specific stuff ==&lt;br /&gt;
&lt;br /&gt;
* create an account for your bot&lt;br /&gt;
* authorize it on your app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of the Road and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12965</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12965"/>
				<updated>2012-05-24T13:25:41Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* API Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== First steps ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
* Details tab&lt;br /&gt;
* Settings tab:&lt;br /&gt;
** Application type:&lt;br /&gt;
*** Read&lt;br /&gt;
*** Read/Write&lt;br /&gt;
*** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
* receive OAuth keys &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bot-specific stuff ==&lt;br /&gt;
&lt;br /&gt;
* create an account for your bot&lt;br /&gt;
* authorize it on your app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of the Road and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12964</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12964"/>
				<updated>2012-05-24T13:25:06Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* API Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area''' -- you'll spend a lot of time here =)&lt;br /&gt;
* other useful things linked from [https://dev.twitter.com/ dev.twitter.com]: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== First steps ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
* Details tab&lt;br /&gt;
* Settings tab:&lt;br /&gt;
** Application type:&lt;br /&gt;
*** Read&lt;br /&gt;
*** Read/Write&lt;br /&gt;
*** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
* receive OAuth keys &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bot-specific stuff ==&lt;br /&gt;
&lt;br /&gt;
* create an account for your bot&lt;br /&gt;
* authorize it on your app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of the Road and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12958</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12958"/>
				<updated>2012-05-24T12:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
** other useful things linked therefrom: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
* '''https://dev.twitter.com/docs is the main documentation area'''&lt;br /&gt;
** you'll find yourself spending a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
&lt;br /&gt;
==== REST API ====&lt;br /&gt;
* query→response based access&lt;br /&gt;
* the mainstay of the API; the first part of it you'll want to be concerned with, and the part you'll likely use most&lt;br /&gt;
&lt;br /&gt;
==== Streaming API ====&lt;br /&gt;
* aka ''drinking from the firehose'' =)&lt;br /&gt;
* persistent connection&lt;br /&gt;
* push-based communication w/ v.high ratelimit (1% of ''all tweets'')&lt;br /&gt;
&lt;br /&gt;
==== Search API ====&lt;br /&gt;
* just like it says on the tin&lt;br /&gt;
* also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries has a good list&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
=== First steps ===&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
* fill out basic info about your app &lt;br /&gt;
* agree to be a good citizen, as detailed below&lt;br /&gt;
&lt;br /&gt;
Huzzah! You have your very own app!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
* Details tab&lt;br /&gt;
* Settings tab:&lt;br /&gt;
** Application type:&lt;br /&gt;
*** Read&lt;br /&gt;
*** Read/Write&lt;br /&gt;
*** Read/Write/Access DMs&lt;br /&gt;
&lt;br /&gt;
* receive OAuth keys &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bot-specific stuff ==&lt;br /&gt;
&lt;br /&gt;
* create an account for your bot&lt;br /&gt;
* authorize it on your app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== General Rules of the Road and TOS ===&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
=== Rate limits ===&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
=== Other gotchas ===&lt;br /&gt;
&lt;br /&gt;
* Repeated tweets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12954</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12954"/>
				<updated>2012-05-24T11:58:52Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central.  &lt;br /&gt;
** other useful things linked therefrom: [https://dev.twitter.com/status API Status], [https://dev.twitter.com/issues API Known Issues], blog &amp;amp; discussion&lt;br /&gt;
* https://dev.twitter.com/docs is the main documentation area&lt;br /&gt;
** you'll find yourself spending a lot of time here =)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
The twitter API breaks down into three main areas&lt;br /&gt;
* the '''REST API'''&lt;br /&gt;
** query→response based access&lt;br /&gt;
** this is what you're most likely to use &lt;br /&gt;
* the '''Streaming API''' &lt;br /&gt;
** aka ''drinking from the firehose'' =)&lt;br /&gt;
** push-based communication w/ v.high ratelimit&lt;br /&gt;
* the '''Search API'''&lt;br /&gt;
** just like it says on the tin&lt;br /&gt;
** also trending topics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
https://dev.twitter.com/docs/twitter-libraries&lt;br /&gt;
&lt;br /&gt;
* Perl: [http://search.cpan.org/dist/Net-Twitter Net::Twitter]&lt;br /&gt;
* Python: [https://github.com/tweepy/tweepy tweepy] and many others&lt;br /&gt;
* Ruby: [https://github.com/jnunemaker/twitter twitter] rubygem and others &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
=== Repeated tweets ===&lt;br /&gt;
&lt;br /&gt;
=== General TOS ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;br /&gt;
&lt;br /&gt;
== Other Miscellany ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.readwriteweb.com/hack/2012/05/a-utility-that-makes-you-master-of-the-twitterverse.php t], a Ruby command-line interface to the Twitter API&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12855</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12855"/>
				<updated>2012-05-23T19:42:00Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central. &lt;br /&gt;
* https://dev.twitter.com/docs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
The twitter API breaks down into three main areas&lt;br /&gt;
* the REST API (query→response based access)&lt;br /&gt;
* the Streaming API (drinking from the firehose)&lt;br /&gt;
* the Search API (just like it says on the tin)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
* https://support.twitter.com/articles/76915 - automation rules and best practices&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
=== Repeated tweets ===&lt;br /&gt;
&lt;br /&gt;
=== General TOS ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
http://twitter.com/inetkami&lt;br /&gt;
https://github.com/rickscott/inetkami&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12852</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12852"/>
				<updated>2012-05-23T18:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +beginning details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/ is API central. &lt;br /&gt;
* https://dev.twitter.com/docs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parts ===&lt;br /&gt;
&lt;br /&gt;
The twitter API breaks down into three main areas&lt;br /&gt;
* the REST API (query→response based access)&lt;br /&gt;
* the Streaming API (drinking from the firehose)&lt;br /&gt;
* the Search API (just like it says on the tin)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
== Creating a new app ==&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/apps/new&lt;br /&gt;
* sign in with your twitter account&lt;br /&gt;
&lt;br /&gt;
* https://dev.twitter.com/terms/api-terms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
=== Repeated tweets ===&lt;br /&gt;
&lt;br /&gt;
=== General TOS ===&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12849</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12849"/>
				<updated>2012-05-23T17:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +presenter info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenter: [[User:Shadowspar|Rick Scott]] - [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
=== Repeated tweets ===&lt;br /&gt;
&lt;br /&gt;
=== General TOS ===&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12848</id>
		<title>C4LN 2012: Intro to the Twitter API</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=C4LN_2012:_Intro_to_the_Twitter_API&amp;diff=12848"/>
				<updated>2012-05-23T17:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: +outline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== API Overview ==&lt;br /&gt;
&lt;br /&gt;
== Find your library ==&lt;br /&gt;
&lt;br /&gt;
== Rate limits ==&lt;br /&gt;
&lt;br /&gt;
== Rules of Conduct ==&lt;br /&gt;
&lt;br /&gt;
=== Repeated tweets ===&lt;br /&gt;
&lt;br /&gt;
=== General TOS ===&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=North&amp;diff=12847</id>
		<title>North</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=North&amp;diff=12847"/>
				<updated>2012-05-23T17:47:34Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* 20 or 40 minute workshops: each one teach one */ linkify &amp;quot;Intro to Twitter API&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the home of the new Ontario/Canada chapter of [http://code4lib.org/ Code4Lib].  Our aim is to create more opportunities for Code4Lib folks in the Ontario/Quebec/Manitoba/Northeast USA area to meet up in person.&lt;br /&gt;
&lt;br /&gt;
==Mailing list==&lt;br /&gt;
&lt;br /&gt;
Want to participate in Code4Lib North meetups and receive &amp;quot;North&amp;quot;-oriented Code4Lib announcements?  Join the code4lib mailing list. (The code4lib-north mailing list was discontinued.)&lt;br /&gt;
&lt;br /&gt;
== Third Meeting: University of Windsor, May 24 and 25th, 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:code4libnorth.png|code4libnorth logo]] &lt;br /&gt;
&lt;br /&gt;
=== Sign Up ===&lt;br /&gt;
We can handle a maximum of 40 people and you can signup here: https://c4ln2012.eventbrite.com/&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
This unconference runs on love... and the kindness of the Leddy Library who will provide : coffee, lunch, and wireless and the space&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 24 and 25th, 2012 (it's on!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Times: 9 am start time. 4 pm end time&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: 4th Floor, Leddy Library, University of Windsor: http://www.uwindsor.ca/&lt;br /&gt;
Google Map: http://tinyurl.com/7a79qvw&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Contact: mita@uwindsor.ca&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accommodation ===&lt;br /&gt;
The University offers rooms and suites for travellers, youth, and families seeking overnight, short or extended accommodations through its [http://www.conferences.uwindsor.ca/accommodations-for-individuals-and-families Conference Services: description of services provided]. Use this [https://web4.uwindsor.ca/units/AEC/Hospitality/conferenceServices/Registrations.nsf/CODE4LIBNorth?OpenForm Registration Form] to book a room with Conference Services.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
In addition, University of Windsor special visit rates may be available by calling the local number and asking for the University of Windsor rate at certain hotels (which shouldn't dissuade you from staying wherever you prefer):&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://his-windsor.com/ Holiday Inn Select]&lt;br /&gt;
1855 Huron Church Road, Windsor&lt;br /&gt;
Tel: 1-800-465-4329 or 519-966-1200 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://hamptoninn.hilton.com/en/hp/hotels/index.jhtml?ctyhocn=YQGCNHX Hampton Inn &amp;amp; Suites]&lt;br /&gt;
1840 Huron Church Road, Windsor&lt;br /&gt;
Tel: 800-Hampton or 519-972-0770 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.qualityinn.com/hotel-windsor-canada-CN317 Quality Suites Downtown]&lt;br /&gt;
250 Dougall Ave., Windsor&lt;br /&gt;
Tel: 519-977-9707 (3 km from campus)&lt;br /&gt;
(frequently used hotel for participants in [http://projectconifer.ca Conifer] hackfests)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ceasarswindsor.com/ Caesars Windsor]&lt;br /&gt;
377 Riverside Dr. East, Windsor&lt;br /&gt;
Tel: 800-991-8888 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.windsorriversideinn.com/ The Windsor Riverside Inn]&lt;br /&gt;
333 Riverside Dr. West&lt;br /&gt;
Tel: 519-977-9777 (2 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.travelodge.ca/hotel-search/list/windsor/all/ Travelodge Hotel Windsor Downtown Windsor]&lt;br /&gt;
33 Riverside Dr. East&lt;br /&gt;
Tel: 519-258-7774 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are no bed and breakfasts in the immediate area but the [http://www.bbcanada.com/ontario/southwestern_ontario/windsor Argyle and Olde Walkerville Bed and Breakfasts] are a bus ride away.&lt;br /&gt;
&lt;br /&gt;
=== Social Events ===&lt;br /&gt;
&lt;br /&gt;
There's nothing formal planned but on Wednesday and Thursday nights, we'll try to informally coordinate places to have supper together.  &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I suggest that those around on Wednesday night meet up at the [http://www.rockbottom.ca/ Rock Bottom Grill] at 3236 Sandwich Street, Windsor. It will busy because it's &amp;quot;2 for 1 Wing Night&amp;quot; but it should be worth it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
For those who love experimental film, there is the [http://mediacityfilmfestival.com/films-and-schedule-2012/ Media City Film Festival] taking place in Windsor and Detroit. Jason Scott aka textfiles will be speaking at the  [http://www.aadl.org/events/list?id=14190 Ann Arbor Public Library] on Wednesday night&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Food ===&lt;br /&gt;
We will be providing lunch and snacks. (please email organizers if you have a dietary restriction - we will be ordering vegetarian options but we want to make sure we have enough!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Generally folks informally gather for supper. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Here are some of our nearby options:&lt;br /&gt;
[http://www.windsoreats.com/rest_search.php?rest_location=Windsor%20-%20West%20Windsor WindsorEats: Windsor West]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
But there is much more if we wander farther afield: [http://www.windsoreats.com/ WindsorEats]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Near the university on Wyndotte Street are various Asian dining options including:&lt;br /&gt;
* [http://www.restaurantica.com/on/windsor/eros-restaurant/23004000/ Eros Restaurant]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1482082/restaurant/Detroit/Windsor-Seoul-Windsor Windsor Seoul]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1648665/restaurant/Detroit/Bibim-To-Go-Windsor Bibim-To-Go]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
And here's a list of places that could probably fit 40 people:&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1426344/restaurant/Detroit/Bubis-Awsome-Eats-Windsor Bubis Awesome Eats]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1435280/restaurant/Detroit/Hurricanes-Windsor Hurricane's]&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
A combination of 20 talks, 5 minute lightning talks, an Ask Anything session, workshops / hackfest time. We will try to find time for everyone who wants to present!&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
We have talks in the morning and hackfests in the afternoon. We will finalize the speaking schedule Thursday morning but we will try to split the talks between the two days equally.&lt;br /&gt;
&lt;br /&gt;
=== 20 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Ted Lawless || easyArticle - steamlining access to library materials with OpenURL, automated interlibrary loan submission, vendor APIs, Django/Python.&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || my sekret art project &lt;br /&gt;
|-&lt;br /&gt;
| John Fink and Warren Layton|| Embedded Hardware Hijinx&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || RDA for coders/systems folk&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum ||  Our favorite jQuery modules for Drupal 7&lt;br /&gt;
|-&lt;br /&gt;
| David Fiander || The state of the ebook marketplace&lt;br /&gt;
|- &lt;br /&gt;
| Dan Chudnov || backplane&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || Having provocative fun with reference desk statistics in R&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Nick Ruest || Other Redmine uses&lt;br /&gt;
|-&lt;br /&gt;
| Tim Ribaric || Circumvention using the Cloud?&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || #catcode: Cataloguers embrace Code Year&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || &amp;quot;My god, it's full of &amp;lt;span style=&amp;quot;text-decoration:line-through;&amp;quot;&amp;gt;stars!&amp;lt;/span&amp;gt; lists&amp;quot;: building the library website that will incorporate [http://librarian.newjackalmanac.ca/2011/05/code4lib-north-presentation-were-jamun.html Jamun.]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || occupy 1923&lt;br /&gt;
|-&lt;br /&gt;
| Graham Fawcett || A Web-based video annotation tool (for peer review, possibly captioning, maybe for some nefarious library uses we haven't imagined)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 20 or 40 minute workshops: each one teach one ===&lt;br /&gt;
&lt;br /&gt;
:: a workshop you are willing to lead&lt;br /&gt;
::* Intro to Git, if demand warrants -- if not, no big deal (John Fink)&lt;br /&gt;
::* Environmental monitoring on the cheap (Doug Sartori)&lt;br /&gt;
::* (I program in a few languages, and could do a teaser-session on one of them if there's interest. Maybe [http://www.python.org Python], [http://www.haskell.org/ Haskell], [http://clojure.org/  Clojure] or [http://dlang.org D]?) (Graham Fawcett)&lt;br /&gt;
::* [[C4LN 2012: Intro to the Twitter API|Intro to the Twitter API]], including how one might use it to make a Twitter bot ([[User:shadowspar|Rick Scott]])&lt;br /&gt;
&lt;br /&gt;
:: a workshop of what you would love to attend&lt;br /&gt;
::* intro to IRC, meet zoia (Mita, Warren, Sarah, John F)&lt;br /&gt;
::* how to create a twitter bot (Mita, John F, David F)&lt;br /&gt;
::* intro to Git (Warren, Sarah, David F)&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: scheme schemas  ===&lt;br /&gt;
- build your own twitter bot; bot battles&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: feel free to add to the list ===&lt;br /&gt;
*twitter bot war with code4lib The Great Eastern? http://wiki.code4lib.org/index.php/GreatEastern&lt;br /&gt;
*changing Odessi XML records to MARC XML so OCUL libraries can load MARC for Odessi, esp. Stats Can stuff. We started this project at TUG, so need someone to help me get further or finish! New note: Chris put what he did so far on [https://github.com/lib-uoguelph-ca/ddi2marc-xml github](Alison)&lt;br /&gt;
*CanPoetry Sprint: [http://library.utoronto.ca/canpoetry Canadian Poetry Online] needs an overhaul! CanPoetry is a web anthology of contemporary Canadian poetry, providing biographies and full-text poems from Canada's leading poets. Currently, it is being migrated to Drupal from the static HTML. Join in this [http://drupal.org/node/247982 code sprint] to help with site building, development, and theming of the new version. More details to follow. (Andrew McAlorum)&lt;br /&gt;
*[http://www.jasongriffey.net/librarybox/ LibraryBox] is a customized version of PirateBox that can run be run on the inexpensive TP-Link MR 3020. Currently, it acts as a simple file server but it could potentially offer a more library-focused service, such as [https://twitter.com/#!/djfiander/status/184315493157576704 an eBook server for nearby devices using OPDS]. (Warren)&lt;br /&gt;
* [http://evergreen-ils.org/ Evergreen]: The Evergreen project is currently recruiting volunteers for the Google Summer of Code effort and has [http://evergreen-ils.org/dokuwiki/doku.php?id=dev:summer_of_coding_ideas#project_ideas a list of project ideas]. Some of these ideas, if not already claimed by a student GSoC participant, might make for interesting hackfest projects. Or we could rewrite the MARC editor in Dojo.&lt;br /&gt;
* [https://github.com/wdenton/splurge/ SPLURGE]: The Scholars Portal Library Usage-Based Recommendation Engine began at a hackfest in February and has been worked on since then, but it needs one last push to get all of the pieces joined together so that an easy-to-use &amp;quot;people who borrowed this also borrowed that&amp;quot; service built on shared circ data can be tested. There are four parts to SPLURGE: data cleanup, getting it into a properly configured database, a web service that talks to the database, some Javascript that can dropped into a catalogue to talk to the web service. They all exist, but not all of them are quite done and they don't all talk to each other. The purpose of this hackfest project would be for people to familiarize themselves with the work that's been done, and then try to finish it up.&lt;br /&gt;
&lt;br /&gt;
=== code4lib north organizational team ===&lt;br /&gt;
*Mita Williams &lt;br /&gt;
*Karen Pillon&lt;br /&gt;
*Peter Zimmerman&lt;br /&gt;
*Jennifer Soutter&lt;br /&gt;
*Cathy Maskell&lt;br /&gt;
*Ranti Junus (Michigan State)&lt;br /&gt;
&lt;br /&gt;
=== hashtag and twitter list ===&lt;br /&gt;
*c4ln2012&lt;br /&gt;
*https://twitter.com/copystar/c4ln2012&lt;br /&gt;
&lt;br /&gt;
== Code4lib North Meetups in Ottawa ==&lt;br /&gt;
&lt;br /&gt;
'''Purpose:''' To connect with other code4libbers in the area and start building a code4lib community in Ottawa, Ontario&lt;br /&gt;
&lt;br /&gt;
===Next Meetup===&lt;br /&gt;
&lt;br /&gt;
The next meetup is scheduled for Wednesday June 13th 2012 at 5pm (we'll take May off for code4lib North in Windsor). Once again, we'll be in the private room downstairs in The Exchange Pub.&lt;br /&gt;
&lt;br /&gt;
As usual, please bring your laptops, tablets, demos, problems, and topics of discussion. Beginners are always welcome!&lt;br /&gt;
&lt;br /&gt;
Those interested in attending or speaking can e-mail warren.layton@gmail.com for more information and (if not on the code4lib mailing list) to be kept informed of future events.&lt;br /&gt;
&lt;br /&gt;
===Past Meetups===&lt;br /&gt;
&lt;br /&gt;
The inaugural code4lib Ottawa meetup occurred on March 28, 2012 and was a simple meet-and-greet at a local pub. Since then, we try to combine this social event with some short interesting talks. Here is what we have learned about in recent meetups:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''April 24, 2012 - Show and Tell Session'''&lt;br /&gt;
{| border=1&lt;br /&gt;
! Presenter&lt;br /&gt;
! Description of Talk&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/maxneuvians Max Neuvians] || [http://social-biblio.ca/ Social-biblio.ca] : An approach to Twitter data visualization, archiving, and the larger narrative.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/scilib Richard Akerman] || [http://twitter.com/scilib Richard Akerman] and [http://twitter.com/bethmaru Mary Beth Baker] are organizing a Reading Garden at the upcoming Canadian Library Association conference. They are seeking advice on how to provide wireless access. Anyone with ideas is encouraged to get in touch with them.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/warlayton Warren Layton] || A quick demo of [http://www.jasongriffey.net/librarybox/ LibraryBox], a wireless filesharing device, which may have interesting applications in government and other libraries where IT restrictions can limit network use.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Second Meeting: McMaster University, May 5-6, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign Up ===&lt;br /&gt;
We can handle a maximum of 50 people and you can signup here: http://c4ln2011.eventbrite.com/.&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 5-6, 2011&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: &lt;br /&gt;
* 1280 Main St. West, [http://www.google.com/maps/place?cid=4151756913136304412&amp;amp;q=mcmaster+university+mills+memorial+library&amp;amp;hl=en&amp;amp;dtab=0&amp;amp;sll=43.260928,-79.91933&amp;amp;sspn=0.773056,1.227722&amp;amp;ie=UTF8&amp;amp;ll=43.647007,-80.532532&amp;amp;spn=0,0&amp;amp;z=10 McMaster University, Hamilton, Ontario - ]  (map)&lt;br /&gt;
* Mills Memorial Library, [http://library.mcmaster.ca/lyons Lyons New Media Centre] (4th floor)&lt;br /&gt;
&lt;br /&gt;
=== Accommodation === &lt;br /&gt;
Our helpful folks in Research Collections put this [http://library.mcmaster.ca/archives/visiting guide] together a while back.&lt;br /&gt;
&lt;br /&gt;
=== Parking, Campus Map, Public Transit ===&lt;br /&gt;
* [http://parking.mcmaster.ca/ Parking] - I understand we have the most expensive parking in OCUL. I'm sorry :( - There is one bit of good news: if you park in the M lot, the day rate drops from $20 to $5. The M lot is about a 10-12 minute walk from the library, and there is a shuttle that will take you part of the way.&lt;br /&gt;
* [http://parking.mcmaster.ca/June25UpdatedMapWithAutomation.PDF Campus map] - we are building #10 - Mills Memorial Library&lt;br /&gt;
* [http://www.hamilton.ca/CityServices/transit?WT.mc_id=hsr&amp;amp;WT.hamilton_redirect_friendly=1/ Public Transit] &lt;br /&gt;
* HSR buses that come to campus are: [http://www.hamilton.ca/NR/rdonlyres/F831E17F-2373-48C8-A808-F7DB7873400E/0/JA11Route1.pdf 1], [http://www.hamilton.ca/NR/rdonlyres/FB34FB4E-EF3A-4154-AF2D-46C06F05F06F/0/JA11Route51.pdf 51], [http://www.hamilton.ca/NR/rdonlyres/53F0A87E-6DA9-4E04-A6A6-6BF5E7482806/0/JA11Route5.pdf 5c], [http://www.hamilton.ca/NR/rdonlyres/B25032CD-ABC4-40D3-8509-FA6CCB7DB4CA/0/JA11Route52A.pdf 52], and [http://www.hamilton.ca/NR/rdonlyres/650AA6C2-DD5F-422F-86A6-E0D6EA688CEE/0/JA11Route10.pdf 10] - The 10 and 52 drop off by the hospital, the others drop off right outside Mills.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
Keep with tradition set last year - No cost and McMaster University has tentatively agreed to provided coffee, lunch, space, and wireless.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
Day 1:&lt;br /&gt;
* Hackfest (send problems/proposals to John Fink and Nick Ruest)&lt;br /&gt;
Day 2&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF/breakouts&lt;br /&gt;
&lt;br /&gt;
=== 20-minute talks ===&lt;br /&gt;
I'd like to start a new tradition with Code4Lib North and deposit the slides and *maybe* recordings of the presentations in our IR. If people are cool with this, I can get it all setup prior to the event.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| William J Turkel || [http://digitalcommons.mcmaster.ca/c4ln/9/ Functional Programming Workout]&lt;br /&gt;
|-&lt;br /&gt;
| Dileshni Jayasinghe &amp;amp; Majid Valipour || [http://digitalcommons.mcmaster.ca/c4ln/8/ Programming at Scholars Portal: apps and APIs]&lt;br /&gt;
|-&lt;br /&gt;
| William Wueppelmann || [http://digitalcommons.mcmaster.ca/c4ln/1/ The Canadiana Web API]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || [http://digitalcommons.mcmaster.ca/c4ln/7/ WWIC? Linked Library Data as a Customer Service Medium]&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || [http://digitalcommons.mcmaster.ca/c4ln/3/ We're jamun (and we hope you like jamun too)]&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || [http://digitalcommons.mcmaster.ca/c4ln/10/ Getting started with R]&lt;br /&gt;
|-&lt;br /&gt;
| Alan Harnum || [http://digitalcommons.mcmaster.ca/c4ln/5/ When All You Have Is XSLT, Everything Looks Like XML: Heterogeneous Cloud-Based Content Management Using Google Docs and Other Services]&lt;br /&gt;
|-&lt;br /&gt;
| Wendy Huot || [http://digitalcommons.mcmaster.ca/c4ln/12/ Why can't a web page be more like a book? Using LaTeX with Readability to generate better 'print friendly' versions of web pages]&lt;br /&gt;
|-&lt;br /&gt;
| Chris Charles || [http://digitalcommons.mcmaster.ca/c4ln/11/ Introduction to Google Refine]&lt;br /&gt;
|-&lt;br /&gt;
| Karen A. Coombs || [http://digitalcommons.mcmaster.ca/c4ln/2/ Zend Framework: making using web services easier]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5-minute lighting talks ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum || [http://digitalcommons.mcmaster.ca/c4ln/4/ Transition to Unity]&lt;br /&gt;
|-&lt;br /&gt;
| Dale Askey || [http://digitalcommons.mcmaster.ca/c4ln/6/ Fun with Failure, or, Learning to Stick a Fork in Things]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Getting testers to test what you need to have tested!]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Using RT Tracker for user feedback]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== First Meeting: Kingston ON, May 6-7, 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign up ===&lt;br /&gt;
&lt;br /&gt;
Free registration -- but registration is now closed (we have 40+ signed up).&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
&lt;br /&gt;
'''May 6-7, 2010''' &lt;br /&gt;
* Thursday: 2pm-5:30pm, followed by dinner and drinks&lt;br /&gt;
* Friday: 9am-4:30pm&lt;br /&gt;
&lt;br /&gt;
Meeting location:&lt;br /&gt;
* [http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;source=embed&amp;amp;msa=0&amp;amp;msid=103786326471006763157.0004700577498a9166e33&amp;amp;ll=44.227888,-76.494584&amp;amp;spn=0.009226,0.012875&amp;amp;z=15| 93 University Ave, Queen's University, Kingston Ontario] (map) &lt;br /&gt;
* Meeting room: [http://library.queensu.ca/library/floorplans/index.php?library=Douglas&amp;amp;floorpos=4F&amp;amp;section=North_Reading_Room#map| 1966 North Reading Room, Level 7, Douglas Library Building] (floorplan) - located on the top floor, just follow the signs to find the room.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
&lt;br /&gt;
There was no charge. Queen's University very generously supplied the space, the Internet connection, and free lunch on Friday!&lt;br /&gt;
&lt;br /&gt;
=== How to get involved ===&lt;br /&gt;
&lt;br /&gt;
Join the mailing list.  That is where the planning will happen.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF sessions&lt;br /&gt;
* Maybe a hackfest.&lt;br /&gt;
&lt;br /&gt;
=== How many are attending? ===&lt;br /&gt;
&lt;br /&gt;
45 people have registered. Most will be attending.&lt;br /&gt;
&lt;br /&gt;
=== Program ===&lt;br /&gt;
&lt;br /&gt;
'''Thursday May 6:'''&lt;br /&gt;
&lt;br /&gt;
* 2pm-5pm: Open format (hang out and hack)&lt;br /&gt;
* Evening: Go out for dinner and drinks &lt;br /&gt;
&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
&lt;br /&gt;
* 9am-4:30pm: Schedule currently &amp;quot;under construction&amp;quot; -- see table below.&lt;br /&gt;
&lt;br /&gt;
Morning Break: 10:30-10:45 .... Lunch: 12-1 .... &lt;br /&gt;
&lt;br /&gt;
Afternoon: 5 minute lightning talks .... &amp;quot;Birds of a feather&amp;quot; breakout sessions (sign up sheets on front table)&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || OpenFRBR &lt;br /&gt;
|-&lt;br /&gt;
| Walter Lewis || Exposing Linked Data &lt;br /&gt;
|-&lt;br /&gt;
| Art Rhyno || Open Layers and Newspapers (Walter Lewis)&lt;br /&gt;
|-&lt;br /&gt;
| MJ Suhonos || [http://mytpl.ca Location-aware Mobile Search]&lt;br /&gt;
|-&lt;br /&gt;
|Alan Harnum || Building A [http://beta.torontopubliclibrary.ca/ Library Website] with [http://www.endeca.com/ Endeca] technology&lt;br /&gt;
|-&lt;br /&gt;
|Wendy Huot || &amp;quot;Your feedback, please&amp;quot;: library web design critique&lt;br /&gt;
|-&lt;br /&gt;
|Glen Newton || [http://zzzoot.blogspot.com/2009/07/project-torngat-building-large-scale.html Using Open Source Tools for Visualization and Semantic Mapping in a Large Scale Article Digital Library]&lt;br /&gt;
|-&lt;br /&gt;
| Eric Palmitesta || XQuery &lt;br /&gt;
|-&lt;br /&gt;
| John Miedema || [http://code.google.com/p/openbook4wordpress/wiki/index OpenBook WordPress Plugin Update - Why It's Cool to Love OpenURL +++]&lt;br /&gt;
|-&lt;br /&gt;
|Nasser Saleh || Coagmento!: a potential collaborative search tool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Who's interested in Code4Lib North? ==&lt;br /&gt;
&lt;br /&gt;
Declare your interest in a Code4lib North chapter:&lt;br /&gt;
&lt;br /&gt;
* Wendy Huot, Queen's University&lt;br /&gt;
* Michael Vandenburg, Queen's University&lt;br /&gt;
* [http://www.miskatonic.org/ William Denton], York University&lt;br /&gt;
* John Fink, McMaster University&lt;br /&gt;
* [http://ruebot.net/ Nick Ruest], [http://digitalcollections.mcmaster.ca/ McMaster University]&lt;br /&gt;
* Walter Lewis, Halton Hills/OurOntario&lt;br /&gt;
* Edward Corrado, Binghamton University (NY, USA)&lt;br /&gt;
* [http://thebookpile.wordpress.com Warren Layton], Library of Parliament (Ottawa)&lt;br /&gt;
* Pascal Calarco, University of Notre Dame (IN, USA)&lt;br /&gt;
* Rob Fox, University of Notre Dame (IN, USA)&lt;br /&gt;
* Mita Williams, University of Windsor&lt;br /&gt;
* John Fereira, Cornell University&lt;br /&gt;
* MJ Suhonos, Toronto Public Library&lt;br /&gt;
* Dianne Dietrich, Cornell University&lt;br /&gt;
* David Fiander, University of Western Ontario&lt;br /&gt;
* Peter Schlumpf, [http://www.avantilibrarysystems.com/ Avanti Library Systems]&lt;br /&gt;
* Roy Zimmer, Western Michigan University&lt;br /&gt;
* Kimberly Silk, Martin Prosperity Institute, University of Toronto&lt;br /&gt;
* Andrew Darby, Ithaca College (Ithaca, NY)&lt;br /&gt;
* Laura Harris, Grand Valley State University (western Michigan)&lt;br /&gt;
* Tim Ribaric, Brock University&lt;br /&gt;
* Sibyl Schaefer, University of Vermont&lt;br /&gt;
* Peter Ellinger, Ontario Legislative Library, Toronto&lt;br /&gt;
* Keith Jenkins, Cornell University&lt;br /&gt;
* [http://pmlozeau.ca/ Patrick M. Lozeau]&lt;br /&gt;
* Mike Kreyche, Kent State University&lt;br /&gt;
* Graham McCarthy, [http://www.ryerson.ca/library/ Ryerson University]&lt;br /&gt;
* [http://johnmiedema.ca John Miedema]&lt;br /&gt;
* Janey Chen, Ontario Legislative Library, Toronto&lt;br /&gt;
* Rob McDonald, Carleton University&lt;br /&gt;
* Amy Buckland, McGill University&lt;br /&gt;
* Tricia Williams (pgwillia), Consultant/[http://search.ourontario.ca OurOntario]&lt;br /&gt;
* Mike Beccaria, Paul Smith's College (Paul Smiths, NY)&lt;br /&gt;
* Amanda Etches-Johnson, McMaster University&lt;br /&gt;
* Art Rhyno, University of Windsor&lt;br /&gt;
* [http://bethmaru.com Mary Beth Baker], CIC (Ottawa)&lt;br /&gt;
* Wayne Schneider, Hennepin County Library&lt;br /&gt;
* Carol Serroul, CISTI&lt;br /&gt;
* Graham Stewart, University of Toronto Libraries&lt;br /&gt;
* Peter Zimmerman, University of Windsor&lt;br /&gt;
* Margaret Kipp, University of Wisconsin Milwaukee&lt;br /&gt;
* [http://coffeecode.net Dan Scott], Laurentian University&lt;br /&gt;
* Lawrence Wardroper (Courts Administration Services Library, Ottawa)&lt;br /&gt;
* Matt McCollow, McMaster University&lt;br /&gt;
* [http://www.parser.ca/z678/ George Duimovich], NRCan Library (Ottawa)&lt;br /&gt;
* [mailto:bobbi_fox@harvard.edu Bobbi Fox], Harvard University Library (Massachusetts)&lt;br /&gt;
* Dileshni Jayasinghe, OCUL, University of Toronto&lt;br /&gt;
* Eric Palmitesta, OCUL, University of Toronto&lt;br /&gt;
* [http://twitter.com/alxp Alexander O'Neill], Robertson Library, University of Prince Edward Island&lt;br /&gt;
* Chris Beer, WGBH (Massachusetts)&lt;br /&gt;
* Robin Isard, Algoma University (Sault Ste Marie ON)&lt;br /&gt;
* Pat Moore, Carleton University (Ottawa ON)&lt;br /&gt;
* [http://wagathon.tumblr.com/ Alan Harnum], Toronto Public LIbrary (Toronto ON)&lt;br /&gt;
* Colin Prince, University of Toronto Libraries&lt;br /&gt;
* Tom Keays, Syracuse University LIbrary (Syracuse, NY)&lt;br /&gt;
* Chris Charles, University of Guelph (Guelph, ON)&lt;br /&gt;
* John MacGillivray, Carleton University (Ottawa ON)&lt;br /&gt;
* Lester Webb, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Elizabeth Goldman, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Jennifer O'Donnell, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* David Smith, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Loren Fantin, Our Ontario,Knowledge Ontario&lt;br /&gt;
* Daulton Theodore, Carleton University (Ottawa, ON)&lt;br /&gt;
* Peter MacDonald, Hamilton College (Clinton, NY)&lt;br /&gt;
* Rebecca Larocque, North Bay Public Library (North Bay, ON)&lt;br /&gt;
* Doris Rankin, Library and Information Management Consultant, Ottawa, ON&lt;br /&gt;
* Diane Bédard, Learn Ontario &amp;amp; Our Ontario; Knowledge Ontario&lt;br /&gt;
* [http://www.arts.uottawa.ca/eng/avellino.html Andre Vellino], CISTI / University of Ottawa&lt;br /&gt;
* [http://twitter.com/markswartz Mark Swartz], Queen's University&lt;br /&gt;
* Adam Wead, Rock and Roll Hall of Fame Library and Archives (Cleveland, OH)&lt;br /&gt;
* Pramila Thakur, Ontario Legislative Library, Toronto&lt;br /&gt;
* Anthony Petryk, University of Ottawa&lt;br /&gt;
* Jan Dawson, Ask Ontario, Knowledge Ontario&lt;br /&gt;
* [http://lab.cisti-icist.nrc-cnrc.gc.ca/cistilabswiki/index.php/Glen_Newton Glen Newton], Carleton University&lt;br /&gt;
* Patrick McMaster, Leeds &amp;amp; the 1000 Islands, Rideau Lakes, and North Grenville Public Libraries&lt;br /&gt;
* Nasser Saleh, Queen's University (Kingston ON)&lt;br /&gt;
* [http://stefansinclair.name/ Stéfan Sinclair], McMaster University&lt;br /&gt;
* [http://williamjturkel.net/ William J Turkel], University of Western Ontario&lt;br /&gt;
* Shirley Lew, [http://library.vcc.ca/ Vancouver Community College], (Vancouver BC)&lt;br /&gt;
* [http://twitter.com/edbilodeau Edward Bilodeau], [http://www.mcgill.ca/library/ McGill University]&lt;br /&gt;
* Andrew McAlorum, University of Toronto Libraries&lt;br /&gt;
&lt;br /&gt;
== Meeting Location Suggestions for the Future ==&lt;br /&gt;
&lt;br /&gt;
* Toronto, Ontario&lt;br /&gt;
* Sudbury, Ontario&lt;br /&gt;
* Ottawa, Ontario&lt;br /&gt;
* Montreal, Quebec&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=North&amp;diff=12474</id>
		<title>North</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=North&amp;diff=12474"/>
				<updated>2012-05-16T16:39:13Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: /* 20 or 40 minute workshops: each one teach one */ +Twitter API session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the home of the new Ontario/Canada chapter of [http://code4lib.org/ Code4Lib].  Our aim is to create more opportunities for Code4Lib folks in the Ontario/Quebec/Manitoba/Northeast USA area to meet up in person.&lt;br /&gt;
&lt;br /&gt;
==Mailing list==&lt;br /&gt;
&lt;br /&gt;
Want to participate in Code4Lib North meetups and receive &amp;quot;North&amp;quot;-oriented Code4Lib announcements?  Join the code4lib mailing list. (The code4lib-north mailing list was discontinued.)&lt;br /&gt;
&lt;br /&gt;
== Third Meeting: University of Windsor, May 24 and 25th, 2012 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:code4libnorth.png|code4libnorth logo]] &lt;br /&gt;
&lt;br /&gt;
=== Sign Up ===&lt;br /&gt;
We can handle a maximum of 40 people and you can signup here: https://c4ln2012.eventbrite.com/&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
This unconference runs on love... and the kindness of the Leddy Library who will provide : coffee, lunch, and wireless and the space&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 24 and 25th, 2012 (it's on!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: 4th Floor, Leddy Library, University of Windsor: http://www.uwindsor.ca/&lt;br /&gt;
Google Map: http://tinyurl.com/7a79qvw&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Contact: mita@uwindsor.ca&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accommodation ===&lt;br /&gt;
The University offers rooms and suites for travellers, youth, and families seeking overnight, short or extended accommodations through its [http://www.conferences.uwindsor.ca/accommodations-for-individuals-and-families Conference Services: description of services provided]. Use this [https://web4.uwindsor.ca/units/AEC/Hospitality/conferenceServices/Registrations.nsf/CODE4LIBNorth?OpenForm Registration Form] to book a room with Conference Services.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
In addition, University of Windsor special visit rates may be available by calling the local number and asking for the University of Windsor rate at certain hotels (which shouldn't dissuade you from staying wherever you prefer):&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://his-windsor.com/ Holiday Inn Select]&lt;br /&gt;
1855 Huron Church Road, Windsor&lt;br /&gt;
Tel: 1-800-465-4329 or 519-966-1200 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://hamptoninn.hilton.com/en/hp/hotels/index.jhtml?ctyhocn=YQGCNHX Hampton Inn &amp;amp; Suites]&lt;br /&gt;
1840 Huron Church Road, Windsor&lt;br /&gt;
Tel: 800-Hampton or 519-972-0770 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.qualityinn.com/hotel-windsor-canada-CN317 Quality Suites Downtown]&lt;br /&gt;
250 Dougall Ave., Windsor&lt;br /&gt;
Tel: 519-977-9707 (3 km from campus)&lt;br /&gt;
(frequently used hotel for participants in [http://projectconifer.ca Conifer] hackfests)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ceasarswindsor.com/ Caesars Windsor]&lt;br /&gt;
377 Riverside Dr. East, Windsor&lt;br /&gt;
Tel: 800-991-8888 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.windsorriversideinn.com/ The Windsor Riverside Inn]&lt;br /&gt;
333 Riverside Dr. West&lt;br /&gt;
Tel: 519-977-9777 (2 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.travelodge.ca/hotel-search/list/windsor/all/ Travelodge Hotel Windsor Downtown Windsor]&lt;br /&gt;
33 Riverside Dr. East&lt;br /&gt;
Tel: 519-258-7774 (3 km from campus)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are no bed and breakfasts in the immediate area but the [http://www.bbcanada.com/ontario/southwestern_ontario/windsor Argyle and Olde Walkerville Bed and Breakfasts] are a bus ride away.&lt;br /&gt;
&lt;br /&gt;
=== Social Events ===&lt;br /&gt;
&lt;br /&gt;
There's nothing formal planned but on Wednesday and Thursday nights, we'll try to informally coordinate places to have supper together.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
For those who love experimental film, there is the [http://mediacityfilmfestival.com/films-and-schedule-2012/ Media City Film Festival] taking place in Windsor and Detroit.&lt;br /&gt;
&lt;br /&gt;
=== Food ===&lt;br /&gt;
We will be providing lunch and snacks. (please email organizers if you have a dietary restriction - we will be ordering vegetarian options but we want to make sure we have enough!)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Generally folks informally gather for supper. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Here are some of our nearby options:&lt;br /&gt;
[http://www.windsoreats.com/rest_search.php?rest_location=Windsor%20-%20West%20Windsor WindsorEats: Windsor West]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
But there is much more if we wander farther afield: [http://www.windsoreats.com/ WindsorEats]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Near the university on Wyndotte Street are various Asian dining options including:&lt;br /&gt;
* [http://www.restaurantica.com/on/windsor/eros-restaurant/23004000/ Eros Restaurant]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1482082/restaurant/Detroit/Windsor-Seoul-Windsor Windsor Seoul]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1648665/restaurant/Detroit/Bibim-To-Go-Windsor Bibim-To-Go]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
And here's a list of places that could probably fit 40 people:&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1549919/restaurant/Detroit/Hoi-Sushi-Windsor Hoi Sushi]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1426344/restaurant/Detroit/Bubis-Awsome-Eats-Windsor Bubis Awesome Eats]&lt;br /&gt;
* [http://www.urbanspoon.com/r/19/1435280/restaurant/Detroit/Hurricanes-Windsor Hurricane's]&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
A combination of 20 talks, 5 minute lightning talks, an Ask Anything session, workshops / hackfest time. We will try to find time for everyone who wants to present!&lt;br /&gt;
&lt;br /&gt;
Previous code4lib north days have had the hacking and the speaking events on separate days. We're thinking about doing a little bit each day.  What do you think - we'd like your feedback : http://tinyurl.com/6obdnne&lt;br /&gt;
&lt;br /&gt;
=== 20 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Ted Lawless || easyArticle - steamlining access to library materials with OpenURL, automated interlibrary loan submission, vendor APIs, Django/Python.&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || my sekret art project &lt;br /&gt;
|-&lt;br /&gt;
| John Fink and Warren Layton|| Embedded Hardware Hijinx&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || RDA for coders/systems folk&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum ||  Our favorite jQuery modules for Drupal 7&lt;br /&gt;
|-&lt;br /&gt;
| David Fiander || The state of the ebook marketplace&lt;br /&gt;
|- &lt;br /&gt;
| Dan Chudnov || backplane&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || Having provocative fun with reference desk statistics in R&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5 minutes talks :: feel free to sign up ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Nick Ruest || Other Redmine uses&lt;br /&gt;
|-&lt;br /&gt;
| Tim Ribaric || Circumvention using the Cloud?&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || #catcode: Cataloguers embrace Code Year&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || &amp;quot;My god, it's full of &amp;lt;span style=&amp;quot;text-decoration:line-through;&amp;quot;&amp;gt;stars!&amp;lt;/span&amp;gt; lists&amp;quot;: building the library website that will incorporate [http://librarian.newjackalmanac.ca/2011/05/code4lib-north-presentation-were-jamun.html Jamun.]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || occupy 1923&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 20 or 40 minute workshops: each one teach one ===&lt;br /&gt;
&lt;br /&gt;
:: a workshop you are willing to lead&lt;br /&gt;
::* Intro to Git, if demand warrants -- if not, no big deal (John Fink)&lt;br /&gt;
::* Environmental monitoring on the cheap (Doug Sartori)&lt;br /&gt;
::* (I program in a few languages, and could do a teaser-session on one of them if there's interest. Maybe [http://www.python.org Python], [http://www.haskell.org/ Haskell], [http://clojure.org/  Clojure] or [http://dlang.org D]?) (Graham Fawcett)&lt;br /&gt;
::* Intro to the Twitter API; how one might use it to make a Twitter bot ([[User:shadowspar|Rick Scott]])&lt;br /&gt;
&lt;br /&gt;
:: a workshop of what you would love to attend&lt;br /&gt;
::* intro to IRC, meet zoia (Mita, Warren, Sarah, John F)&lt;br /&gt;
::* how to create a twitter bot (Mita, John F, David F)&lt;br /&gt;
::* intro to Git (Warren, Sarah, David F)&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: scheme schemas  ===&lt;br /&gt;
- build your own twitter bot; bot battles&lt;br /&gt;
&lt;br /&gt;
=== hackfest ideas :: feel free to add to the list ===&lt;br /&gt;
*twitter bot war with code4lib The Great Eastern? http://wiki.code4lib.org/index.php/GreatEastern&lt;br /&gt;
*changing Odessi XML records to MARC XML so OCUL libraries can load MARC for Odessi, esp. Stats Can stuff. We started this project at TUG, so need someone to help me get further or finish! (Alison)&lt;br /&gt;
*CanPoetry Sprint: [http://library.utoronto.ca/canpoetry Canadian Poetry Online] needs an overhaul! CanPoetry is a web anthology of contemporary Canadian poetry, providing biographies and full-text poems from Canada's leading poets. Currently, it is being migrated to Drupal from the static HTML. Join in this [http://drupal.org/node/247982 code sprint] to help with site building, development, and theming of the new version. More details to follow. (Andrew McAlorum)&lt;br /&gt;
*[http://www.jasongriffey.net/librarybox/ LibraryBox] is a customized version of PirateBox that can run be run on the inexpensive TP-Link MR 3020. Currently, it acts as a simple file server but it could potentially offer a more library-focused service, such as [https://twitter.com/#!/djfiander/status/184315493157576704 an eBook server for nearby devices using OPDS]. (Warren)&lt;br /&gt;
* [http://evergreen-ils.org/ Evergreen]: The Evergreen project is currently recruiting volunteers for the Google Summer of Code effort and has [http://evergreen-ils.org/dokuwiki/doku.php?id=dev:summer_of_coding_ideas#project_ideas a list of project ideas]. Some of these ideas, if not already claimed by a student GSoC participant, might make for interesting hackfest projects. Or we could rewrite the MARC editor in Dojo.&lt;br /&gt;
* [https://github.com/wdenton/splurge/ SPLURGE]: The Scholars Portal Library Usage-Based Recommendation Engine began at a hackfest in February and has been worked on since then, but it needs one last push to get all of the pieces joined together so that an easy-to-use &amp;quot;people who borrowed this also borrowed that&amp;quot; service built on shared circ data can be tested. There are four parts to SPLURGE: data cleanup, getting it into a properly configured database, a web service that talks to the database, some Javascript that can dropped into a catalogue to talk to the web service. They all exist, but not all of them are quite done and they don't all talk to each other. The purpose of this hackfest project would be for people to familiarize themselves with the work that's been done, and then try to finish it up.&lt;br /&gt;
&lt;br /&gt;
=== code4lib north organizational team ===&lt;br /&gt;
*Mita Williams &lt;br /&gt;
*Karen Pillon&lt;br /&gt;
*Peter Zimmerman&lt;br /&gt;
*Jennifer Soutter&lt;br /&gt;
*Cathy Maskell&lt;br /&gt;
*Ranti Junus (Michigan State)&lt;br /&gt;
&lt;br /&gt;
=== hashtag and twitter list ===&lt;br /&gt;
*c4ln2012&lt;br /&gt;
*https://twitter.com/copystar/c4ln2012&lt;br /&gt;
&lt;br /&gt;
== Code4lib North Meetups in Ottawa ==&lt;br /&gt;
&lt;br /&gt;
'''Purpose:''' To connect with other code4libbers in the area and start building a code4lib community in Ottawa, Ontario&lt;br /&gt;
&lt;br /&gt;
===Next Meetup===&lt;br /&gt;
&lt;br /&gt;
The next meetup is scheduled for Wednesday June 13th 2012 at 5pm (we'll take May off for code4lib North in Windsor). Once again, we'll be in the private room downstairs in The Exchange Pub.&lt;br /&gt;
&lt;br /&gt;
As usual, please bring your laptops, tablets, demos, problems, and topics of discussion. Beginners are always welcome!&lt;br /&gt;
&lt;br /&gt;
Those interested in attending or speaking can e-mail warren.layton@gmail.com for more information and (if not on the code4lib mailing list) to be kept informed of future events.&lt;br /&gt;
&lt;br /&gt;
===Past Meetups===&lt;br /&gt;
&lt;br /&gt;
The inaugural code4lib Ottawa meetup occurred on March 28, 2012 and was a simple meet-and-greet at a local pub. Since then, we try to combine this social event with some short interesting talks. Here is what we have learned about in recent meetups:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''April 24, 2012 - Show and Tell Session'''&lt;br /&gt;
{| border=1&lt;br /&gt;
! Presenter&lt;br /&gt;
! Description of Talk&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/maxneuvians Max Neuvians] || [http://social-biblio.ca/ Social-biblio.ca] : An approach to Twitter data visualization, archiving, and the larger narrative.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/scilib Richard Akerman] || [http://twitter.com/scilib Richard Akerman] and [http://twitter.com/bethmaru Mary Beth Baker] are organizing a Reading Garden at the upcoming Canadian Library Association conference. They are seeking advice on how to provide wireless access. Anyone with ideas is encouraged to get in touch with them.&lt;br /&gt;
|-&lt;br /&gt;
| [http://twitter.com/warlayton Warren Layton] || A quick demo of [http://www.jasongriffey.net/librarybox/ LibraryBox], a wireless filesharing device, which may have interesting applications in government and other libraries where IT restrictions can limit network use.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Second Meeting: McMaster University, May 5-6, 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign Up ===&lt;br /&gt;
We can handle a maximum of 50 people and you can signup here: http://c4ln2011.eventbrite.com/.&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
Dates: May 5-6, 2011&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Location: &lt;br /&gt;
* 1280 Main St. West, [http://www.google.com/maps/place?cid=4151756913136304412&amp;amp;q=mcmaster+university+mills+memorial+library&amp;amp;hl=en&amp;amp;dtab=0&amp;amp;sll=43.260928,-79.91933&amp;amp;sspn=0.773056,1.227722&amp;amp;ie=UTF8&amp;amp;ll=43.647007,-80.532532&amp;amp;spn=0,0&amp;amp;z=10 McMaster University, Hamilton, Ontario - ]  (map)&lt;br /&gt;
* Mills Memorial Library, [http://library.mcmaster.ca/lyons Lyons New Media Centre] (4th floor)&lt;br /&gt;
&lt;br /&gt;
=== Accommodation === &lt;br /&gt;
Our helpful folks in Research Collections put this [http://library.mcmaster.ca/archives/visiting guide] together a while back.&lt;br /&gt;
&lt;br /&gt;
=== Parking, Campus Map, Public Transit ===&lt;br /&gt;
* [http://parking.mcmaster.ca/ Parking] - I understand we have the most expensive parking in OCUL. I'm sorry :( - There is one bit of good news: if you park in the M lot, the day rate drops from $20 to $5. The M lot is about a 10-12 minute walk from the library, and there is a shuttle that will take you part of the way.&lt;br /&gt;
* [http://parking.mcmaster.ca/June25UpdatedMapWithAutomation.PDF Campus map] - we are building #10 - Mills Memorial Library&lt;br /&gt;
* [http://www.hamilton.ca/CityServices/transit?WT.mc_id=hsr&amp;amp;WT.hamilton_redirect_friendly=1/ Public Transit] &lt;br /&gt;
* HSR buses that come to campus are: [http://www.hamilton.ca/NR/rdonlyres/F831E17F-2373-48C8-A808-F7DB7873400E/0/JA11Route1.pdf 1], [http://www.hamilton.ca/NR/rdonlyres/FB34FB4E-EF3A-4154-AF2D-46C06F05F06F/0/JA11Route51.pdf 51], [http://www.hamilton.ca/NR/rdonlyres/53F0A87E-6DA9-4E04-A6A6-6BF5E7482806/0/JA11Route5.pdf 5c], [http://www.hamilton.ca/NR/rdonlyres/B25032CD-ABC4-40D3-8509-FA6CCB7DB4CA/0/JA11Route52A.pdf 52], and [http://www.hamilton.ca/NR/rdonlyres/650AA6C2-DD5F-422F-86A6-E0D6EA688CEE/0/JA11Route10.pdf 10] - The 10 and 52 drop off by the hospital, the others drop off right outside Mills.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
Keep with tradition set last year - No cost and McMaster University has tentatively agreed to provided coffee, lunch, space, and wireless.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
Day 1:&lt;br /&gt;
* Hackfest (send problems/proposals to John Fink and Nick Ruest)&lt;br /&gt;
Day 2&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF/breakouts&lt;br /&gt;
&lt;br /&gt;
=== 20-minute talks ===&lt;br /&gt;
I'd like to start a new tradition with Code4Lib North and deposit the slides and *maybe* recordings of the presentations in our IR. If people are cool with this, I can get it all setup prior to the event.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| William J Turkel || [http://digitalcommons.mcmaster.ca/c4ln/9/ Functional Programming Workout]&lt;br /&gt;
|-&lt;br /&gt;
| Dileshni Jayasinghe &amp;amp; Majid Valipour || [http://digitalcommons.mcmaster.ca/c4ln/8/ Programming at Scholars Portal: apps and APIs]&lt;br /&gt;
|-&lt;br /&gt;
| William Wueppelmann || [http://digitalcommons.mcmaster.ca/c4ln/1/ The Canadiana Web API]&lt;br /&gt;
|-&lt;br /&gt;
| Dan Chudnov || [http://digitalcommons.mcmaster.ca/c4ln/7/ WWIC? Linked Library Data as a Customer Service Medium]&lt;br /&gt;
|-&lt;br /&gt;
| Mita Williams || [http://digitalcommons.mcmaster.ca/c4ln/3/ We're jamun (and we hope you like jamun too)]&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || [http://digitalcommons.mcmaster.ca/c4ln/10/ Getting started with R]&lt;br /&gt;
|-&lt;br /&gt;
| Alan Harnum || [http://digitalcommons.mcmaster.ca/c4ln/5/ When All You Have Is XSLT, Everything Looks Like XML: Heterogeneous Cloud-Based Content Management Using Google Docs and Other Services]&lt;br /&gt;
|-&lt;br /&gt;
| Wendy Huot || [http://digitalcommons.mcmaster.ca/c4ln/12/ Why can't a web page be more like a book? Using LaTeX with Readability to generate better 'print friendly' versions of web pages]&lt;br /&gt;
|-&lt;br /&gt;
| Chris Charles || [http://digitalcommons.mcmaster.ca/c4ln/11/ Introduction to Google Refine]&lt;br /&gt;
|-&lt;br /&gt;
| Karen A. Coombs || [http://digitalcommons.mcmaster.ca/c4ln/2/ Zend Framework: making using web services easier]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5-minute lighting talks ===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Title&lt;br /&gt;
|-&lt;br /&gt;
| Andrew McAlorum || [http://digitalcommons.mcmaster.ca/c4ln/4/ Transition to Unity]&lt;br /&gt;
|-&lt;br /&gt;
| Dale Askey || [http://digitalcommons.mcmaster.ca/c4ln/6/ Fun with Failure, or, Learning to Stick a Fork in Things]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Getting testers to test what you need to have tested!]&lt;br /&gt;
|-&lt;br /&gt;
| Alison Hitchens || [http://digitalcommons.mcmaster.ca/c4ln/13/ Using RT Tracker for user feedback]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== First Meeting: Kingston ON, May 6-7, 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Sign up ===&lt;br /&gt;
&lt;br /&gt;
Free registration -- but registration is now closed (we have 40+ signed up).&lt;br /&gt;
&lt;br /&gt;
=== When and Where ===&lt;br /&gt;
&lt;br /&gt;
'''May 6-7, 2010''' &lt;br /&gt;
* Thursday: 2pm-5:30pm, followed by dinner and drinks&lt;br /&gt;
* Friday: 9am-4:30pm&lt;br /&gt;
&lt;br /&gt;
Meeting location:&lt;br /&gt;
* [http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;source=embed&amp;amp;msa=0&amp;amp;msid=103786326471006763157.0004700577498a9166e33&amp;amp;ll=44.227888,-76.494584&amp;amp;spn=0.009226,0.012875&amp;amp;z=15| 93 University Ave, Queen's University, Kingston Ontario] (map) &lt;br /&gt;
* Meeting room: [http://library.queensu.ca/library/floorplans/index.php?library=Douglas&amp;amp;floorpos=4F&amp;amp;section=North_Reading_Room#map| 1966 North Reading Room, Level 7, Douglas Library Building] (floorplan) - located on the top floor, just follow the signs to find the room.&lt;br /&gt;
&lt;br /&gt;
=== Cost ===&lt;br /&gt;
&lt;br /&gt;
There was no charge. Queen's University very generously supplied the space, the Internet connection, and free lunch on Friday!&lt;br /&gt;
&lt;br /&gt;
=== How to get involved ===&lt;br /&gt;
&lt;br /&gt;
Join the mailing list.  That is where the planning will happen.&lt;br /&gt;
&lt;br /&gt;
=== Format ===&lt;br /&gt;
&lt;br /&gt;
* 5-minute lighting talks&lt;br /&gt;
* 20-minute talks&lt;br /&gt;
* BOAF sessions&lt;br /&gt;
* Maybe a hackfest.&lt;br /&gt;
&lt;br /&gt;
=== How many are attending? ===&lt;br /&gt;
&lt;br /&gt;
45 people have registered. Most will be attending.&lt;br /&gt;
&lt;br /&gt;
=== Program ===&lt;br /&gt;
&lt;br /&gt;
'''Thursday May 6:'''&lt;br /&gt;
&lt;br /&gt;
* 2pm-5pm: Open format (hang out and hack)&lt;br /&gt;
* Evening: Go out for dinner and drinks &lt;br /&gt;
&lt;br /&gt;
'''Friday:'''&lt;br /&gt;
&lt;br /&gt;
* 9am-4:30pm: Schedule currently &amp;quot;under construction&amp;quot; -- see table below.&lt;br /&gt;
&lt;br /&gt;
Morning Break: 10:30-10:45 .... Lunch: 12-1 .... &lt;br /&gt;
&lt;br /&gt;
Afternoon: 5 minute lightning talks .... &amp;quot;Birds of a feather&amp;quot; breakout sessions (sign up sheets on front table)&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
! Name&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| William Denton || OpenFRBR &lt;br /&gt;
|-&lt;br /&gt;
| Walter Lewis || Exposing Linked Data &lt;br /&gt;
|-&lt;br /&gt;
| Art Rhyno || Open Layers and Newspapers (Walter Lewis)&lt;br /&gt;
|-&lt;br /&gt;
| MJ Suhonos || [http://mytpl.ca Location-aware Mobile Search]&lt;br /&gt;
|-&lt;br /&gt;
|Alan Harnum || Building A [http://beta.torontopubliclibrary.ca/ Library Website] with [http://www.endeca.com/ Endeca] technology&lt;br /&gt;
|-&lt;br /&gt;
|Wendy Huot || &amp;quot;Your feedback, please&amp;quot;: library web design critique&lt;br /&gt;
|-&lt;br /&gt;
|Glen Newton || [http://zzzoot.blogspot.com/2009/07/project-torngat-building-large-scale.html Using Open Source Tools for Visualization and Semantic Mapping in a Large Scale Article Digital Library]&lt;br /&gt;
|-&lt;br /&gt;
| Eric Palmitesta || XQuery &lt;br /&gt;
|-&lt;br /&gt;
| John Miedema || [http://code.google.com/p/openbook4wordpress/wiki/index OpenBook WordPress Plugin Update - Why It's Cool to Love OpenURL +++]&lt;br /&gt;
|-&lt;br /&gt;
|Nasser Saleh || Coagmento!: a potential collaborative search tool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Who's interested in Code4Lib North? ==&lt;br /&gt;
&lt;br /&gt;
Declare your interest in a Code4lib North chapter:&lt;br /&gt;
&lt;br /&gt;
* Wendy Huot, Queen's University&lt;br /&gt;
* Michael Vandenburg, Queen's University&lt;br /&gt;
* [http://www.miskatonic.org/ William Denton], York University&lt;br /&gt;
* John Fink, McMaster University&lt;br /&gt;
* [http://ruebot.net/ Nick Ruest], [http://digitalcollections.mcmaster.ca/ McMaster University]&lt;br /&gt;
* Walter Lewis, Halton Hills/OurOntario&lt;br /&gt;
* Edward Corrado, Binghamton University (NY, USA)&lt;br /&gt;
* [http://thebookpile.wordpress.com Warren Layton], Library of Parliament (Ottawa)&lt;br /&gt;
* Pascal Calarco, University of Notre Dame (IN, USA)&lt;br /&gt;
* Rob Fox, University of Notre Dame (IN, USA)&lt;br /&gt;
* Mita Williams, University of Windsor&lt;br /&gt;
* John Fereira, Cornell University&lt;br /&gt;
* MJ Suhonos, Toronto Public Library&lt;br /&gt;
* Dianne Dietrich, Cornell University&lt;br /&gt;
* David Fiander, University of Western Ontario&lt;br /&gt;
* Peter Schlumpf, [http://www.avantilibrarysystems.com/ Avanti Library Systems]&lt;br /&gt;
* Roy Zimmer, Western Michigan University&lt;br /&gt;
* Kimberly Silk, Martin Prosperity Institute, University of Toronto&lt;br /&gt;
* Andrew Darby, Ithaca College (Ithaca, NY)&lt;br /&gt;
* Laura Harris, Grand Valley State University (western Michigan)&lt;br /&gt;
* Tim Ribaric, Brock University&lt;br /&gt;
* Sibyl Schaefer, University of Vermont&lt;br /&gt;
* Peter Ellinger, Ontario Legislative Library, Toronto&lt;br /&gt;
* Keith Jenkins, Cornell University&lt;br /&gt;
* [http://pmlozeau.ca/ Patrick M. Lozeau]&lt;br /&gt;
* Mike Kreyche, Kent State University&lt;br /&gt;
* Graham McCarthy, [http://www.ryerson.ca/library/ Ryerson University]&lt;br /&gt;
* [http://johnmiedema.ca John Miedema]&lt;br /&gt;
* Janey Chen, Ontario Legislative Library, Toronto&lt;br /&gt;
* Rob McDonald, Carleton University&lt;br /&gt;
* Amy Buckland, McGill University&lt;br /&gt;
* Tricia Williams (pgwillia), Consultant/[http://search.ourontario.ca OurOntario]&lt;br /&gt;
* Mike Beccaria, Paul Smith's College (Paul Smiths, NY)&lt;br /&gt;
* Amanda Etches-Johnson, McMaster University&lt;br /&gt;
* Art Rhyno, University of Windsor&lt;br /&gt;
* [http://bethmaru.com Mary Beth Baker], CIC (Ottawa)&lt;br /&gt;
* Wayne Schneider, Hennepin County Library&lt;br /&gt;
* Carol Serroul, CISTI&lt;br /&gt;
* Graham Stewart, University of Toronto Libraries&lt;br /&gt;
* Peter Zimmerman, University of Windsor&lt;br /&gt;
* Margaret Kipp, University of Wisconsin Milwaukee&lt;br /&gt;
* [http://coffeecode.net Dan Scott], Laurentian University&lt;br /&gt;
* Lawrence Wardroper (Courts Administration Services Library, Ottawa)&lt;br /&gt;
* Matt McCollow, McMaster University&lt;br /&gt;
* [http://www.parser.ca/z678/ George Duimovich], NRCan Library (Ottawa)&lt;br /&gt;
* [mailto:bobbi_fox@harvard.edu Bobbi Fox], Harvard University Library (Massachusetts)&lt;br /&gt;
* Dileshni Jayasinghe, OCUL, University of Toronto&lt;br /&gt;
* Eric Palmitesta, OCUL, University of Toronto&lt;br /&gt;
* [http://twitter.com/alxp Alexander O'Neill], Robertson Library, University of Prince Edward Island&lt;br /&gt;
* Chris Beer, WGBH (Massachusetts)&lt;br /&gt;
* Robin Isard, Algoma University (Sault Ste Marie ON)&lt;br /&gt;
* Pat Moore, Carleton University (Ottawa ON)&lt;br /&gt;
* [http://wagathon.tumblr.com/ Alan Harnum], Toronto Public LIbrary (Toronto ON)&lt;br /&gt;
* Colin Prince, University of Toronto Libraries&lt;br /&gt;
* Tom Keays, Syracuse University LIbrary (Syracuse, NY)&lt;br /&gt;
* Chris Charles, University of Guelph (Guelph, ON)&lt;br /&gt;
* John MacGillivray, Carleton University (Ottawa ON)&lt;br /&gt;
* Lester Webb, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Elizabeth Goldman, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Jennifer O'Donnell, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* David Smith, Kingston Frontenac Public Library (Kingston ON)&lt;br /&gt;
* Loren Fantin, Our Ontario,Knowledge Ontario&lt;br /&gt;
* Daulton Theodore, Carleton University (Ottawa, ON)&lt;br /&gt;
* Peter MacDonald, Hamilton College (Clinton, NY)&lt;br /&gt;
* Rebecca Larocque, North Bay Public Library (North Bay, ON)&lt;br /&gt;
* Doris Rankin, Library and Information Management Consultant, Ottawa, ON&lt;br /&gt;
* Diane Bédard, Learn Ontario &amp;amp; Our Ontario; Knowledge Ontario&lt;br /&gt;
* [http://www.arts.uottawa.ca/eng/avellino.html Andre Vellino], CISTI / University of Ottawa&lt;br /&gt;
* [http://twitter.com/markswartz Mark Swartz], Queen's University&lt;br /&gt;
* Adam Wead, Rock and Roll Hall of Fame Library and Archives (Cleveland, OH)&lt;br /&gt;
* Pramila Thakur, Ontario Legislative Library, Toronto&lt;br /&gt;
* Anthony Petryk, University of Ottawa&lt;br /&gt;
* Jan Dawson, Ask Ontario, Knowledge Ontario&lt;br /&gt;
* [http://lab.cisti-icist.nrc-cnrc.gc.ca/cistilabswiki/index.php/Glen_Newton Glen Newton], Carleton University&lt;br /&gt;
* Patrick McMaster, Leeds &amp;amp; the 1000 Islands, Rideau Lakes, and North Grenville Public Libraries&lt;br /&gt;
* Nasser Saleh, Queen's University (Kingston ON)&lt;br /&gt;
* [http://stefansinclair.name/ Stéfan Sinclair], McMaster University&lt;br /&gt;
* [http://williamjturkel.net/ William J Turkel], University of Western Ontario&lt;br /&gt;
* Shirley Lew, [http://library.vcc.ca/ Vancouver Community College], (Vancouver BC)&lt;br /&gt;
* [http://twitter.com/edbilodeau Edward Bilodeau], [http://www.mcgill.ca/library/ McGill University]&lt;br /&gt;
* Andrew McAlorum, University of Toronto Libraries&lt;br /&gt;
&lt;br /&gt;
== Meeting Location Suggestions for the Future ==&lt;br /&gt;
&lt;br /&gt;
* Toronto, Ontario&lt;br /&gt;
* Sudbury, Ontario&lt;br /&gt;
* Ottawa, Ontario&lt;br /&gt;
* Montreal, Quebec&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	<entry>
		<id>https://wiki.code4lib.org/index.php?title=User:Shadowspar&amp;diff=12473</id>
		<title>User:Shadowspar</title>
		<link rel="alternate" type="text/html" href="https://wiki.code4lib.org/index.php?title=User:Shadowspar&amp;diff=12473"/>
				<updated>2012-05-16T16:36:46Z</updated>
		
		<summary type="html">&lt;p&gt;Shadowspar: New page: ...aka Rick Scott, Library Techologies Specialist at Wishart Library, Algoma University.  Find me elsenet at these places:  * Blog:  http://rickscott.dreamwidth.org/ * Twitter: [http://twi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;...aka Rick Scott, Library Techologies Specialist at Wishart Library, Algoma University.&lt;br /&gt;
&lt;br /&gt;
Find me elsenet at these places:&lt;br /&gt;
&lt;br /&gt;
* Blog:  http://rickscott.dreamwidth.org/&lt;br /&gt;
* Twitter: [http://twitter.com/shadowspar @shadowspar]&lt;br /&gt;
* GitHub: [http://github.com/rickscott rickscott]&lt;br /&gt;
* Gitorious: [http://gitorious.org/~rickscott rickscott]&lt;/div&gt;</summary>
		<author><name>Shadowspar</name></author>	</entry>

	</feed>