Ian Robinson, ThoughtWorks

Ian Robinson

Biography: Ian Robinson

Ian Robinson (@iansrobinson) is the SOA practice lead for ThoughtWorksEurope, having spent many years architecting and implementing distributedsystems for clients in the telecommunications, entertainment and financialservices sectors. He is a co-author of 'REST in Practice' (O'Reilly) and acontributor to the forthcoming 'REST: From Research to Practice' (Springer).He presents at conferences worldwide on RESTful enterprise integration anddistributed systems design and delivery, and blogs athttp://iansrobinson.com.

Presentation: "Getting Things Done with REST"

Track: REST Architectures / Time: Friday 12:05 - 13:05 / Location: Room 102/103

REST's hypermedia constraint is all about getting things done - that is, making changes to the state of an application to achieve a particular goal. Put simply, in a web-based hypermedia system, clients apply HTTP's uniform interface to operate links and forms in pursuit of their application goals.

Using Microsoft's new WCF HTTP APIs, in this session I'll discuss the implementation of machine-to-machine interactions in a hypermedia-driven distributed system. I'll look at how we can develop and test discrete parts of a workflow, and build clients that can be guided on the fly to complete their application goals.

Workshop: "REST in Practice - A Tutorial on Web-based Distributed Systems"

Track: REST Architectures Training / Time: Monday 09:00 - 16:00 / Location: Room 104/105

The Web is fast becoming a serious competitor to traditional enterprise architecture approaches. This tutorial will provide an introduction to RESTful Web Service techniques, both from a theoretical and practical perspectives. The tutorial is broken down as follows:

* Introduction and Motivation
* The Web Architecture
* Simple Web Integration including POX and URI tunnelling
* CRUD Services using URI templates and HTTP
* Semantics using Microformats and RDF
* Hypermedia and the REST architectural style
* Scalability and how a text-based client-server polling protocol outperforms everything else!
* ATOM and ATOMPub for event-driven and pub/sub applications Security
* Conclusions and further thoughts

Participants should be comfortable with distributed computing concepts, but won't need any particular integration or middleware experience

Workshop: "A Programmatic Introduction to Neo4j"

Track: Training: Back-end Development / Time: Tuesday 09:00 - 16:00 / Location: To be announced

Graph databases are an esoteric but powerful member of the NoSQL family. For highly connected data, graph databases can be thousands of times faster than relational databases, making Neo4j popular for managing complex data across many domains from finance to social, and telecoms to geospatial.

This tutorial covers the core functionality from the Neo4j graph database, providing a mixture of theory and accompanying practical sessions to demonstrate the capabilities of graph data and the Neo4j database. Specifically attendees will learn about:

- NoSQL and Graph Database overview
- Neo4j Fundamentals and Architecture
- The Neo4j Core API
- Neo4j Traverser API and declarative querying
- Graph algorithms
- Alternative Language Bindings [optional, depending on time]
- The Neo4j REST API and using the database from non-JVM platforms
- Solutions architecture: using Neo4j in large systems

Each session (apart from the fundamentals and architecture) will be a mixture of a small amount of theory combined with a set of practical exercises designed to reinforce how to achieve sophisticated goals with Neo4j. The practical parts of the tutorial consist of Koan-style lessons where a specific aspect of the Neo4j stack is presented as a set of failing unit tests which participants will work to fix, gradually becoming more challenging until the attendees are capable of implementing sophisticated graph operations against Neo4j.

Attendees won't need any previous experience with Neo4j or NoSQL databases, but will require some fluency in Java, a little familiarity with a modern IDE, and a basic understanding of JUnit to help complete the lab tasks.