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
Fit the granularity of API to the programs in which
it will be used. Compare libcurl in C to libcurl in
Design interfaces around usage rather than
implementation structure, including major objects and
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 :-)