Working with LimeSurvey’s RemoteControl2 JSON-RPC API in PHP

Recently, I needed to switch away from SurveyMonkey, which, while still a useful free service for quickly collecting some basic Survey results, leaves much to be desired in terms of what they offer in their basic version. Of course the fully paid versions offer significantly more functionality, but the upper-end of the pricing schemes that do everything I needed are just way out of my price range for small individually-funded and/or non-budget independent projects.
This lead me to LimeSurvey (formerly PHPsurveyor), the leading open source web-based Survey data collection software, with a back-end written entirely in PHP.
Getting LimeSurvey installed on my own server was incredibly easy, just download the latest release version and upload the files via FTP. Then load the installation script and it will guide you through the remaining install steps (which are basically just setting a username/password for the administrator account, as well as database configurations such as connection info, table naming, etc). Pretty standard fare for a long-running open source PHP project with a solid development community in place.
What really set LimeSurvey apart from the alternatives though, was the extensibility offered by its API, dubbed RemoteControl2 (with support for both XML-RPC and JSON-RPC).
I had initially started out with XML-RPC since I’m kind of a nerdcore “semantics” guy, and favour XML over JSON for most server-side integration use cases (unless I’m publishing data for client-side consumption, then I almost always favour JSON). The reason, well there simply are way more tools and methodologies already in place for XML than JSON and the reliability mechanisms built into XML such as well-defined schemas (DTD/XSD) which provide data validation, namespsaces (ns) which prevent conflicts in name/value label namings and help ensure you get the right values when parsing, stylesheets (XSL/XSLT) which allow for on-the-fly transformations, query languages (XPath and XQuery) which simplify data filtering and extraction tasks, and XML security mechanisms such as Digital Signatures which enable better security. However that’s all sure to start a debate on here.
The point is, I wanted to go XML-RPC, I really did! However I have to say, the simplicity of their JSON-RPC API which seems particularly well-implemented won me over.
So here’s what I made, a simple Survey response submission script that I call “limesurvey.collector.php“:
Read the rest of this entry »
HTML5 Audio version of the iconic Flash XSPF Player

The XSPF Music Player is one of those “history of the web” old-time greats. It is a Flash application (SWF file) that was originally created by Fabricio Zuardi in late 2003 and which gained massive popularity and widespread usage between 2005-2008 in the beginning of the Web2.0 renaissance after the post Dot Bom era (aka. end of the Web1.0 timeframe).
Music in Web2.0
Everyone was extremely excited about the possibilities of two-way publishing of content (known as the User-Generated Content revolution) that was lead by blogs like your’s truly, and, new web technologies like the XSPF Music Player we’re talking about today. It was a simpler time. A time when MySpace was taking over from Friendster as the leading Social Networking Service (SNS) and every VC wanted a piece; Facebook wasn’t even created yet, soon to enter its early days in a Harvard dorm room. Yes, believe it or not VC investment in “new and upcoming SNS startups” was actually a thing! Good luck now if that’s all you’re offering, you’ll need a lot more unique technology stack than basic Social Media capabilities to dethrone the likes of Facebook.
Read the rest of this entry »
BC$ = Behavior, Content, Money

The goal of the BC$ project is to raise awareness and make changes with respect to the three pillars of information freedom - Behavior (pursuit of interests and passions), Content (sharing/exchanging ideas in various formats), Money (fairness and accessibility) - bringing to light the fact that:
1. We regularly hand over our browser histories, search histories and daily online activities to companies that want our money, or, to benefit from our use of their services with lucrative ad deals or sales of personal information.
2. We create and/or consume interesting content on their services, but we aren't adequately rewarded for our creative efforts or loyalty.
3. We pay money to be connected online (and possibly also over mobile), yet we lose both time and money by allowing companies to market to us with unsolicited advertisements, irrelevant product offers and unfairly structured service pricing plans.