Archive for October, 2007

YAUT - Yet Another Unit Test framework

Wednesday, October 31st, 2007

I have been putzing with unit testing frameworks all week. I could not find one I really liked. First a lot were too complicated for my purposes. Most of my unit testing exercises computation. Making sure 1 + 1 is 2, is what I really , really need. The other gripe I had is the text file output. I want somewhat is databaseable. I want to look back and see when something stopped working, with out digging thru a lot of files or doing the svn thing. You know, pulling out old copies, running the unit tests to see where things broke. Granted, I only had to do that a few times, mainly when I had a busted import into svn. Oh, and I wanted the same output accross implementations since the interfaces will be developed in parallel.

So I decided to write my own. Not as featured as JUnit, CUnit, G-Unit , but functional. It has databaseable output and fits in a header file in C++. So that is getting dumped into svn, but it won’t be in the release for a while.

And I know databasable and putzing are not real words.

Version Numbers

Monday, October 29th, 2007

Raydo version numbers follow a specific order. Hopefully, this will help keep everything straight.

[major version][minor version][release number][c|g]

A major version release - A new install or upgrade is necessary
A minor version release - A change in functionality that might require a small database upgrade

The [c|g] represents either a commercial or GPL release.

Amalgamated Header File

Friday, October 26th, 2007

We are moving to an amalgamated header file. The development version will still have the separate header files for each class/group of classes.

Raydo is a header only development library. Just include one file in you application to use the framework.

There were too many header files originally and it is much easier to have one include file. The mutiple files will still be there if you need them.

We Look at the Buy Side

Monday, October 22nd, 2007

In an answer to an email query, on what is Raydo used for, buy side or sell side, I just wanted to clarify.

BUY SIDE FOR NOW

Now, will we always be buy side ? Who knows, but I know buy side, and most of the needs are buy side. Now we are buy side, buy it can also be sell side as in market making and liquidity providing. However , the production code that is used day in and day out is buy side.

Now when we start market making everyday, we will of course spend more time on the sell side. It is just right now, we use / watch / play with the buy side every day.

SQLite & Raydo ( What’s up with Java ? )

Wednesday, October 17th, 2007

    When I started Raydo, I wanted a very easy to use framework. Something that would not take too much time for others to use/develop, etc. So I went with a C++ framework for speed.

    All is good, except there is a lot of java code in this space, even if it is slower than compiled C++. Yes, I know about gjc.

    I would like to implement a native java driver into the source code for sqlite. That will give us a mixed mode environment in the future. Raydo ‘lives’ on the underlying database, so if I was to include java, the database would have to be accessible. And when I mean accessible, I mean easily accessible. Not requiring users to jump through a billion hoops.

    So when I can add sqlite support to Raydo, I will start rolling in the Java code I have.

Install script

Sunday, October 14th, 2007

    I have added the first version of the install script. Only for POSIX type boxes ( Linux, OSX, HP-UX ) It is for the single box/instance version.

    The install script is for running the software on a single machine and using the SQLite database. You can run it as follows.

./install_single_sqlite.sh

Signals & Slots

Friday, October 12th, 2007

    Raydo uses the Slots and Signals pattern for communication. So just as an aside, I want to give a little background on this design pattern. We are using two models for signals and slots, and have not decided on which one to use. We may keep both.

    Signals and slots is a language construct (originally used by TrollTech in their QT project ) to implement the Observer pattern avoiding boilerplate code. A signal to slot connection is the same as the Design Pattern Observer

    The concept is that objects can send signals containing information which can be received by other objects using special functions known as slots. The signal/slot system can be used for asynchronous I/O including sockets, pipes, serial devices, etc.

SQLite database plugin

Wednesday, October 10th, 2007

    I have implemented sqlite as the first database plugin. It is not really a ‘plugin’ in the sense that you have to compile it in, but in the sense that it is a pluggable architecture. I am using a factory pattern as such., however I think that most users are going to pick a database and stick to it.

Open Source Market Making

Sunday, October 7th, 2007

    Raydo is an open source platform for creating MM , Algo and automated trading systems. So to give you an idea of what we do, here is the obligatory list.

Multi platform - Linux AND Apple OSX
Java and C++ API's
Open source ( GPL v3 )
Cluster Mode