It is very much expected that there will be endless stream of new (and often times better) tools introduced to solve the same set of problems. While I am slowly resuming my programming work, and in the process of reviving my very much dead postgrad project, I found some alternative to the tools I had used in the past. I suppose I shall just jot them down here so that there’s a reference for later use.
Project file management
First thing first, it is about the management of my project. Often times I need to include external libraries made my someone else. However, putting them in an orderly manner is always a problem, especially when they have to be stored in a proper way so they can be properly included. In the past I have set my project in the following layout through my previous work experience:
\ # project root |-bin\ # mostly my executable scripts/binary |-external\ # external libraries |-www\ # (optional) if it is a web application |-include\ # my own code
This setup works fine throughout the years, but there are a couple of disadvantages. The main one is that there’s almost no way to ensure my project includes the latest libraries with bug fixes. Especially when these libraries are not posted to any proper repositories (speaking of hg/git/svn etc.). The other problem is that there are too much work involved to maintain these external libraries.
Apparently these can be solved by using new tools named Composer and Pyrus. I have not tested each of them extensively, but I have just revisited Composer and found I like it better purely based on their documentation. Mostly because I like the fact that I can maintain my current project layout.
Triplestore
I used redland with MySQL backend in the past, and it was really slow for a dataset that contains a million or two RDF statements. Something must have gone wrong somewhere because the author claimed that it is scalable and should be good enough for use with 10M statements. While I am trying my best to steer away from anything that is related to Java (yes, personal prejudice again), I have recently found this 4store. I have not done any work with it and is still trying to find out more about it. For now, I know it should be sufficiently fast, and has a http interface for CRUD operations.
JSON-LD
I never like XML, very much because of its verbosity. So I am kinda happy when I first heard about JSON-LD. While I shouldn’t compare RDF to JSON-LD directly as there are a couple of differences, but I am still liking it for its simplicity. I guess I would start using this format in future.
Functional Javascript
I like functional programming a lot, especially after picking up Clojure back then when I was building the prototype for my postgrad project. However for some reason I stuck with PHP, probably because I am too familiar with it. Fortunately they introduced a couple of new things in their recent releases so I can abuse it the functional way.
However for javascript I have always liked this functional library made by Oliver Steele, although I don’t see myself using it for real work. However I have briefly used underscore.js for a quick project. While it doesn’t feel as “functional” (is it a valid statement?), I like its syntax as it reminds me of jQuery. Guess I am a very spoilt coder.
Gearman monitoring
I like gearman, but for some reason I couldn’t really find something good enough to monitor it through my web browser. While it is fine checking it through the cli, but it would be nice if it is presented in an organized/formatted way. I have found this Gearman UI project, and would probably put it into test when I start re-building my postgrad project.
Drupal 8
Apparently more OOP syntax is creeping into Drupal’s core. I would have liked this to happen few years back but not quite these days. Anyway, I suppose the decision is very much an informed one, and shouldn’t cause much impact to developers like me.
However, I am kinda shocked when I heard about backdrop. From the looks of it, it feels like a much simplified Drupal. We shall see where it is going in the future.
This pretty much wrap my random notes about the tools that I will be using in the future for now. I am sure there are a lot more I have missed.