Monday, August 9, 2010

Redesign of CIlib core for 0.8 release

The release of CIlib 0.7.5 will be out soon. We anticipate that this will be the last release of the 0.7.x series of CIlib and work will begin on the new 0.8.x series soon.

With 0.8, a few (large) changes will happen to the core CIlib library. Firstly, we are decoupling the simulator from the library completely. This means that the core library will be exactly that, a core library. Some design desicions made in the past are coming back to haunt us, so we'd rather just fix the problem instead of making it a known issue and living with it.

Additionally, the objects in CIlib currently know far too much about the objects they use etc. The core will migrate to use dependency injection (the hollywood principle) so that:
  1. Testability will be a primary concern.
  2. Lots of redundant code will disappear.
  3. The cleanup will mean better code for the users of the library.
I encourage you to chat to us on the mailing list about these changes, they are long overdue and I'm looking forward to making the changes which will mean a better library.

Thursday, July 29, 2010

Why I hate XML with more ferocity than a rabid dog

Right, so.... XML.

Yet another technology that has been misused and abused by the world. It's got it's uses, sure, but they are mainly directed to storing data for transfer between unrelated external entities.

Now, using XML just "because" is a silly idea. Period. I have never understood why people want to use XML when a plain text file can achieve the same effect. Processing and parsing XML with the libraries of today is terribly painful, I don't think anybody can argue with that. Some tools make it simpler, yes, but the verbosity of the representation results in far too many complications. Now add a schema into the mix and you will have a melting pot of things that should not exist in reality.

I hope this XML fad disappears sooner rather than later.

Monday, May 17, 2010

License updates

After receiving numerous requests to have the default license of CIlib altered, we have changed the license to the LGPL from the GPL.

This change should result in our users linking to the library much more simply. Well, that's about that. Head on over to the website and the forums for more info.

Sunday, May 16, 2010

Getting functional

Recently, I've been doing some work in other languages such as Python. I must say, after the initial annoyance, the languages have become rather pleasant to use.

The biggest benefit was the ability to quickly get complex movements of data performed with very little effort in terms of the amount of code that I needed to write. The "functional" way as it were is, in one word, fantastic.

The paradigm advocates immutability (which I absolutely agree with) and concise statements whereby boilerplate code is kept to an absolute minimum. As a result of this, together with my enjoyment of Java has spurred me on to start learning Scala, the best of both worlds as it were. By learning a new language, I hope to improve the APIs available in CIlib. Such improvements will ensure that we focus on the intentions of the algorithms etc and not get bogged down with the implementation related difficulties.

I'd love to one day write concise statements like:
topology.foreach(calculateFitness)