Tuesday, July 26, 2011

AALL 2011 - Coding Potpourri: A Survey of Programming Languages and Tools Used in Library Applications Today

These are notes are from a panel discussion session with Nicole Engard, Director of Open Source Education ByWater Solutions, Ted Lawless, Library Applications Developer at Brown University, Jason Eiseman, Librarian for Emerging Technologies at  Yale Law School Library, and Tom Boone, Reference Librarian, Loyola Law School. The session was moderated by Cynthia Bassett, University of Missouri Law School Library. Note: these are my selected notes from this session; any inaccuracies or omissions are my own. I welcome your comments and follow-up thoughts!


The speakers gave us an introduction to each coding language, and we saw an example of each.


Nicole Engard on MySQL


http://web2learning.net - presentation will be posted


MySQL = My Structured Query Language - relational database management system, usually accessed via a web interface. Licensed under the GNU GPL, meaning it is Open Source and used in a lot of Open Source applications.


Who's using it:
  • Wordpress
  • Drupal
  • Wikipedia
  • Facebook
  • YouTube
  • Flickr
  • Ebay
  • Google (not searches)
Using the code for Koha, she created a table and then inserted data into the table. It is not necessary to enter data into every field unless a required field. 


She then showed us how to query the table using the "SELECT" statement. Headings in query results can be created for combined fields with the "CONCAT" command. She showed us how to pull results from two different tables to give meaningful results. The most common use for reports is for end of month or end of year statistics, so date and time functions are used extensively in queries.


Ted Lawless on Python


http://python.org
http://lawlesst.bitbucket.org/aall2011


a "power tool" that can do anything such as manipulating data, building websites and running libraries. The tools for this have become better over the years. 


"A little code can go a long way." - Eric Hellman at Code4Lib 2011 conference


Librarians' work is data oriented. It needs to be harvested from various sources, repackaged, and used in our systems so that our users can learn from it. We use tools such as Excel and MARCEdit; using Python is taking it to the next level; flexible and can be adapted quickly.


Getting started: 
  • start with a real problem
  • get an overview of Python with The Programming Historian
  • a computer
  • a good text editor e.g. jEdit, Notepad++
Data types - identifies and classifies types of data
Reads data from spreadsheets - .CSV files (his example was showing reading a Bluebook citation from a table)


He showed us querying a file, searching for records via Z39.50, creating MARC records, building reports from the ILS, and harvesting data from websites not already in a .CSV file or in MySQL.


More advanced: for reporting, they had a script that ran every night to pull ILS data, used MySQL to put it onto a little website. Built with a Python tool called django for building websites.


Jason Eiseman on HTML5


One of the design principles of HTML5 is to support existing content 


Some history


HTML 4.01 - 1999
XHTML 1.0 - 2002
XHTML 2.0 - 2006
Web Forms 2.0 - 2004 < focused on advanced web applications


2008 - HTML5 standard started
2012 - expected to be a candidate recommendation
2022 - expected to be finished


All standard browsers support HTML5 today; Apples, iPhones and Androids also support it; however the only browser currently supporting all of the elements is Opera.
  • HTML5 uses semantic tags to structure an HTML document;
  • good for accessibility for working with screen readers. 
  • a lot more support for additional microformats
He showed us some of the graphical changes allowed by HTML5 and some new form elements that look the same on the computer but look better with a mobile interface.  http://www.jasoneiseman.com/aall11/forms.html shows all of the forms available.

Last year he used Javascript to draw on Canvas to map out carrels in their library. He thinks they will be able to use graphics, Canvas and Javascript to create interactive overlays. See http://www.jasoneiseman.com/aall11/canvas.html and http://paperjs.org/ for examples.

Audio, similar. See http://www.jasoneiseman.com/aall11/audio.html for example. 

HTML5 can delivery functionality to off-web applications (i.e. when not connected to the Internet).

For more reading:

Tom Boone on CSS: Cascading Style Sheets

http://www.slideshare.net/tomboone

Without CSS, content is not unreadable. Tom showed us the Amazon.com, New York Times and Facebook websites without CSS - largely unusable to the human eye.

Cascading Style Sheets 

Cascading - the cascading feature has changed in the way it works over time
  1. browser style sheet (default styles)
  2. site style sheet(s) - overrides the browser defaults - this is what web designers work on
  3. user style sheet(s) - not used very often; users can overwrite styles e.g. he has a style that hides the comments on news websites
Style 
  • font size, type, colour, format (bold, italic, upper case)
Sheets
  • linked - applies to more than one page - make the change once and it shows up in many places
  • embedded - embedded but appears in the head portion of the web page - has a CSS rule defined in the head. 
  • inline - property directly embedded into the page - almost impossible to override, so avoid
CSS Syntax (see also: http://www.w3schools.com/css/css_syntax.asp )

{color: red;}

p = selector -
paragraph tag - everything within the paragraph tag will show up red. Could be




  • etc.

    {color: red;} = the declaration

    can be more specific using classes, IDs and descendant selectors

    e.g. p.summary{color: red;}only applies to paragraph tags that have been given a summary class

    Class and ID work very similarly, however ID can appear only once on a page; a class can appear many times.

    p#summary {color: red;} - an paragraph with an ID of summary

    Descendent selectors - a more hierarchical rule

    ul li {color: red;} < white space - any descendent of a list will get the red

    Classes/IDs can be combined with descendant selectors to create increasingly complex rules.

    New developments:
    • Adaptive Web Design
    • CSS3
    For more reading:

    1 comment:

    F. Tim Knight said...

    Hi Connie,
    Finally getting a chance to read some of your AALL coverage. Thanks for writing up this summary, great stuff. Motivates me to learn more about Python and makes me sorry that I was unable to get to AALL this year. Ruby is also a useful programming language and from what I can tell so far pretty user-friendly.
    Thanks again.
    Tim