OSCON 2007

2007-08-07 03:15:00

OSCON was great this year -- I'm really glad I was able to go, especially given all the added pressure of Chandler Server's end-of-release push. The content was decent, although I wouldn't say stellar. This time around I found a bit more value in meeting and talking to people.

The Sun party was excellent -- I had the enjoyable experience of getting to be the first person to tell Sun's Tom Marble about the new Microsoft Permissive License.

The Mozilla party was decent, but the venue made it really difficult to hold a conversation, with the live music and the enclosed space.

I also had a good talk over dinner and beer with some of the guys from Zimki, those guys doing the interesting stuff with server-side JavaScript and utility computing. Their implementation of server-side JS has an interesting twist -- they use SpiderMonkey with mod_perl and Apache, rather than some flavor of Rhino/Java.

BCM is right on the nose -- one of the highlights for me too was ending up in the Doubletree hotel bar with the OSAF and Metaweb crews and talking and joking about an enormous range of crap from hardcore tech stuff to bad TV. I also scored a nice Freebase T-shirt. (I was stoked to get a promo T-shirt -- especially after Guido was no help with that Google shirt.)

Crashing the O'Reilly speakers' party was pretty fun, and at the after-party at the Vault Martini Bar, I had a nice chat with Amy Hoy about UI design, Rails, and JavaScript -- topics that are near and dear to my heart.

Here are brief writeups of the talks that I attended. Most of this stuff is also posted over at the SitePoint blogs.

Ted and Mikeal and Adam have all posted writeups too.

Managing Technical Debt

Andy Lester is with the Perl Foundation, and maintains a blog at petdance.com.

Andy's talk gave practical advice for catching up on all the tasks you put off until some later date (that inevitably never comes) -- stuff like postponed docs, fixing broken tests (or just writing tests at all), backup regimes, TODOs in your code, etc.

He had a very simple and straightforward formula:

  • Identify your debts
  • Determine the costs
  • Pay the most profitable
  • Stop incurring new debt
  • Repeat as necessary

The most important takeaway for me was the idea that you don't try to fix all your problems at once. You figure out what fix will give you the most bang for your buck -- not the easiest thing to fix, not the biggest problem. You fix whatever it's the most profitable to fix.

There was also a lot of good discussion during this talk on how to convince a manager to allow you to begin reducing technical debt with things like refactoring, increasing test coverage, adding documentation, or actually testing your disaster-recovery plan. The best advice was the idea of putting it in terms that the manager can understand (often with a manager either in money or time).

For example, if managers know that investing two days testing disaster recovery would save weeks of rebuilding critical infrastructure, or that spending a week refactoring crufty old code would make it 20% faster to implement new features, it's easier for them to justify the cost.

Andy has his slides available online here.

Open Design, Not by Committee

Ted Leung is a Senior Engineer at OSAF, and blogs at Ted Leung On The Air

Mimi Yin is a UI Designer at OSAF

(Disclaimer: I work at OSAF on the Web UI for Chandler Server.) This talk centered on the open design process used by OSAF in developing both the Chandler Desktop client, and the Chandler Server Web UI, and how open design differs from open development.

Open design is participatory, but mediated -- i.e., decisions are made within the context of community discussion and participation, but with a specific responsible party for decisions to avoid devolving into design-by-committee.

Specific topics included:

  • The thought processes of developers versus designers -- developers think in terms of features and specs, designers think more holistically.
  • How to do design in a distributed, participatory environment -- use of tools such as wiki and mailing list.
  • How to judge the relative merits of design proposals based on specific goals, requirements -- i.e, use cases.
  • Defining the 'target user.'
  • How to build a community of contributors to the design process -- what is the equivalent of a 'commiter' in the open design process?

The talk concluded by going over next steps for cultivating an open-design community -- by making objectives clear, getting people to use the apps and provide feedback, and providing ways for people to experiment with new designs.

Slides are available online here.

The Holistic Programmer

Adam Keys is a software developer and writer. His blog is at therealadam.com.

The days of one guy putting together all the hardware and software together by himself in his garage are long gone -- working with computers increasingly means doing something very specialized in one of the layers between the hardware and the end-user.

Adam made a good case for the idea that despite this specialization people working with computers should develop at least a passing familiarity with the layers other than their own -- e.g., a guy working in the database learning typography, and a Web designer learning about compilers.

Many developers may not have the interest (or the discipline) to spend time learning about subjects so far removed from their little piece of the pie, but a couple of the benefits to doing so that Adam described seemed pretty compelling:

  • The ability to converse with the people you work with and understand better how your work interfaces with theirs.
  • Gaining a new perspective that allows you to find unexpected or creative solutions to problems in your own domain.

Adam spent the end of his talk going over the two example layers just mentioned -- CSS/layout/typography, and compilers. That might not have been something every developer was super-interested in learning about, but for a guy like myself who's kind of all over the place from the database layer all the way up to end-user-facing design, it was really interesting stuff.

Adam has his slides available online here.

The Atom Publishing Protocol

Joe Gregorio is a Senior Software Engineer at IBM

Overview of Atom Publishing (AtomPub), along with some of the gritty details and examples on how it dovetails with REST. Some of the highlights included:

  1. basic AtomPub document structure
  2. CRUD operations
  3. paging
  4. How to handle non-text media like video/graphics/PDFs.

Joe's slides are available online here.

High Performance Web Pages

Steve Souders is Chief Performance Yahoo at Yahoo.

Talk focused on optimizing performance of client-side code, which -- surprisingly -- makes up 80-90% or more of the user wait time.

Steve ran quickly through 13 basic rules for high-performance Web sites:

  1. Make Fewer HTTP Requests
  2. Use a Content Delivery Network
  3. Add an Expires Header
  4. Gzip Components
  5. Put CSS at the Top
  6. Move Scripts to the Bottom
  7. Avoid CSS Expressions
  8. Make JavaScript and CSS External
  9. Reduce DNS Lookups
  10. Minify JavaScript
  11. Avoid Redirects
  12. Remove Duplicate Scripts
  13. Configure ETags

Articles on techniques for all these rules are available online at Exceptional Performance on the Yahoo Developer Network.

Steve also introduced the YSlow add-on for Firefox, that integrates with Firebug to analyze your pages according to the 13 rules and help you optimize your pages' performance.

Windmill: Automated Testing of Your Ajax Web Applications

Mikeal Rogers is a QA Development Engineer at the Open Source Applications Foundation, and has a blog at semanticmikeal.com

Adam Christian is also a QA Development Engineer at the Open Source Applications Foundation. His blog is at t0asted.com

(Disclaimer: I work at OSAF and am a committer on the Windmill project.) This talk started with Adam showing a brief demonstration of using Windmill to test the Ajax Web UI for OSAF's Chandler Server, including drag/drop testing of the calendar view.

The talk continued with Mikeal describing the reason for building a brand-new framework rather than using an existing tool like Selenium -- frustration with the inability debug broken tests. Windmill is designed to allow tests to be paused and debugged interactively.

They followed with a brief overview of Windmill's Python/JavaScript architecture, and ended with a demonstration of the cross-browser recorder that can be used to create tests from the Windmill IDE without writing code.

Mikeal and Adam have their slides available online here.

They have some screenshots and screencasts available online here.

People Hacks

Adam Keys is a software developer and writer. His blog is at therealadam.com.

In this talk, Adam presented a number of methods for effective advocacy and for getting along with other developers. In other words, interacting with people is as important as interacting with hardware or software. Problems in this sphere have no technical solution -- they require a social one. Thus, the idea of 'people hacking.'

People hacking is not rooted in nefarious black-hat hacking, but simply in using tools of social jujutsu (sometimes on yourself, even) to gain traction for ideas you're trying to advocate. Paying more attention to the people side of things can help you build the kind of integrated, smoothly functioning team capable of executing (to borrow a basketball metaphor) the "no-look pass."

A few sample ideas included:

  • Simply smiling -- makes yourself and people around you feel more positive
  • Avoid negativity -- try the ABBA Method (see the slides for details)
  • Avoid criticism
  • Compliment before criticizing

Some ideas followed about how to deal with jerks in your organization, including the simple-but-effective "No Asshole Rule" (from the book of the same name) that encourages a zero-tolerance toward asshole behavior in your group -- even from so-called superstar programmers.

Adam also encouraged a little self-evaluation to determine if your yourself may be a recovering jerk, and that by focusing on improving your ability to working well with those around you, you can also reform yourself.

Adam has his slides available online here.

Adventures in Localization

Wil Clouser is a Web Developer with the Mozilla Corporation, and blogs at Micropipes::Blog. Mike Morgan is Manager of Web Development at Mozilla Corporation, and has a blog at morgamic.com.

This talk described the process of internationalizing Web properties at Mozilla, specifically mozilla.com and addons.mozilla.org, site which together receive almost 200 million hits a day. The localization process for the Web sites is still behind the Firefox client, which ships with over 40 different locales.

They started by discussing a few of the pitfalls of localization, such as pluralization and noun-gender, and then went on to talk about the system they settled on for localizing the Mozilla Web properties, which are a combination of static text in templates and dynamic content pulled from a database.

For static text, they ended up using GNU's GetText, as it's a stable, well-proven solution already in wide use. It has good documentation, pluralization support, and a wide variety of tools that translators may already be familiar with.

For the dynamic content, they used a simple database-driven solution of lookups based on string ID and locale key. (They initially looked at PEAR::Translation2, but it turned out not to be flexible enough for their purposes.) The advantages of this system are its simplicity, and the fact that it's easy to apply to dynamic content lookup anywhere in the database. Drawbacks are the large table sizes and complicated joins required to get data out in a way that allows language fallback.

They also touched on some of the improved localization tools that are in develoopment, such as Canonical's Launchpad, and various ways of getting the community involved and empowered to help out with localization.

Slides for their presentation are available online here.

Wil also has a follow-up blog post called Ten Tips for Website Localization.

The Continual Opening of Second Life

Rob Lanphier, (Rob Linden) is Open Source Busybody at Linden Labs

Aaron Brashears (Phoenix Linden) works at Linden Labs

This was a fairly free-form discussion that started with Rob asking everyone what particular facets of Second Life attendees were interested in.

The proceeded with a general introduction of SL, with an accompanying background demonstration of the SL client, including a tour of virtual workspaces, demos of the new integrated voice-chat client, and harrassement of random Linden Labs employees in-world.

Aaron talked a lot about the evolution of the current system architecture, and talked about the roadmap toward the more distributed architecture that open-sourcing the server-side would require -- a system that would allow participation in the Grid by non-Linden servers.


This is the blog for Matthew Eernisse. I currently work at Yammer as a developer, working mostly with JavaScript. All opinions expressed here are my own, not my employer's.


Previous posts

All previous posts ยป

This blog is a GeddyJS application.