<?xml version="1.0" encoding="UTF-8"?>
<records type="array">
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Unlikely tools for pair programming</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/22/2010</updated-at>
    <id type="integer">291</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Open Source distributed hacking is awesome, but you knew that already. Pair programming is awesome too, and you might not have known that yet. But Open Source hackers don&#8217;t tend to do much pair programming, except perhaps at the occasional conference hack session. We want to show you some tools and techniques for pair programming in a distributed manner, and some case studies where we solved hard problems this way. And we want to hear about your favorite tips and tricks for collaboration.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>WebNumbr - Track numbers from anywhere on the web</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">302</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Lots of numbers are already graphed beautifully (stock prices, temperatures, gas prices, etc) but there are still many that aren't. I'm going to show a very simple way to graph any number from any site over time.

This talk will simply showcase webnumbr.com, discuss the technical details behind it, and hack together some neat graphs.

A 5 minute lightning talk was given at Super Happy Dev House about this site: http://www.youtube.com/watch?v=Sw1j0XNhJHk</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/08/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Replicating CouchApps with CouchDB</title>
    <submitted-at>03/08/2010</submitted-at>
    <updated-at>03/08/2010</updated-at>
    <id type="integer">313</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>CouchDB can host HTML5 apps natively, serving them over HTTP. Learn how to write JavaScript CouchApps which run on both the client and the server.

We'll assume you are familiar with jQuery and your command-line shell of choice, and that you have an installed copy of CouchDB (at least version 0.11).</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/22/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Data Visualization For Fun and Profit</title>
    <submitted-at>02/22/2010</submitted-at>
    <updated-at>02/22/2010</updated-at>
    <id type="integer">297</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Users interacting with your software and services create a lot of hidden data: web server access logs, click trails, file revisions, incomplete orders and abandoned shopping carts, and the like. Whether you're trying to speed your software up, improve your conversion rates, or just make some nice dataviz art to decorate your office, there are a few simple data analysis techniques that can help you out.

This session will show you how to use the Python and R languages to generate informative graphs and predictions from a variety of sources, including SQL databases, server log files, and the filesystem of your own computer.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/02/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>The symfony framework behind the scenes at museum installations</title>
    <submitted-at>03/02/2010</submitted-at>
    <updated-at>03/02/2010</updated-at>
    <id type="integer">308</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Most museums share these traits:

# They have &quot;stuff&quot;.  
# They want to share their &quot;stuff&quot; with the public.

Beyond that, the similarities seem to end.  The &quot;stuff&quot; may be physical objects&amp;mdash;anything from quilts to machine guns to postage stamps&amp;mdash;or it may be abstract concepts such as genres of music.  It may be painstakingly organized and catalogued or a jumbled mess.  It may be in spreadsheets, word processor documents, ancient in-house database systems, or expensive third-party museum collection management systems... or only a twinkle in a curator's eye.

Second Story builds custom interactive installations for museums and other cultural institutions.  Before we can focus on presenting the content, we have to figure out how to normalize existing content, create and maintain new content, and deliver the content for consumption by whatever presentation technology we plan to use.  Fortunately for us, many tools that are designed to solve these problems on the Web are also very suitable for delivering content to kiosks, interactive tables, or more exotic interactive installations.

We have chosen to use the &quot;symfony framework&quot;:http://www.symfony-project.org/.  Symfony is a full-stack web framework for PHP.  One of its features is a powerful system for creating administrative interfaces based on your database model.  This system is easy enough to create useful admin tools almost immediately using only yaml-based config files, while remaining flexible enough to allow for significant customization when necessary.

In this session, I provide a high-level overview of symfony and the symfony admin generator in the context of museum installations.  Throughout the session I'll use real-world examples of kiosks and interactive tables we've created for museums such as the Walt Disney Family Museum, the GRAMMY Museum, and the Gettysburg National Park Museum and Visitor Center.  I'll cover the following topics:

# The often messy world of museum content, and how symfony helps us unify and normalize disparate content sources
# Creating custom admin tools with the symfony admin generator
# Using symfony to create RESTful web services which can deliver content to your presentation layer in a variety of formats

This session will assume some familiarity with object-oriented programming in PHP5, but will be light on code.  The focus will be on what the framework can do for you rather than implementation details.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Building a platform from open source at Yahoo!</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">303</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Join us for a case study on using open source tools to build a platform for enterprise web applications with symfony. The focus of this session will be on how Yahoo! has built web applications that scale with open source tools. Find out what worked and what didn't when building scalable web applications with the symfony framework.

    * Why symfony?
    * symfony vs ysymfony
    * Social Search: Delicious and Answers
    * YOS: Developer Tool &amp; Application Platform
    * Internal Tools: Customer Care + Dashboards
    * The Platform + Components
    * Yahoo! symfony Plugins
    * Developer Tools - YUI3, YQL, Design Patterns, etc</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/09/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>When Bad Data Happens To Good People</title>
    <submitted-at>03/09/2010</submitted-at>
    <updated-at>03/09/2010</updated-at>
    <id type="integer">314</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Has bad data happened to you?  Has it happened repeatedly, and in several different ways?  Are you at your wits' end trying to figure out what to do about all this bad data?

Have no fear!  Bad data is curable, and you can prevent it from repeating.  Database doctor Josh Berkus will briefly lead attendees through and exploration of the types of bad data and some of the practices and tools they can use to prevent it.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/19/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>The curious case of php|architect</title>
    <submitted-at>02/19/2010</submitted-at>
    <updated-at>02/19/2010</updated-at>
    <id type="integer">287</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>In the last eight years, &quot;php|architect&quot;: http://phparch.com/ has gone from a newsletter born out of a dare to becoming the leading PHP publications in the world and has expanded into providing its own line of books, live remote training and conferences. 

Despite its increased popularity, php|a is still run by a small crew of passionate people who handle everything from content management to customer support using a set of tools based almost entirely on open source software, including Linux, MySQL and PHP that plays nicely with commercial software to provide a powerful business platform.

In this presentation, co-founder Marco Tabini shows you the technology behind php|architect and discusses how open-source and commercial software of all kinds can be meshed together to form a cohesive strategy for businesses of all sizes.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/22/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Open Source Virtualization Deep Dive</title>
    <submitted-at>02/22/2010</submitted-at>
    <updated-at>02/22/2010</updated-at>
    <id type="integer">298</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Open Source virtualization architecture provides the underlying framework for most of today's of online applications.  This technical deep dive will discuss a popular hardware based (Xen), host based (OpenVZ), and newcomer to the enterprise party (KVM).

We will go through fundamental differences between the three solutions, and discuss where specific platforms may prove more beneficial to your hosted stack.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/03/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Making Drupal Go Fast with Varnish and Pressflow</title>
    <submitted-at>03/03/2010</submitted-at>
    <updated-at>03/03/2010</updated-at>
    <id type="integer">309</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Are you ready if your web site gets popular or goes viral? A site that was happily handling a few thousand page views a day can very suddenly find itself struggling to handle hundreds of thousands of hits. The combination of Pressflow&#8217;s enhancements to Drupal and Varnish&#8217;s lightning-fast cache provide a free and open source way to exponentially increase the amount of traffic a Drupal-based web site can serve, allowing you to meet the demand without additional expensive hardware. During the session, we will cover the following topics:

* What Pressflow is and how it is different from the Drupal content management system
* What Varnish is and what it can do to help
* Why Pressflow+Varnish may be a good option for your web site
* Tips and tools for tuning and optimizing your configuration to make the most out of your precious server resources
* Lessons learned &#8211; what not to do
* Real-world examples from live sites running Pressflow and Varnish

The open source Drupal content management system powers numerous prominent web sites including:
* President Obama&#8217;s White House web site
* Linux Journal
* Zappos

Pressflow and Varnish are being used by some of the largest Drupal sites in the world:
* The Economist Online
* NBC Universal Bravo TV
* The Grammy Awards</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/11/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>The Second Step: HOWTO encourage open source work at for-profits</title>
    <submitted-at>03/11/2010</submitted-at>
    <updated-at>03/11/2010</updated-at>
    <id type="integer">320</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>You might not even realize what obstacles are blocking your colleagues from efficiently collaborating with FLOSS projects. In this presentation, you'll learn how to take the next step in encouraging employees to contribute to FLOSS, with specific recommendations for fixing these issues.

I'll introduce tools you can use, such as:

* tuned employee performance criteria and appraisals
* FLOSS-friendly project management strategies
* sneaky-yet-sensible PR

I'll mine my experience as lead project manager and personnel manager at Collabora for examples.  And I want to hear your experience and suggestions, too -- for example, can FLOSS leaders help with tactics like sensible copyright assignment policies?</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>The Story of Spaz: How to Give Away Everything, Make No Money, and Still Win</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/20/2010</updated-at>
    <id type="integer">293</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>&quot;Spaz&quot;:http://getspaz.com is a mature, open source, free desktop and mobile client for Windows, Mac, Linux, and Palm webOS. Started in Spring of 2007, Spaz is one of the oldest Twitter clients available still under active development. Other systems have gone on to great commercial and popular success, but Spaz still continues to plug along, driven by a commitment to open standards, transparency, and community.

This talk will cover the history of Spaz's development, from early successes and awards, to competition from well-funded closed source projects, to the transition onto mobile, and finding a sustainable niche where it continues to grow.

Specific topics we'll cover include:

* Changing how you measure success
* Ignoring what everyone tells you about being successful
* Doing it for love, not money
* How one user can be more important than 100,000 downloads
* What to expect when you open your code
* Getting others involved in your project
* Creating a codebase for multiple platforms and systems
* Being open on a closed platform</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>PHP for professional folks</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">304</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Join this session if you are interested in learning about the latest and greatest tools and techniques available to the PHP community. The talk will look at the latest features of PHP 5.3 and a sneak peak at how they have been applied in the next generation of the Symfony PHP framework.

This hacking session will go through a simple project from beginning to end illustrating how to apply the latest concepts from PHP 5.3.

http://symfony-reloaded.org/</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/09/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Tech Talk Tips Tutorial</title>
    <submitted-at>03/09/2010</submitted-at>
    <updated-at>03/09/2010</updated-at>
    <id type="integer">315</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Why do so many technical presentations suck?  Make sure that yours doesn't.

While a terrific presentation make take talent, making a good one is a matter of science and practice.  As generations of Toastmasters have proved, anyone can do it.  Veteran conference presenter Josh Berkus will go over his tech talk tips in detail in order to help you improve your presentation skills, including:

* Submitting proposals
* Nobody cares about your slides
* How to prepare for a talk
* The Joy of Lightning Talks
* 7 terrible habits of ineffective presenters
* Audience interaction 101
* When your demo crashes

Speakers who are giving talks later in the conference are especially encouraged to attend.

Josh Berkus has presented talks at dozens of conferences worldwide, and sits on the organizing committees for OSCON and pgCon.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/19/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Flex from zero to hero</title>
    <submitted-at>02/19/2010</submitted-at>
    <updated-at>02/19/2010</updated-at>
    <id type="integer">288</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Adobe Flex is a powerful (and open-source) system for building cross-platform applications that is all too often underestimated.

If you are convinced that Flex is good just for building MP3 players and cutesy Flash-based web pages, this talk will (hopefully) convince you otherwise by teaching how Flex and AIR can be used to build _useful_ applications quickly and efficiently.

During the presentation, Marco will live-code an application starting from scratch with your help&#8212;and end up with a complete program that, we assure you, will do anything _but_ play MP3 files (unless you want it to, that is).</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/23/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Thinking Like a Programmer: Building a Programming Curriculum</title>
    <submitted-at>02/23/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">299</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>In the late 1990s, I taught beginning programming to classes of people ranging from 8th grade to adult with community education. The language was Python, and the point was to bring non-programmers to the field and teach them how to &quot;think like a programmer.&quot; The goal was to teach basic programming fundamentals, how to read documentation, how to read error messages, etc. Later classes tackled specific topics. After the class, students could continue on there own, secure in the confidence that they could learn on their own. Since I'm planning on teaching again through Hood River County Community Education I would like to talk with people about building a curriculum in Ruby, from beginnings (&quot;what's a string?&quot;) to web application development. What do you feel is necessary to learn in order to &quot;think like a programmer?&quot; What topics would you want beginning programmers to learn? Let's build a list of topic sections together.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/03/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Grails for Switchers</title>
    <submitted-at>03/03/2010</submitted-at>
    <updated-at>03/03/2010</updated-at>
    <id type="integer">310</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>If you've been interested in trying Grails but haven't had the chance yet, this hands-on session is for you.

In this session you'll learn how to build a Grails application from the ground up, and we'll also explore the world of custom tags and the vast ecosystem of plugins that are available for Grails.

Even if you currently use another language or framework, there are a huge number of very compelling reasons to give Groovy and Grails a shot. Come see what all the buzz is about!</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Put Down the Superglobals! Secure PHP Development with Inspekt</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/20/2010</updated-at>
    <id type="integer">294</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Inspekt is a comprehensive input filtering and validation library for PHP.  With a focus on simplicity, Inspekt makes writing secure web applications in PHP faster and easier.

Attendees of this talk will learn:

* The Inspekt approach to filtering and validating user input, including the &quot;input cage&quot; concept
* how to ensuring secure code throughout the development process
* how to integrate Inspekt with existing applications
* how Inspekt integrates with popular frameworks like CodeIgniter

Initial development of Inspekt was funded by OWASP's Spring of Code 2007.

More information: &quot;http://inspekt.org&quot;:http://inspekt.org</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>The Future of Mobile: Learn to Build W3C Widgets and Device APIs with PhoneGap</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">305</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>With more than 4.6 billion handsets on the planet, we know the future of the web is mobile, but what's the future of mobile? The latest builds of mobile browsers include HTML5 APIs, which enable speedy hardware-accelerated CSS, offline capability, client-side storage, geolocation and other goodies. But, what's next?   

Two web technologies are ushering in the next generation of mobile apps: widgets and device APIs. As self-contained web apps, widgets significantly improve user experience. Device APIs do more than extend web apps to mobile devices. They allow access to native device sensors, like the accelerometer and camera, and to data such as photos and contacts. By adding widgets and device APIs to your toolbox, you can start building sophisticated mobile apps now. 

In this session, PhoneGap hacker Brian LeRoux will guide you through the step-by-step creation of a W3C widget. He'll show you how to combine it with device APIs and deploy it using the PhoneGap open source framework. Don't miss this session to learn how to develop for the mobile web of the future, today

Learn more about:

Widgets: http://www.w3.org/TR/widgets/
Device APIs: http://www.w3.org/2009/dap
PhoneGap: http://phonegap.com</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/09/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Joy of Index</title>
    <submitted-at>03/09/2010</submitted-at>
    <updated-at>03/09/2010</updated-at>
    <id type="integer">316</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Every SQL database needs indexes, but which indexes?  Learn how to index, when to index, why to index, and how to feel after you've indexed.

In 40 minutes, you will learn a set of basic principles which will help you decide how to index your databases which apply to almost any SQL database.  You will also discover the PostgreSQL tools which allow you to check if you've indexed correctly on that DBMS.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>On predicting predictors: hacking archive formats for fun and prophecy</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/22/2010</updated-at>
    <id type="integer">289</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Existing projects like &quot;pristine-tar&quot;:http://kitenet.net/~joey/code/pristine-tar/ focus on finding the right options to the compression code to reproduce the file from the uncompressed data (&quot;gzip -9 --rsyncable&quot;), treating the file formats as magic black boxes. Our in-depth analysis of archive formats lets us record just enough information to reproduce any archive regardless of the tool used to produce it.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>From the Ashes of MetroFi</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">300</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>The MetroFi experiment in Portland finally collapsed nearly two years ago.  The City of Portland obtained ownership of the equipment when MetroFi failed to remove it in a timely fashion.  Personal Telco requested the equipment from the City in order to try to extract some residual public benefit and after a lengthy period of indecision and inaction, the City has recently put out a bid solicitation for the removal of the nearly 700 devices mounted around the city on street lights and signal arms.  Personal Telco has been promised approximately 80 of these devices and is hoping to receive the rest as well, though that will depend on the generosity of the winning bidder.

Out of these ashes, Personal Telco hopes to build new networks that benefit the public.  Since August, we have had possession of a few sample devices and have learned what is inside and partly how they work.  We'll be continuing to explore intact and disaggregated reuse.  At this session, we'll discuss the background of the debacle, what we've learned to date, and what remains to be accomplished.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/03/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>XHP for PHP</title>
    <submitted-at>03/03/2010</submitted-at>
    <updated-at>03/03/2010</updated-at>
    <id type="integer">311</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>XHP is a PHP extension which augments the syntax of the language such that XML document fragments become valid PHP expressions.  It fits somewhere between a templating language and a programmatic UI library.  XHP allows you to use PHP as a stricter templating engine and offers a very straightforward way of implementing reusable, extensible components.  Facebook is increasingly using this technology across our web presence, include our home page, dashboards, and lite.facebook.com.  

This session will cover: how XHP works; syntax of building simple, complex, and dynamic structures; and using XHP as building blocks that cater to your web apps.  I'll include lessons Facebook has learned about moving quickly from concept to product using XHP.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Components of a Free Desktop: Code, People, and History</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/20/2010</updated-at>
    <id type="integer">295</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>In this talk we'll walk through core components of the modern X Window System. Along the way we'll look at some of the people involved and how they got their start, tying those stories into a broader historic context.

The major components covered are in three categories: X client, X server, and kernel. On the client side, you'll learn about cairo, Mesa, Xlib, and XCB. Next, explore the X server's architecture: the Device-Independent X (DIX) layer, the X.org DDX, and X.org video and input drivers. Finally, we'll explore the increasingly crucial role that the kernel plays in modern graphics.

This will necessarily be a whirlwind tour, but by the conclusion, at least your desktop environment will no longer be mysterious. You may even find yourself inspired to contribute to the future of the free desktop.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/25/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Node.js and you</title>
    <submitted-at>02/25/2010</submitted-at>
    <updated-at>02/25/2010</updated-at>
    <id type="integer">306</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Outline

* The problem with threads.
** Common design problems w/ blocking by default.
* Event driven design.
** Browser applications.
** Being good at doing nothing.
* Your first node program.
** EventEmitter and the standard callback API.
** Example proxy.
** Simple optimizations.
* Why is it so fast?
** V8
** libev, libio and non-blocking IO</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/10/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>How Two Fools Made Themselves Indispensible From Their Basement Office</title>
    <submitted-at>03/10/2010</submitted-at>
    <updated-at>03/10/2010</updated-at>
    <id type="integer">317</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>The Story: 
Blending the right open source software with a sprinkling of custom code was the easy part of moving a university from a brochure web presence into an integrated, flexible, efficient and scalable system. The challenge was to encourage staff not to settle for misfit, off-the-shelf solutions but rather to think creatively about the possibilities, to be demanding about getting their needs met and to embrace change and take ownership of their web domain.

Things We Learned:
- A project management cycle that works.

- How to find and blend the right OS packages (in our case a Joomla and Moodle core with lots of custom extensions) to meet the needs of multiple audiences.

- Training and implementation techniques that do not overwhelm.



</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Serialist: lazy web-crawling in Haskell</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/22/2010</updated-at>
    <id type="integer">290</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>We'll present &quot;Serialist&quot;:http://serialist.net, our site for keeping track of the webcomics and stories that we read.

We implemented Serialist entirely in Haskell. Serialist demonstrates functional web-application development, web crawling and scraping, distributed architecture in Haskell, and interesting graph algorithms.

Other sites exist for tracking webcomics updates, but require manual intervention from a moderator or administrator, often involving writing new page-scraping code for each serial. Our graph algorithms let us accept user submissions for new serials to crawl, making them available immediately. Haskell allowed us to concisely express our graph analyses, and run them over a lazy link-graph of the Internet.
</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/24/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Javascript, the One True Language</title>
    <submitted-at>02/24/2010</submitted-at>
    <updated-at>02/24/2010</updated-at>
    <id type="integer">301</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>JavaScript has long been considered a toy language, unworthy of serious developers attention outside the &quot;ajax&quot; world.

New open source projects like Node.js, Narwhal, CouchDB and more have changed this forever. JavaScript can now be the language you use to write the full stack of any application. And it turns out it will be faster, more productive and cooler than anything you are used to.

This presentation will cover the current &quot;State of the Art&quot; in the Javascript world and introduce to you how you could use JavaScript to develop your own projects, or simply use engines like V8, Rhino or SpiderMonkey to add powerful scriptability to existing projects.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/03/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>HipHop for PHP</title>
    <submitted-at>03/03/2010</submitted-at>
    <updated-at>03/04/2010</updated-at>
    <id type="integer">312</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>The main challenge of the project was bridging the gap between PHP and C++. PHP is a scripting language with dynamic, weak typing. C++ is a compiled language with static typing. While PHP allows you to write magical dynamic features, most PHP is relatively straightforward. It's more likely that you see if (...) {...} else {..} than it is to see function foo($x) { include $x; }. This is where we gain in performance. Whenever possible our generated code uses static binding for functions and variables. We also use type inference to pick the most specific type possible for our variables and thus save memory.

The transformation process includes three main steps:

1. Static analysis where we collect information on who declares what and dependencies,
2. Type inference where we choose the most specific type between C++ scalars, String, Array, classes, Object, and Variant, and
3. Code generation which for the most part is a direct correspondence from PHP statements and expressions to C++ statements and expressions.

We have also developed HPHPi, which is an experimental interpreter designed for development. When using HPHPi you don't need to compile your PHP source code before running it. It's helped us catch bugs in HipHop itself and provides engineers a way to use HipHop without changing how they write PHP.

Overall HipHop allows us to keep the best aspects of PHP while taking advantage of the performance benefits of C++. In total, we have written over 300,000 lines of code and more than 5,000 unit tests. All of this will be released this evening on GitHub under the open source PHP license.
</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/20/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Socket handoff: Concurrent fd sharing for performance and innovation</title>
    <submitted-at>02/20/2010</submitted-at>
    <updated-at>02/20/2010</updated-at>
    <id type="integer">296</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Xlib is over twenty years old, an impressive lifespan for any software project. However, Xlib has not been well-matched to the needs of X clients for some time now. We felt it had earned retirement, so we created a new X-protocol C Binding (XCB) library, providing a simple, small, thread-transparent interface to X. But to support all the applications that haven't magically ported themselves to XCB yet, we needed a transition plan.

We first tried re-writing Xlib from scratch as a layer on top of XCB. That was hard. So we stopped.

Then we added some hooks to XCB to allow Xlib to remain mostly unchanged but send requests through XCB. That worked, mostly; however, the complexity of this approach led to bugs, ugly hacks in XCB, and far more hacking on Xlib than continued sanity permitted. Adding special code in our clean new XCB library just to keep the old Xlib way working made us sad, and the looming prospect of becoming the Xlib maintainers made us lose sleep. So we stopped that too.

The current versions of Xlib and XCB now use a technique that we call &quot;socket handoff&quot;, cooperatively alternating exclusive access to the X connection instead of dumping Xlib's requests through XCB. Socket handoff allowed us to delete a pile of buggy, hackish code, while improving performance, and that made us happy. So we didn't stop.

The socket handoff interface has proven to be useful not just for Xlib, but also for new language bindings to XCB and for experimental X protocol-level hacks. We believe other network protocol implementations would also benefit from this approach.

By the way, you may be running our socket handoff code on your system right now, so why not come hear about the code used by every application on your desktop?</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>02/25/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Web Framework Shootout</title>
    <submitted-at>02/25/2010</submitted-at>
    <updated-at>02/25/2010</updated-at>
    <id type="integer">307</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>Which web framework will rule them all? As an audience member you pick the winner! We will present an introduction to a variety of web frameworks including Rails, Django, Symfony, and Sinatra. You can vote for the best web framework in categories such as URL handling, database integration, forms, HTML templating, documentation, testing, and deployment.
</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
  <record>
    <created-at>03/10/2010</created-at>
    <event-id type="integer">2011</event-id>
    <title>Slideware</title>
    <submitted-at>03/10/2010</submitted-at>
    <updated-at>03/10/2010</updated-at>
    <id type="integer">318</id>
    <user-id nil="true"></user-id>
    <website nil="true"></website>
    <description>We'll start with a typical slideshow practice: cutting and pasting source code into Keynote. For small projects, this may be all you need. A few handy shortcuts can help streamline the process.

With anything longer than a lightning talk, you're probably looking for ways to make sure your audience sees the same up-to-date, tested source code that's sitting in version control. We'll see how to refresh the code on your slides automatically, while preserving the beautiful syntax highlighting you see in your text editor.

Next, we'll look at how to tie your project into more code-friendly presentation software, such as the open-source Showoff package by GitHub's Scott Chacon. Finally, we'll finish off with a few auxiliary topics: preparing your slides for sharing on the web, adding a soundtrack, and so on.</description>
    <affiliation nil="true"></affiliation>
    <biography nil="true"></biography>
    <presenter nil="true"></presenter>
  </record>
</records>
