anchor.diff:  g.V().has('name','marko').out('created')
   ----
   
  -image:gremlin-on-software-vertex.png[width=300,float=right] Let's extend on that to try to learn who "marko"
  -collaborates with. In other words, let's try to answer the question of: "Who are the people that "marko" develops
  -"software" with?" To do that, we should first picture Gremlin standing on the "software" vertex. To find out who
  -"created" that "software" we need to have Gremlin traverse back _in_ along the "created" edges to find the "person"
  -vertices tied to it.
  +image:gremlin-on-software-vertex.png[width=350,float=right] Let's extend on that query to try to learn who "marko"
  +collaborates with when it comes to the software he created. In other words, let's try to answer the question of: "Who
  +are the people that marko develops software with?" To do that, we should first picture Gremlin where we left him in
  +the previous query.  He was standing on the "software" vertex. To find out who "created" that "software", we need to
  +have Gremlin traverse back _in_ along the "created" edges to find the "person" vertices tied to it.
   
   [gremlin-groovy,modern]
   ----
  
positive.code: The first command creates a `Graph` instance named `graph`, which thus provides a reference to the data you want
  Gremlin to traverse. Unfortunately, just having `graph` doesn't provide Gremlin enough context to do his job. You
  also need something called a `TraversalSource`, which is generated by the second command. The `TraversalSource`
  provides additional information (such as link:http://tinkerpop.incubator.apache.org/docs/x.y.z/#traversalstrategy[traversal strategies]
  and link:http://tinkerpop.incubator.apache.org/docs/x.y.z/#graphcomputer[traversal engine]) to Gremlin with respect
  to how he should execute his trip around the `Graph`.
  
  With your `TraversalSource` `g` available it is now possible to ask Gremlin to traverse the `Graph`:
  
  
negative.code: link:http://tinkerpop.incubator.apache.org/docs/x.y.z/#_the_graph_structure[structure] and data of the
  graph. TinkerPop is a graph abstraction layer over different graph databases and different graph processors, so there
  are many `Graph` instances you can choose from to instantiate in the console. The best `Graph` instance to start with
  however is link:http://tinkerpop.incubator.apache.org/docs/x.y.z/#tinkergraph-gremlin[TinkerGraph]. TinkerGraph
  is a fast, in-memory graph database with a small handful of configuration options, making it a good choice for beginners.
  
  TIP: TinkerGraph is not just a toy for beginners. It is useful in analyzing subgraphs taken from a large graph,
  working with a small static graph that doesn't change much, writing unit tests and other use cases where the graph
  can fit in memory.
  
  TIP: Resist the temptation to "get started" with more complex databases like link:http://thinkaurelius.github.io/titan/[Titan]
  or to delve into how to get link:http://tinkerpop.incubator.apache.org/docs/x.y.zg/#gremlin-server[Gremlin Server]
  working properly. Focusing on the basics, presented in this guide, builds a good foundation for all the other things
  TinkerPop offers.
  
  To make your process even easier, start with one of TinkerPop's "toy" graphs. These are "small" graphs designed to
  provide a quick start into querying. It is good to get familiar with them, as almost all TinkerPop documentation is based
  on them and when you need help and have to come to the link:http://groups.google.com/group/gremlin-users[mailing list],
  a failing example put in the context of the toy graphs can usually get you a fast answer to your problem.
  
  