Archive for the ‘Raydo’ Category

Five Reasons Why You Would Want To Build Your Own Messaging System

Wednesday, November 5th, 2008

Now, I write this , and I hope the people that read it take it in the way that it is intended. Light, humorous , constructive criticism. You guys know who you are, and if you read this I owe you a beer.

Messaging systems are becoming just part of the infrastructure. A commodity product in the last couple of years. As an end user, would you write your own mail server ? Your own word processor ?

In the distant past, like 2005, you may have had a lot of good reasons to write your own messaging systems. Cost, dealing with TIBCO, etc. But this is 2008, and times have changed. You did not have the open source software you have today back then.

So here are the five reasons you would want to write your own messaging system.

[1] YOU ARE STUPID

Really, why would you spend all the time and man power to build a messaging system ? If you really wanted some feature, you could put your time into one of the open source messaging systems. Think about it, how long would it take you to build a messaging system and how long would it take just to make sure one of the open source ones fits your needs?

Think about sunk costs, time to market and anything else you want and it is a losing situation.

[2] YOU ARE UNIQUE IN THE WORLD AND HAVE A NEED NO ONE ELSE HAS IN THE WORLD

Sure there are specific needs, but I have not seen a specific need that could not be met by extending a current messaging system. That being said, not everything needs to be on a messaging system. If you are that unique, a different system may be better anyway.

[3] YOU DO NOT REALIZE THAT THERE ARE OPEN SOURCE MESSAGING SYSTEMS

This is common. AMQP has only been around for a couple of years. It is not as mature as one would like, but they are up and coming. RabbitMQ, OpenAMP, Qpid. Check them out. JP Morgan Chase uses them for millions of messages a day in production, so it is pretty good.

[4] YOU WANT TO SELL/WRITE A MESSAGING SYSTEM

Yeah, then you would have to write your own.

[5] THERE IS NO FIFTH REASON


If you disagree just leave a comment in the box below. Or any other place you want, I just might not read it.

Mercurial

Sunday, November 2nd, 2008

Well, some of you may have wondered what I have been up to. Or maybe not. It has been a while and I have been doing a lot of things and some of them even with Raydo. :-)

So in a way to catch up, here is one thing I did. I moved away from SVN to Mercurial (hg). I did it in steps, first running svn and hg at the same time, and later just stopped committing to svn. Then i just went cold Turkey and turned off SVN, deleting all the files from the public server.

MADE THE SWITCH

First, I have switched to a DVCS, Mercurial.

Mercurial is a cross-platform, distributed revision control tool for software developers. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C. Mercurial was initially written to run on Linux. It has been ported to Windows, Mac OS X, and most other Unix-like systems.

That blurb, was courtesy of WikiPedia. hg makes it very easy to switch. They are used to co-existing with svn servers. They play nicely together and that is good for everybody. They use two different directories , .hg and .svn so they do not conflict.

WHY?

One of the main problems when working on multiplatform code, is the version control system. a DVCS is so much nicer ( In addition to just being plain better ) when throwing code around. Say I am working on a getting some code working on Linux that works fine on the mac. I want to test out things to see if they work. I can check in code locally, and develop until it works. Sync with the mac, then once I am done , send it to the canonical mercurial server.

I was running on a local svn server , which was fine, but I did not want to constantly leave it on AND I wanted to be able to check code in when [1] I was not on my local network, and [2] I was not online.

THE OTHER DVCS

Yeah, I tried Git, and it was just a pain on Windows. Sure, I am not a big fan of windows by any means, but Git is just hostile toward Windows. With the linux kernel guys using Linux, I think Git will be around for some time. In fact, I would say going forward Git is the leading contender if they can get their stuff together. bzr is coming up a distant third in the race behind mercurial.

Heading Back To The Windy City

Wednesday, October 29th, 2008

I will be back in Chicago for about a little over a week. Just catching up with everybody and doing meetings.

Mmmmmm hot dogs. Only in Chicago…..

Drop me a line if anybody else will be free next week.

‘Databased’ Unit Tests

Friday, March 14th, 2008

I know ‘Databased’ is not a word. But it was the best word I could come up with. What I am doing now is connecting my unit test output to a MySql database.

By putting the unit tests, I can look back and see when things failed, which help when I pull old files out of svn. So I can sort by pass/fail test ( which is the most common method ) , the test performed and the class.




This image above is RUnit.php . I will include this file in the php/ subdirectory. It only has three parameters to modify at the top of the file and that is about it.

I use a simple homegrown unit test framework. Yet another C++ unit test framework, like we need another one. I needed a much less specific framework. But a very simple framework.

I use cron to do automated tests. I pull the latest copy out of svn, compile run the unit tests, and store the results in the database. It is pretty sweet, but I do not have the failed compiles feeding into the database yet.

Symbology and the big change

Monday, March 3rd, 2008

About three years ago , the guys from the OCC got togethter and decided to make changes to the way options are quoted by the market. For an example, The Mar 08 120.00 Puts have the symbol QAAOD while the Mar 08 125.00 puts have the symbol APVOE. So after a few years of work, they came up with this :


Mar 08 120.00 Puts
QAAOD -> AAPL080322P00120000
( AAPL 08 03 22 P 00120 000 )

Not really too difficult to figure out the coding on this system. There are a lot of details concerning things like FLEX options and stocks splits/mergers etc. The big change is due for July 2009, so a about a year and a half we will have to move over. The old symbols will be suppressed after that date.

What does this have to do with the price of tea in China? Not much ( but you can check the tea futures contract ) and not much to do with Raydo.

Internally, we already use the new structure. Just an input filter to change the old symbols into the new symbols. After the big change, we will just drop the filter.

Cross Compilation So Far

Thursday, February 14th, 2008

    Arrgh. Cross compilation. Never an easy task. Well, it is not that bad except for Windows. Everything compiled the underlying Raydo library and almost every platform compiled the GUI. The only holdout was Solaris 10.

    I was a little negative in my last review of Solaris 10. I do like Solaris, I just think they do not have their stuff together. Solaris has always been geeky, and that influence shows. Sun is trying to make Solaris much more user friendly, but they are letting the geeks do it. Sure, they have the designers and such on the team, but the GUI does not feel ‘finished’. Oh, and they still include CDE ! Crazy stuff.

Platform GUI Raydo Lib
Solaris 10 No* Yes
Windows 2000 Chinese Yes Yes
Windows XP Yes Yes
OSX 10.5.1 Yes Yes
Fedora 8 Yes Yes
Ubuntu 7.10 “Gutsy Gibbon” Yes Yes

    The GUI on Solaris was a no go because wxWidgets would not compile out of the box. I have not spent that much time on it, but the underlying Raydo Lib does work, which means Solaris can work as a server for the system. When I get some time, I will go back and try to get the GUI to run with the Sun compiler.

    One thing about cross compilation is that on every platform except Sun, I compile with gcc.

Interface Ergonomics

Tuesday, February 12th, 2008

    I am a big believer in interface ergonomics. Let me define what I mean by ergonomics in an interface. An ergonomic interface is one where the user feels comfortable using the application. Where using the interface feels intuitive. Clean, consistent and productive interfaces get the GUI out of the way so the user can spend his time using the software. I think my time at Apple ( Macbook Air…drool…. ) years ago has forever changed my perception of how user interfaces should work.

I would like to share three of my favorite links.

    The first one, Ten Ways to Make More Humane Open Source Software has a big of a misleading title. Is should be something like “10 ways to not mess up your GUI”. It is a great article, and well worth taking a look.

    The second article The Rise of Interface Elegance in Open Source Software. This article is more about creeping featuritis and learning to say no.

    The last article The Luxury of Ignorance: An Open-Source Horror Story, is a bonus. Just a rant on how difficult some interfaces are and mentions “Aunt Tillie”.

Here is a great rule from Joel on Software on UI design.

A user interface is well-designed when the program behaves exactly how the user thought it would.

Three reasons Sun Sucks at OpenSolaris

Monday, February 4th, 2008

    They really do suck at marketing OpenSolaris. I don’t know how much they want to be in the Ubuntu / Fedora space. OpenSolaris has live disk ( finally ), so you can try it out.

    I spent a lot of time last week trying to get my application up and running. I did not spend time debugging or anything productive like that. I spent most of the time doing other things waiting for downloads.

    So, here is my first reason. The line between OpenSolaris and Sun seems to be as distinct as mud. You are bouncing back and forth between the two sites. One site for this, one sie for that.

    The second reason is the Sun Java Downloader is just evil. I never could get a complete download. My favorite error message was that I had completed too many successful downloads and would not let me download anymore. I guess for Sun, successful is zero. I finally downloaded the Indiana Developers Preview using bittorrent which is light years ahead of that Java thing.

    Finally , what is happening with Sun studio ? I download a copy of OpenSolaris and I have to go to Sun to get Sun Studio? Can’t you just admit that gcc is a good compiler and included it on the live CD.

    All that said, I really do wish to get my stuff running on OpenSolaris. Then again, I was really frustrated with Fedora a few years back. Redhat turned that around, and I think Sun will also.

    I added a link to Lawrence Scott’s blog. Not much there now, but I think he will start writing more.

Raydo-Announce Mailing List

Thursday, January 31st, 2008

    I have set up a mailing list for announcements. A low volume list, so it won’t clog you mailbox. I think MAYBE once a month. Drop me an email and I will put you on the list. info @ raydo.com

CMake

Thursday, January 24th, 2008

I am testing out changing the build system to CMake. I want to make building Raydo as simple as possible. Right now I use make, which is not the friendliest way to build things. By using CMake, I can supply , for example, Visual C project file.

So to summarize:
Open Source
  Supports basically every UNIX, MS Windows (MSVC, Borland, cygwin, mingw) and Mac OS X
  Can generate Makefiles and *projects* for KDevelop3, MSVC 6,7, XCode
  Has no other dependencies except for a C++ compiler

So I will be able to supply Windows guys with project files.