July 20–24, 2015
Portland, OR

How to write a specification: Implementing a library in seven programming languages

5:00pm–5:40pm Thursday, 07/23/2015
Foundations D135/136
Average rating: ***..
(3.00, 2 ratings)

Prerequisite Knowledge

Basic familiarity with JSON.


It started out simple enough. Write a query language for JSON, and design it in such a way that you could implement it in any programming language. All you have to do is write a specification, and ensure that your implementation follows the specification. Of course, it’s never that simple. In this talk, I’ll share the lessons learned from creating JMESPath, a query language for JSON, and how we were able to create a specification and implement JMESPath in seven languages so far, including:

  • Python
  • PHP
  • JavaScript
  • Ruby
  • Lua
  • Clojure
  • Go

If you’ve ever designed (or would like to design) something that could benefit from implementations in multiple programming languages, a good specification is crucial. In this talk we’ll cover:

  • What to include and what to exclude from a specification
  • How to structure your specification
  • How to avoid relying on behavior specific to a single programming language
  • How to account for different types of programming languages including dynamic languages, static languages, and functional languages
  • How to ensure implementations are compliant with your specification
  • Creating tooling to help with implementations

Learn about writing specifications and increase adoption of your tools.

Photo of James Saryerwinnie

James Saryerwinnie


James Saryerwinnie is a software development engineer at Amazon Web Services, where he works on Boto, the AWS SDK for Python, and the AWS CLI, the unified command line interface for AWS.

Comments on this page are now closed.


Picture of Audra Carter
Audra Carter
09/14/2015 8:16am PDT

Hi Brian,

If James chooses to share is slides, they will show up on this page. Also, if he chooses to share his video, it will likely be on a personal website or YouTube.

Brian Jones
09/11/2015 4:54am PDT

How do I access resources for this past conference talk?