/* Copyright 2009 by Oliver Steele.  Available under the MIT License. */

var kLinkTitleMap = {
  '/museum/frost_and_fire.html': 'An early screen saver (1990)',
  '/museum/pogo_joe.html': 'A Q*Bert-like game for the Commodore-64',

  '/portfolio/movies/browsegoods.mov': 'A screencast of BrowseGoods in use',
  '/portfolio/movies/stylecart.mov': 'A screencast of StyleCart in use',

  '/projects/pywordnet/': 'Python bindings for WordNet',
  '/software/python/fsa/': 'Python library for manipulating automata',

  '/sources/': 'Open source projects',
  '/sources/#javascript': 'Open source JavaScript',
  '/sources/#ruby': 'Open source Ruby',
  '/sources/javascript/functional/': 'Point-free (functional) programming for JavaScript',
  '/talks/ajaxian-2008/samples/': 'Samples of practical functional programming',
  '/tools/reanimator/': 'Visualize how regular expressions compile to automata',
  '/words/aargh': 'Some days...',

  'http://apple.com/': 'A Cupertino-based computer company',
  'http://browsegoods.com': 'Visualize the cartography of the Amazon catalog',
  'http://en.wikipedia.org/wiki/Apple_Dylan': 'Scheme meets Smalltalk',
  'http://en.wikipedia.org/wiki/QuickDraw_GX': 'An early version of Quartz functionality',
  'http://laszlo-plugin.rubyforge.org/': 'Rails plugin for integrating OpenLaszlo apps',
  'http://laszlosystems.com': 'Creator of OpenLaszlo',
  'http://margaretminsky.com': 'Margaret Minsky\'s home page',
  'http://openlaszlo.org': 'An open-source RIA platform',

  'http://www.openlaszlo.org/pipermail/laszlo-user/2005-October/001802.html': 'Why OpenLaszlo uses JavaScript (2005)',

  'http://www.linkedin.com/in/osteele': '...on LinkedIn',
  'http://github.com/osteele': '...on GitHub',
  'http://www.zazzle.com/osteele': '...on Zazzle',
  'http://www.slideshare.net/osteele': '...on SlideShare',
//  'http://www.slideshare.net/osteele/oliver-steele-functional-javascript-presentation': '',
//'http://www.slideshare.net/osteele/laszlo-pycon-2005': 'PyCon 2005'
  'http://www.slideshare.net/osteele/oliver-steele-functional-javascript-presentation': 'Practical Functional JavaScript presentation',
  'http://www.slideshare.net/osteele/oreilly-etech-conference-laszlo-ria-presentation': 'Introducing the Laszlo RIA Platform, at O\'Reilly E\'Tech',
  'http://www.zazzle.com/aargh_mug-168656372783435175': '"Aargh" mug',
  'http://www.zazzle.com/there_their_theyre_poster-228814630698264832': 'There Their They\'re poster',

  '/blog': 'My blog (2005-2008)',
  '/archives/category/javascript': 'blog posts about JavaScript',
  '/archives/2004/08/unqualified-imports-for-xml': 'A proposal for "import" in XML-based languages',
  '/archives/2004/08/xml-schema-versions': 'Versioning XML schema',
  '/archives/2004/11/ides': 'An essay about programming languages and environments',
  '/archives/2004/12/serving-clients': 'My explanation of AJAX, before AJAX was coined',
  '/archives/2006/02/javascript-beziers': 'JavaScript Beziers',
  '/archives/2006/02/stretch-languages': 'An essay about types of languages I\'ve used',
  '/archives/2006/04/javascript-memoization': 'A handy JavaScript idiom',
  '/archives/2007/12/cheap-monads': 'How to do monad-like things in JavaScript',
  '/archives/2007/12/overloading-semicolon': 'Yet Another Monad Tutorial',
  '/archives/2008/02/inlined-frommaybe': 'A useful monad-like idiom in JavaScript',
  '/archives/2008/02/self-printing-javascript-literals': 'A handy JavaScript idiom',
  '/archives/2008/02/synchronizing-client-models': 'Exploring AJAX and data synchronization',
  '/archives/2008/04/conquering-busy-cursor-sequentially': 'Asynchronous JavaScript',
  '/archives/2008/04/db-content-rails-plugin': 'Rails plugin for saving, restoring the database',
  '/archives/2008/04/javascript-fu-rails-plugin': 'Rails plugin for working with JavaScript',
  '/archives/2008/04/jcon-json-type-conformance': 'Ruby gem for type-checking JSON',
  '/archives/2008/05/ambimation': 'Ambimation title',
  '/archives/2003/05/fenceposts-benzene-and-euler': 'Some topology topics for primary school',
  '/archives/2003/08/dot-numbers': 'Negative numbers as fractions',
  '/archives/2004/12/visualizing-basic-algebra': 'Pictures of properties of basic algebra',
  '/archives/2005/12/adding-fractions': 'Pictures of adding fractions',
  '/archives/2005/12/second-grade-squares': 'Thinking about thinking about problem solving',
  '/archives/2007/07/division-free-lcm': 'A pleasant algorithm',
  '/archives/2008/01/programmers-pyramid': 'Reading code',
  '/archives/2008/02/fizzbuzz-station': 'Throwing my regex hat into the ring',
  '/archives/2008/02/supply-demand-springs': 'A physical analogy for supply and demand',
  '/archives/2008/05/commit-policies': 'Pictures to help me think about Git (now incorporated into many other introductions)',
  '/archives/2008/05/latin-agreement-and-case': 'An illustration of case and agreement in Latin',

  '/projects/': 'My old Projects page',
  '/404': 'Not found',
  '/archives/category/illustrations': 'Pictures I\'ve drawn',
  '/talks/2004-06-google/': 'Google Tech Talk (2004)',
  'http://foldr.com/': 'Catamorphism',
  'http://ll2.ai.mit.edu/': 'MIT Lightweight Language Conference',
  'http://twitpic.com/28wzd': 'Just thought I\'d try this...',
//  'http://twitticisms.osteele.com/': '',
  '': ''
};
