Part 2: Setting up the Tools
I confess to having a love and hate relationship with tech. In an ideal world, one could skip this post, because software would be easy to get started with, and the answers to simple questions would be easy to find — but that’s not always the case. As a researcher first and technologist second, my patience for geeking out over someone else’s tech is limited. I want to explore ideas by playing around on a laptop, free of the need to pay for cloud servers, or install container runtime environments with all the associated overhead. There are two things we need, in particular, to be able to play with Semantic Spacetime models: a programming language and a flexible data store. In this post I’ll show how to set up those.
Feel free to skip this episode if you already have ArangoDB and Go up and running. Also please note that code formatting in medium is rather stupid so the rendering might need some interpretation!
Although I had imagined starting with popular Python to explain the concepts of semantic spacetime, I’ve instead chosen the ugly-mug language “Go” (or Golang), both for its speed and simplicity, and for its mature language driver. Having a stable and mature driver is a big issue in database usage, because otherwise databases are a pain to work with. Go could hardly be called pretty, but it has several advantages over Python, and its ad hoc and opinionated rules, which will infuriate from time to time, are tolerable. Go really has what you need, at your fingertips, so it’s a good investment for speed and efficiency.
Next we need a convenient data store, or some kind of database — one that doesn’t require a three year training certificate to operate. After playing with numerous implementations of Semantic Spacetime over the past decade, using MySQL, MongoDB, Postgres, Neo4j, and eventually plain filesystem implementations, a former research student stumbled across ArangoDB, which suddenly made difficult things easy. ArangoDB has therefore become my database of choice for a wide range of things. It’s a multi-model database system, which works as a key-value, document, and graph data store — for flexible storage, so we can choose what’s best without having to learn multiple technologies. It also has quite good language support. In fact, Arango seems poised to become much more than a database system — it’s being extended into a pretty powerful integrated data processing platform, with nascent support for user extensions, processing algorithms and “Pregel ‘’ graph flow computation m