Jan 262015

I have a new job! I will start at IntellinQ at February 2nd (since the 1st is on a Sunday). My main concern will be the GeolinQ application, at first a requirement of the import-module and later more.

Today I met everybody in the company/team already, and look forward to working with all of them. IntellinQ is Rotterdam based (Vasteland 78, in the HNK Rotterdam building), so that will save me from the endless traffic jams I can never get used to.


Jan 162015

My ex-colleague and friend Wijnand asked me if I could do a little project together with him. It involves working with graph databases, in particular Neo4j. Graph databases are different from “traditional” relational databases in the sense that they support semi-structured data without predefining a datamodel. In a way that’s also the case for other NoSQL databases, but when referring to NoSQL databases most people will think of the ones that are used to stored documents of all types. That’s not what graph databases are for.

A graph database is typically used when the relationships between the data are as important as the data itself. Consider persons. I know a lot of other people. I love some of them. I have worked with more. “KNOW”, “LOVE” and “WORKED WITH” are relationships between persons. In a graph database you create nodes and link them with relationships. Relationships are directional and explicit. Unlike relational databases where you have to add constraints to enforce relationship-integrity, a graph database cannot have a stale/dangling relationship.
Back to the persons I know, love, and worked with (yes, an Oxford comma). Persons are not nodes, so in the graph database you label them with “person” or “Persons” (note: define a standard before wildly labeling nodes). A node can even have more than one label.

Another thing that makes graph databases so different is that relationships can have properties. Since when do I know my best friend? In what period did I work with Wijnand? When creating/defining the relationship between two nodes, you can give that relationship properties, on which you can search or filter at a later stage.

The main advantage of a graph database over a relational database is its speed. When you have data with a lot of relationships, relational databases will easily drop performance when it needs to join multiple large (lots of rows) tables. This is not the case with a graph database. It excels in joins. Because that’s what its engine is made to do in the first place. When just iterating through data, the relational database will probably win, but with a lot of joins, a graph database can make a huge difference.

For example. Create a persons table in your relational database. Make it so that you can have friends, colleagues or loved ones that are persons in the same table. Now query for all your friends that where also a colleague within a certain period. Good luck writing your hierarchical query 🙂

Jan 032015

I never noticed that my index.php when browsing to the domain-root (so www.switchbl8.nl) did not work and gave an error 403.

It took some puzzling and because all other stuff worked I knew it must have been since the transition to fcgid (instead of mod_php). I recalled blogging about it, checked my configs for errors, and found one (no plus signs in the options section).

Now it works. It’s not a special page, but it annoyed me that it didn’t work.

Next puzzle.

Jan 022015

Just installed Windows Live Writer, to make blogging easier. It imports the current theme properly, so what I’m typing now looks like what will be published, including the dark background etc. Let’s see how this works the coming days.

This is basically a test post.