Unlocking Museum Systems
with Open Source
Richard Barrett-Small
Victoria and Albert Museum
MCN Austin,Texas. October 28th,...
http://www.vam.ac.uk/
2
http://www.vam.ac.uk/your_visit/
3
http://collections.vam.ac.uk/item/O217265/photograph/
4
http://collections.vam.ac.uk/item/O102467/relief-column-trajans-column/
5
Free Beer http://collections.vam.ac.uk/item/O77223/oil-painting-at-the-inn-door/
6
Freedom http://collections.vam.ac.uk/item/O192058/
7
http://www.vam.ac.uk/collections/sculpture/sculpture_features/bayes/carved/
precious/precious_materials/index.html
8
http://www.crummy.com/software/BeautifulSoup/documentation.html
>>> from BeautifulSoup import BeautifulSoup
>>> soup = Bea...
http://trac.edgewall.org/
10
http://www.vam.ac.uk/collections/fashion/fashion_motion/manish_arora/video/
modem.html
11
http://collections.vam.ac.uk/item/O143968
12
http://ffmpeg.org/
13
http://collections.vam.ac.uk/item/O62328/television-clock-base-jvc-videosphere/
14
http://collections.vam.ac.uk/
15
http://www.vam.ac.uk/api/
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="78435" model="...
http://www.vam.ac.uk/api/
{
"pk": 78435,
"model": "collection.museumobject",
"fields": {
"original_price": "",
"museum_num...
http://collections.vam.ac.uk/item/O175596/
18
http://wiki.xml3k.org/Amara2/Tutorial
from amara import bindery
MONTY_XML = """<quotes>
<quote skit="1">This parrot is dea...
http://copia.posterous.com/
20
http://codespeak.net/lxml/xpathxslt.html
>>> f = StringIO('<foo><bar>word</bar></foo>')
>>> tree = etree.parse(f)
>>> r = ...
http://php.net/
• require()
• require_once()
• include()
• include_once()
• mysql_escape_string()
• mysqli_escape_string()...
http://php.net/
# As recently as 2008…
$query = "DELETE FROM va_table WHERE id = ".$_POST['va_id']." LIMIT 1";
$result = m...
The Man http://collections.vam.ac.uk/item/O1137575/
24
>>> from calendar import Calendar http://www.vam.ac.uk/whatson/
25
Accessing MS SQL Server
FreeTDS http://www.freetds.org/
unixODBC http://www.unixodbc.org/
PyODBC http://code.google.com/p/...
http://www.vam.ac.uk/whatson/
27
http://collections.vam.ac.uk/item/O90516/photograph-sphinx/
28
http://sphinxsearch.com/
29
http://www.vam.ac.uk/microsites/decode/recodegallery
30
What’s Next for the Open Source Platform at theV&A?
31
http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/
32
http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/
33
http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/
34
http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/
Despite Papal disapproval of the dismembermen...
http://collections.vam.ac.uk/item/O72873/statuette-athlete-struggling-with-a-
python/
Thank you for listening
Me
r.barrett...
Upcoming SlideShare
Loading in …5
×

Unlocking Museum Systems with Open Source

1,753 views

Published on

Sides to accompany Presentation at Open Source Panel, MCN 2010, October 28th.

Drawing examples from web projects at the Victoria and Albert Museum, I will identify free and open source technologies that have enabled us to deliver value to colleagues and visitors alike. Furthermore, we will see how these technologies - when combined with open standards - can provide a powerful toolkit for working with legacy and proprietary systems. This allows "just-in-time" features to be added to existing systems outside costly or time-consuming upgrade cycles. Overall, I will share some approaches that could be useful for other institutions wishing to engage technical staff and save on licensing software.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,753
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Unlocking Museum Systems with Open Source

  1. 1. Unlocking Museum Systems with Open Source Richard Barrett-Small Victoria and Albert Museum MCN Austin,Texas. October 28th, 2010 1
  2. 2. http://www.vam.ac.uk/ 2
  3. 3. http://www.vam.ac.uk/your_visit/ 3
  4. 4. http://collections.vam.ac.uk/item/O217265/photograph/ 4
  5. 5. http://collections.vam.ac.uk/item/O102467/relief-column-trajans-column/ 5
  6. 6. Free Beer http://collections.vam.ac.uk/item/O77223/oil-painting-at-the-inn-door/ 6
  7. 7. Freedom http://collections.vam.ac.uk/item/O192058/ 7
  8. 8. http://www.vam.ac.uk/collections/sculpture/sculpture_features/bayes/carved/ precious/precious_materials/index.html 8
  9. 9. http://www.crummy.com/software/BeautifulSoup/documentation.html >>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup('<html><head><title>Page title</title></ head><body><p id="firstpara" align="center">This is paragraph <b>one</ b>.<p id="secondpara" align="blah">This is paragraph <b>two</b></html>') >>> soup.body.p <p id="firstpara" align="center">This is paragraph <b>one</b>.</p # tags beginning with “b” >>> import re >>> tagsStartingWithB = soup.findAll(re.compile('^b')) >>> [tag.name for tag in tagsStartingWithB] [u'body', u'b', u'b'] 9
  10. 10. http://trac.edgewall.org/ 10
  11. 11. http://www.vam.ac.uk/collections/fashion/fashion_motion/manish_arora/video/ modem.html 11
  12. 12. http://collections.vam.ac.uk/item/O143968 12
  13. 13. http://ffmpeg.org/ 13
  14. 14. http://collections.vam.ac.uk/item/O62328/television-clock-base-jvc-videosphere/ 14
  15. 15. http://collections.vam.ac.uk/ 15
  16. 16. http://www.vam.ac.uk/api/ <?xml version="1.0" encoding="utf-8"?> <django-objects version="1.0"> <object pk="78435" model="collection.museumobject"> <field type="CharField" name="object">Relief column</field> <field type="TextField" name="title">Trajan's column</field> <field type="SlugField" name="slug">relief-column-trajans-column</field> <field type="CharField" name="collection_code">SCP</field> <field type="CharField" name="artist">Unknown</field> <field type="CharField" name="place">Rome</field> <field type="CharField" name="location">Sculpture, room 46a, case FS, shelf C</field> <field type="TextField" name="materials_techniques">Plaster cast</field> <field type="TextField" name="dimensions">Height: 523.5 cm, Diameter: 422.5 cm</field> <field type="TextField" name="museum_number">REPRO.1864-128</field> <field type="CharField" name="object_number">O102467</field> <field type="CharField" name="edition_number"></field> <field type="TextField" name="descriptive_line">Reproduction of Trajan's Column, plaster, cast by Monsieur Oudry, Paris, ca. 1864</field> </object> 16
  17. 17. http://www.vam.ac.uk/api/ { "pk": 78435, "model": "collection.museumobject", "fields": { "original_price": "", "museum_number": "REPRO.1864-128", "date_end": " 113-12-31", "galleries": [ { "pk": 420, "model": "collection.gallery", "fields": { "room_code": "46A", … } } ], "descriptive_line": "Reproduction of Trajan's Column, plaster, cast by Monsieur Oudry, Paris, ca. 1864", "names": [ { "pk": 3, "model": "collection.name", "fields": { "death_date": null, "surname": "", "name": "Unknown", "gender": null, 17
  18. 18. http://collections.vam.ac.uk/item/O175596/ 18
  19. 19. http://wiki.xml3k.org/Amara2/Tutorial from amara import bindery MONTY_XML = """<quotes> <quote skit="1">This parrot is dead</quote> <quote skit="2">What do you mean "bleh"</quote> <quote skit="2">I don't like spam</quote> <quote skit="3">But I was looking for argument</quote> </quotes>""" doc = bindery.parse(MONTY_XML) q1 = doc.quotes.quote # or doc.quotes.quote[0] print q1.skit print q1.xml_attributes[(None, u'skit')] # XPath works too: q1.xml_select(u'@skit') for q in doc.quotes.quote: # The loop will pick up both q elements print unicode(q) # Just the child char data 19
  20. 20. http://copia.posterous.com/ 20
  21. 21. http://codespeak.net/lxml/xpathxslt.html >>> f = StringIO('<foo><bar>word</bar></foo>') >>> tree = etree.parse(f) >>> r = tree.xpath('/foo/bar') >>> len(r) 1 >>> r[0].tag 'bar' >>> r = tree.xpath('bar') >>> r[0].tag 'bar' >>> r = tree.xpath('bar') >>> r[0].text 'word' 21
  22. 22. http://php.net/ • require() • require_once() • include() • include_once() • mysql_escape_string() • mysqli_escape_string() • mysql_real_escape_string() • mysqli_real_escape_string() 22
  23. 23. http://php.net/ # As recently as 2008… $query = "DELETE FROM va_table WHERE id = ".$_POST['va_id']." LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); 23
  24. 24. The Man http://collections.vam.ac.uk/item/O1137575/ 24
  25. 25. >>> from calendar import Calendar http://www.vam.ac.uk/whatson/ 25
  26. 26. Accessing MS SQL Server FreeTDS http://www.freetds.org/ unixODBC http://www.unixodbc.org/ PyODBC http://code.google.com/p/pyodbc/ # freetds.conf [egServer70] host = ntmachine.domain.com port = 1433 tds version = 7.0 client charset = UTF-8 26
  27. 27. http://www.vam.ac.uk/whatson/ 27
  28. 28. http://collections.vam.ac.uk/item/O90516/photograph-sphinx/ 28
  29. 29. http://sphinxsearch.com/ 29
  30. 30. http://www.vam.ac.uk/microsites/decode/recodegallery 30
  31. 31. What’s Next for the Open Source Platform at theV&A? 31
  32. 32. http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/ 32
  33. 33. http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/ 33
  34. 34. http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/ 34
  35. 35. http://collections.vam.ac.uk/item/O111551/crucifix-reliquary-reliquary-cross/ Despite Papal disapproval of the dismemberment of saints, a finger relic was by no means unusual in Anglo-Saxon England 35
  36. 36. http://collections.vam.ac.uk/item/O72873/statuette-athlete-struggling-with-a- python/ Thank you for listening Me r.barrettsmall@vam.ac.uk @richbs The Tech Team @rmorg (The Boss) @waarg (Dev) 36

×