Brian's Waste of Time

Tue, 24 Oct 2006

Talks I Want to Give

There are a few talks I'd really like to give, but don't know the right venue to propose them to. To flesh the thoughts out:

Designing Elegant APIs

Designing an API is an exercise in user interface design, and a good one can make or break the system it is designed for. Elegant API design is no more an intangible than elegant user interaction design -- there is nothing magical about it, except in how it will make your users feel! Some of the topics include:

  • Make the best use of the tools and environments for the system you are working in. This includes simple things like maximizing the value of [tab] in Java IDEs, to more complex stuff like ensuring you play well with the 800lb gorillas in your jungle.
  • Fit the granularity of API to the programs in which it will be used. Compare libcurl in C to libcurl in PHP.
  • Design interfaces around usage rather than implementation structure, including major objects and functions!
  • Building backwards and forwards compatibility into an API from the get-go, even on platforms which are hostile to simultaneous versions.
  • Deciding when a library or framework is more appropriate, and how to blur the lines so you can effectively provide both (see Spring for a great example of this).
  • Effectively evolving an API to keep it relevant and useful over time, without having to throw it away and start over every 18 months.

The talk will certainly be example heavy, though I already feel bad for the tools used as bad examples :-/ Ah well.

Depending on Open Source

How to best work with open source for critical projects. How to interface with open source communities at the right level, mitigate risk for key projects, and sleep at night when a major feature you require in the next version of a library gets voted down.

Real world examples abound here -- about how it has been done well, and not so well. Let's look at what has happened, and how to learn from it. This applies double if your product is, itself, software!

Why You Need a Messaging Bus (But Don't Yet Realize It!)
Run through the problems solved and solutions enabled when you have access to a robust and performant async messaging system available. Good open source options have just become available in the last few years, and most folks don't know how useful they can be! Focuses on examples and howtos on topics ranging from clustering to live visualizations.

Silly little abstracts, but they get the ideas across. I should probably just do them up as nicely illustrated blog posts, but sometimes a mic and slides just seem better :-)

4 writebacks [/src] permanent link