Monday
08Dec2008

A Slight Shift in Direction ...

Well, it’s been an embarrassingly long time since I last wrote anything here. That is primarily because my focus has taken a sharp shift towards the practical during the last year, which has been taking me up a long and frequently painful technology learning curve … as well as rather rapidly down an interesting ‘unlearning’ curve.

Things really got started when I followed up on the enthusiasm of a couple of friends and started to explore Ruby on Rails as a potential web development environment. Up to that point I had lots of ideas, but only the vaguest notion as to how I might ever get them actually developed. Looking at Rails and Ruby, I started to feel as though it might actually be practical for me to consider doing the development myself - despite having spent most of the last two decades primarily as a ‘theoretical technologist’ ;-)

Despite the initial attractiveness of Rails, it didn’t take me long to come to the conclusion that it wouldn’t actually suit my needs. This is not because of anything ‘wrong’ with Rails itself, but primarily because it is founded on the idea of Object-Relational Mapping (ORM) for its persistent data storage model. I had long ago come to the conclusion that the relational model is really not well suited to the kinds of systems I am interested in developing - and putting an ‘object’ veneer on them doesn’t really help much.

Ruby, however, is a different story. Despite starting out as a ‘scripting language’, it has a great deal of power and elegance. After doing a great deal of reading, I finally felt that I knew enough to try some ‘real coding’ in September. It took a while to get through the initial frustrations of having to look things up every time I wanted to try something new, but in the end I felt that my initial impressions were correct, and that this was a language I could work with.

My initial project was to come up with a persistent storage model that would suit my needs. For a variety of reasons this has been taking longer than I would have liked - although in retrospect I can’t say that I find this terribly surprising. Apart from dealing with some of Ruby’s nastier quirks - and a woefully inadequate debugging environment - my biggest challenge has actually been unlearning most of the stuff I thought I knew about database structuring techniques !!!

I always regard a serious effort at unlearning as being a tremendously good foundation for any serious attempt at innovation. As conventions and practices get settled in, codified, taught, and become dominant in the marketplace it can become extraordinarily difficult to dislodge them - especially within the constraints of a commercial enterprise. Working outside the system, as I currently do, feels amazingly and refreshingly unconstrained compared to my corporate days :-)

One of the prime motivators here is Ruby’s serious indifference towards size constraints on variables. Even its Integer types can freely expand from Fixnums (single words) to Bignums - arbitrary sequences of words strung together. String types are equally flexible. There are simply no mechanisms in the language for directly constraining the size of string containers - unless you decide to do that yourself.

This immediately creates an ‘impedance mismatch’ between Ruby and (most) relational database implementations, which tend to require specifications of the maximum sizes of fields (columns) in tables. This in turn tends to stem from the convenience and efficiency that fixed ‘record’ sizes allow in data storage and indexing models.

Anyway, to cut a long story short, I decided to make a virtue of this ‘limitation’, and see what happened if I tried to produce a persistent storage model that made a virtue out of ‘variable everything’. Although this is still work in progress, here is a list of some of the core elements so far:

  • everything is stored in a single operating-system file.
  • containers consist of arbitrary-sized items accessed via an ‘internal index’ in arbitrary-sized blocks.
  • there is a master block index (which is itself a container) for managing allocated space (containers and free blocks).
  • items are always identified by a system-generated surrogate key rather than an application-defined ‘primary key’.
  • indexing containers are used for providing ordered views onto item containers.
  • containers currently have a single schema for all their items (much like relational tables) - although that is set to change in the very near future.

 Plans for the near future include:

  • support for a much more flexible schema model.
  • support for transactions - including automatic histories of item versions, along with rollback and rollforward capabilities.
  • the ability to support subblocks within containers to provide more stability for the space-management algorithms.
  • the ability to federate knowledge stores - which is absolutely necessary for any kind of modularity model for data - something that is notably lacking in (most) existing persistent storage models

This is still a long way from my goal of supporting very high-level semantic models, but on good days I can see a reasonable chance of getting there!

I’ve found that terminology is remarkably important. Instead of talking about ‘databases’ I talk about knowledge stores. Instead of talking about tables, I talk about ‘containers’. I’ve found that keeping this emphasis on different terminology helps significantly with the unlearning process, and also helps to keep me from getting sucked back into conventional modes of thinking.

So far, there is nothing terribly radical here from a conceptual perspective, but we are still in very early days. Stay tuned for further developments, hopefully I will write more frequently now that I’ve laid some foundations …

Ian

Sunday
25Nov2007

Article: Communication and Understanding

Although I have a wealth of topics to write about, finding a good starting point proved to be more difficult than I expected. I ended up choosing Communication and Understanding because it focuses on some key foundational aspects that permeate pretty much everything else.

The article starts off by exploring specific difficulties encountered in cross-disciplinary communication, illustrating the difficulties caused by lack of common ‘conceptual infrastructure’. Although the primary quotes are taken from a mathematical context, I believe that they should be accessible to anyone.

It goes on to explore some aspects of ‘being multi-disciplinary’, as well as the specific challenges involved. We then change course slightly and focus on the fact that symbolic representations can be highly condensed when sufficient background understanding is available.

Finally, I take the opportunity to (rather sketchily) introduce some aspects of my notion of ‘artificial persons’, as an illustration of what happens when you try to throw computers into the mix.

I’ve posted this in a new folder: Articles.

Comments welcome!

Ian

Monday
12Nov2007

Influences

I’ve created the Influences folder to contain articles about people (and ideas) that have influenced my thinking on these topics in significant ways. For now it simply contains an initial list of individuals.

Monday
12Nov2007

Site Map and future topics

While trying to organize my thoughts about what to write about next, I figured it would be useful to make some kind of topic list. Then I figured I might as well make this available on the site itself. Then I figured that I might as well just make a Site Map page that can track what I’ve already written about as well as what I expect to write about in the future.

I expect this to change frequently, although I won’t normally post anything advertising that unless it involves a major revision.

Ian

Saturday
10Nov2007

Book Plan

When I first started developing the idea of future-generation knowledge infrastructures, I figured that the best way to explain them would be to put them in a book. As I started to develop the book plan, I realized that I would need to target different books at different audiences, so one book eventually turned into 6 !!!!

Eventually I realized that I wouldn’t be able to make any money from the books, and that is what gave rise to this website / research blog. Nevertheless, I believe that the original book plan is still a very useful way to organize and think about the materials. So I’ve created a Book Plan folder and an overview of the plan.

As time permits, I will add pages on each of the books in the plan and their proposed contents.

Ian

Friday
09Nov2007

Timejumping

Radical Innovation requires the ability to think differently. Like any other skill or talent, this needs to be developed by deliberate and regular practice.

I’ve created the Thinking Differently folder as a place to hold descriptions of these kinds of exercises.

The first one is called Timejumping. It involves imagining the future at specific timescales by comparing them with similar timescales in the past.

Timejumping can be used very effectively for understanding possible rates of change in near-term (3-10 year) settings. However,  for really getting yourself ‘unstuck’ from today’s dominant paradigms and intellectual fads and fashions it is particularly useful to apply it on long timescales - 100, 300, 500, even 1000 years.

I’ve used this technique for many years, and it remains one of my favorites. I think I first came across something like it in one of the late, great Robert Anton Wilson’s books. However, I believe that the specifics of the approach I’ve described here (using very specific time periods) is original. If you have any reason to believe otherwise, please let me know.  

Enjoy … Ian

Thursday
08Nov2007

Welcome!

Well, this is my first post as I venture into the world of blogging.

I hope you enjoy the site as it develops. Please see the Welcome page for a more extensive introduction to what ParaChange(tm) is all about.

Ian