Archive for April, 2011

T-4 Days and the Stress is Building – Drink My Own Kool-Aid

Tuesday, April 12th, 2011

cubeLifeView.gif

Today has started out exceptionally stressful. I've got a few guys helping me that are not doing so well, and some don't get the urgency of the impending deadline. It's all building up to a ton of stress and I'm starting to be a touch sharp with people. After all, if we're supposed to be done in four days, why are you asking me about a point that should have been worked out a long time ago?

It was getting pretty out of hand.

Then I realized that I wasn't taking my own advice. Specifically, that advice I gave my daughter about her test anxiety. "Don't worry about the grade", I said. "Focus on the knowledge, and the tests will take care of themselves."

Good advice, in my book. But I wasn't listening to it. I wasn't listening at all.

I've been letting this arbitrary deadline I didn't agree to get to me. I'm working 12 and 13 hour days and it's been a nasty couple of weeks. I've resented having to slow down to help people. I've resented the slower people in the group hassling me about giving them work. I know they mean well, but really? I work four times faster than you do. Giving work to you is slowing me down - even if you never ask a question.

But that's not really the point, is it?

Isn't it about trying my best to bring these people along? Helping them see how they can be better at their craft? I think that's the point.

I know there's no way I can't be seen as giving it my best.

More Fleshing Out – We Just Might Make It

Monday, April 11th, 2011

Today was spent doing a lot of fleshing out of C++ classes. It's getting a lot closer, and we might actually have something to test by the end of the week. I'm as shocked as anyone because there's still a lot to do, but if we keep making good progress, it's possible to have something that's running in development - very roughly by the end of the week.

Wow.

Ugly Inheritance Problem

Monday, April 11th, 2011

Today I fought a nasty C++ inheritance problem. It's not that I wasn't expecting some problems, I just didn't expect the kind of problems I ran into. The design is a pretty standard one for the finance industry for tradable instruments:

Original Design

There are clearly two diamond problems in this model: the first is ending on the Future and going back to the Instrument, and the second is ending on the Stock and going back to the Underlying and Instrument.

Interestingly enough, I was able to make the blue inheritances virtual and it all compiled. But when I tried to run it, I got constructor problems in the Instrument class that I should not have gotten. Clearly, there was something more going on here, and I had to be more explicit.

Alternatively, I could look at the design and realize a few facts:

  • The only Futurable Instrument is a Stock - seems odd, but with this model, that's all that can have futures on it. We can certainly throw indexes and other instruments in the "stock" class, or even further subclass it, but it's a nice simplification.
  • All Underlyings are Optionable - again, because of the way the design is laid out, it's clear that the Optionable feature can be incorporated into the Underlying without limiting the model.

The only problem with these two simplifications is that I can't have something that is Futurable and not Optionable. As I think about what I've done in the past, I think this is a fairly good bet.

With this, the design becomes much simpler:

Revised Design

This has only the one diamond problem, and it's easily solved with the virtual inheritances shown in blue. It's also a lot simpler to see and understand, and there are no "placeholder classes" that simply have to be there for classification purposes. I'm not sure I like this a lot more, but it's cleaner and it'll work better, and has fewer moving parts, so on the whole, I like it more.

T-5 Days and Counting

Monday, April 11th, 2011

It's now 5 days before I'm supposed to be delivering a working greek engine to QA at The Shop, and while there's still a slim possibility that it'll work, I have so many doubts about things that aren't done it's hard to really think it's likely. Then again, getting even close is a victory in my book - after all, I was only given 4 weeks to do this, and I would have bet it would have taken twice that at a minimum.

Still... I've got five days, so let's make the most of them...

Coding Up More Implementations

Friday, April 8th, 2011

Today has been another long day in fleshing out the implementations of the headers a co-worker has put together for the greek engine. He's had the most experience with the model in use, and the gotchas with the data going into said model, so it makes sense for him to define the headers to a decent point, and then several people can take it from there.

It's not particularly exciting work, but it needs to get done and seeing as how we're a week away from "being done" (so the target says), there's no time to get attitudes about what kind of jobs there are to do - you just do everything you can to move the project forward.

One Possible Advantage to an IDE – C++ Namespace Rename

Friday, April 8th, 2011

This morning I've come across a real possible good use for a C++ IDE - renaming a namespace in all the places it exists. I realized that when I had the namespace AppKit in another project and wanted to use it in the greek engine project, I couldn't have eng::AppKit because the compiler couldn't tell what to do with:

  AppKit::Message msg;

Is that AppKit on it's own, or in the context of the eng namespace? I knew which one it was, but there wasn't any way I could fine to make the compiler understand that fact.

Also, I knew that the namespace was badly named. I just didn't understand how widely these things would be used. My fault. So I tore into the code with Vim. There's lots to like there, but doing a massive change like this is just not all that easy. It's not hard, it just takes time.

If an IDE could do that, I might have reached for it. But I didn't know one, so I toughed it out.

TimeMachine on Mac OS X 10.6 is Amazing

Friday, April 8th, 2011

SnowLeopard.jpg

This morning I wanted to hook my new MacBook Pro up to the existing TimeMachine backup stream that I've had going for quite a while. The problem is that in the past, it's been a someone manual operation, and with the loss of the ACL control app in Snow Leopard, nearly impossible. But I was being silly, wasn't I?

Turns out, that in Snow Leopard, if you just hook up an existing TimeMachine drive to a new machine, it'll ask you if you want to continue with this backup set on the new machine! This is exactly why I love Apple. They think of these things, and plan for them. In the past, it was manual, but now it's automatic.

Gotta love these guys!

Building Combined Pricing Feed for Greek Engine

Thursday, April 7th, 2011

This afternoon I got the combined pricing feed for the greek engine working. It's not that hard - just a combination of an existing UDP exchange feed and a receiver of the legacy data with a little NBBO engine thrown in to generate the NBBO quotes for these options. It's nothing that amazing, but it needed to be put together as a unit so that it's a lot easier to use than glueing all those pieces together in the greek engine.

Not glamorous, but it's got to be done.

My New MacBook Pro is on the Truck!

Thursday, April 7th, 2011

MacBookPro17.jpg

I looked at the tracking for my new MacBook Pro from Apple and noticed that it was out on the FedEx truck for delivery! I like tracking it from China, but I like even more the idea of getting an amazing new laptop! This guy has the fast i7 processor, with 8GB RAM and the 512GB SSD. I know that my existing Core 2 MacBook Pro will seem very slow in comparison.

Quad core... I've been waiting for that for a long time. And even the memory is faster. This is going to be a major upgrade. I'm really jazzed about it.

Upgraded to WordPress 3.1.1 at HostMonster

Thursday, April 7th, 2011

wordpress.gif

This morning I had an interesting little problem - WordPress 3.1.1 was released with a few nice little fixes, so I went to HostMonster to update my installs. The problem was that since that odd little 3.1 double upgrade, I was unable to upgrade to 3.1.1 because SimpleScripts was saying that the version number was wrong. Not cool.

I'd been upgrading every time SimpleScripts instructed me, but the second upgrade to 3.1 didn't seem necessary, but I did it anyway - and everything worked. But it wasn't without consequences, it seems. So I had to cancel that update - which wasn't obvious, but I figured out, and then I had to upgrade to 3.1.1 within the WordPress site, and then try to upgrade in SimpleScripts.

This second (unnecessary) upgrade finally detected that I had the version that I was updating to, and it just updated the version number in SimpleScripts. This was a big "Whew!" on my part, and it's nice to know what my options are in dealing with these updates. So it's all up to 3.1.1 and things are smooth once again.