9 December 2011

Update-ish

Hi Folks. Sorry for the quiet, I have too much to say, deterring me from being able to make a coherent sentence, little less a whole blog post. There's plenty of stuff in the woodwork, and it will come out fairly soon, I promise, including a book I'm writing. However, I've been doing lots of smaller stints at my Google+ channel with drips of ideas and good stuff found elsewhere. I think that that will be my platform from now on, where here on the blog I'll do the bigger and more serious stuff, while the Google+ channel a more constant drip. I've given up on Twitter as the noise was unbearable, and Facebook is ... well, I can't really use that kind of language in front of you good people.

Here's a quick update; family doing good (and my girls exceptionally so, with grades through the roof, talents earning them rewards), we're more settled these days, plodding along with our various more or less interesting projects. I'm taking a bit more pictures which I'll showcase later, a few videos, art, music, etc. The girls are really getting good on violin, and we've started up a string ensemble (if you're in the Kiama area and play either strings or classical, come and have some fun with us! There might be a oboe-player nearby). Works fine. Life's normal.

in more technical news, xSiteable - my latest project that mixes Topic Maps with all sorts of event-based plugin fun using PHP - is that I've spent a lot of (possibly too much) time on the database side of things, creating a common xPath-based simple query language that is SQL, NoSQL and XPath compatible, and a host of ready-made plugins for it (PDO, SQL Topic Maps, LDAP / AD, session, array). The way to describe various parts of your data then becomes a cached layer of reusable nuggets of data, like " $data->get ('some-identifier' ) ", no matter where in the application it gets called, will always refer to the same data, cached or create based on definitions elsewhere (so, using a rather declarative approach in which, I feel, you can define what your application does better than any other approach I've used before.

For example, each plugin can define data sources, queries (with or without parameters) using the global query language, or ask if it's allowed to use the native language (and mostly it is, but some times you may wish to not do that, for example in core modules and such). I use events for application flow, so for example handling of users are done through the events XS_ON_USER_BLANK, ..._CONFIG, and ..._CHECK which other plugins can hook into to provide user credentials or services back to the framework.

I'm also revamping the content management and document management / store aspects of it, making sure that I don't fall into pitfalls of persistent identification, nor that I cause trouble later. Every part of the application hooks into events, and each part of the screen are rendered through them, so you can inject snippets of GUI into various parts based on them using a layout module (for example, if the GUI renders a document, a button can be injected that does something, like add the ability to share a document, or whatever, you decide). Events, events, events. I've hence also made the event handler a bit more robust.

Finally, I've made everything even more RESTful, even internal services are done through REST. Want to add a menu item to the main menu? POST your item to the resource for the menu module. And so on. Every module and plugin has a resource assigned, and the "API" (I use that term loosely) is through that or a sub-set. I've even designed the data management back-end this way, so any data source you define will have an automatic RESTful API to it, if you allow it.

Security. Yeah, working on it, and I'll explain it better later, but it's almost done as well, where any object have a CRUD self / CRUD sub-elements RESTful model. More on that later.

Ok. It's the weekend. Have fun, and I'll see you on the other side.