GraphicConverter 6.3 is Out!

December 8th, 2008

GraphicConverter.jpg

GraphicConverter 6.3 is out, and it's one of the first graphics apps I got for my first G3 MacBook. It's been a valuable asset to me over the years, and while I haven't used it much since getting Acorn, I still want to support the authors, and while this was a free update, I'll get the paid updates as I think this is really good software and is deserving of my support.

There’s Hope for the X-Y Line Graph!

December 5th, 2008

BKit.jpg

For quite a while, we've been trying to make a true x-y line graph with VantagePoint. The problem has always been that the traditional line graphs assume that the points on the x-axis are simple markers and equidistantly spaced on the axis. Not good if you have scientific data.

I heard back from Gordon at VantagePoint and they do having something that I can use to create a true x-y line graph - the TwoDimCrossScatterViewer. It turns out that this graph takes pairs of columns (x,y) as the Variables and then plots them independently on the graph. Not bad, but I need to connect the points as well. Gordon has that covered as well:

  /**
   * This is the way to draw a line between points on a cross scatter graph.
   */
  for (int var = 0; var < itsGraph.getNumCrossVars(); ++var) {
    VariableAttributes   va = itsGraph.getVariableAttributes(var);
    va.setOption(VariableAttributes.voiDrawLine, true);
  }

With this, I can make it look a lot like the traditional line graph, but instead of just giving me columns to plot as lines, the users will have to give me pairs of columns for a single line - just like you'd want.

I'll need to make a new kind of graph, but that's not a problem. It'll be similar to the line, but under the covers it'll be a very different beast. Good job, Gordon!

You Really Never Can Go Back – Can You?

December 5th, 2008

trophy.jpg

I decided this morning that I'd spend a little time updating my resume - specifically, clearing out the stale links after the Big Shut Off in my office. Most of the links were old, and I doubt that there's anyone that's going to miss a few pages on my old projects, or a crypto-quip solver that can probably get spanked by an iPhone app, but it got me looking at what I've done for a career.

Some days it just doesn't seem that cool.

I'm sure a lot of people look back and say the same thing. It's the nature of some people (like myself) to minimize their achievements as simple, or easy at the time. We forget, or at least trivialize, the pain we went through. We look at what we've done as something anyone could do. And it's not fair.

While much of it might not be on par with curing cancer, it was something that took all I had. I wouldn't trivialize the accomplishments of my kids, why do it to myself? Answer: because deep down, we all know our own dirty little secrets. We can't really respect ourselves because we know too much about our failings.

I need to break out of this. It really is a wonderful life. I have done some pretty impressive things - so people tell me. I have lots of interesting and funny stories that I can tell pretty darn well. Maybe that should be the true measure of one's self-worth: How many people would willingly listen to your stories?

Citadel is Taking a Pounding

December 5th, 2008

WallSt.jpg

I have friends at Citadel, and this news is just not good for them. They do point to the up-side that the market-making fund is doing well, and I'm glad for that - for them. They are really good guys, and I'd hate to see them take any additional stress because of this, but I'm sure they will. It's part of the industry.

Just thinking about the few friends I have, and hoping they are riding out this storm OK.

Coda 1.6.1 is Out

December 5th, 2008

Coda.jpg

This morning I saw that the great guys at Panic have released Coda 1.6.1 with quite a few improvements. I've been seeing quite a lot of traffic on the Coda mailing list - a good deal of which was a pretty nasty thread about Git integration. Now I'd love it if they supported CVS and Git, but I'm not going to get out of hand if they don't - face it, the tools don't have to be integrated to be useful.

It's a wonderful took for working on non-Java web sites. Nothing wrong with that. But it would be nice if they had CVS and Git support to the tool.

Modifying WordPress Themes is Tricky Business

December 4th, 2008

wordpress.gif

This morning I was spending a little bit of time trying to see if I could add in a few nice section headers using the h2, h3, etc. headers. I knew from experience what I liked in the defaults, but I wanted to dive into the CSS and see if I could make them better, and more logical - like why is the first one I like h3?

Well... it turns out to be an interesting problem and because the WordPress Theme makers use these in their layout as well, it's not really up to the posts to change these. For example, h1 (in my theme) is used for the title of the page, h2 is used as the title on the post, etc. If I wanted to make an h1 for the post, I might be OK, but if I did that to h2, I'm going to have a problem with the title of the post.

So while the might have explicitly used a class="post_title" to indicate what they were doing, I can see why they chose to use the more familiar h2. After all, these are probably not modified by a ton of folks, and if they are, then, like me, you're going to see the problems and then decide how to get around them.

It's all possible to fix - but it involves essentially re-writing the entire theme and putting in the class tags to make sure that there will be no conflicts with the default post tags. Not impossible, but more work than I wanted to do today. I got what I needed - two levels, and that's going to be more than enough for what I've been doing.

iTerm 0.9.6.1201 is Out!

December 4th, 2008

iTerm.jpg

I decided to check and see if there was an update to iTerm - and there was! The latest release hits the transparency problems as well as removing updating threads to limit the contention issues and pasting big hunks of text. While I'm probably not going to switch as Terminal is still better with the workspaces feature, it's nice to keep up to date and see what's happening with the project.

Who knows, maybe it'll leapfrog Terminal again? I still like that I can remove the scroll bars in iTerm. Wish I had that in Terminal.

The Perfect Tempo

December 4th, 2008

cubeLifeView.gif

There are days... understandably rare... where the tempo is just perfect. I'm fortunate today to be having one of those days. Not too fast, not too slow. I'm able to help people with problems, do some good coding, write it all up nicely so there's documentation on the changes... it's been a wonderful morning.

Of course, now that I've written this down, watch it change, but even that's OK. A morning like this is better than none, and if I'm fortunate enough to stretch it out to a day... well... even better.

I've been talking a lot with some friends about where I'd like my career to go. Theirs too... it seems to be a common theme recently. I'm focusing on the idea of becoming an indie Mac developer. I've done the self-employed thing already with my old company, but this time I think I'd do it solo, or with very few people. Something I could do out of the office in the basement.

I figure that if I get one app that can net $250k I can be totally debt free. At that point, I only need living expenses and that's a lot less than the house, etc. After that, I can get another job that's not as demanding, and build the second app. Get three or four apps and you're able to have that be your job.

It's something I'd really love doing. That's my path.

VoodooPad (Pro) 4.0.2 is Out!

December 3rd, 2008

VoodooPad.jpg

I got a tweet from Gus M. at Flying Meat that VoodooPad Pro 4.0.2 is out with a ton of bug fixes. I read the release notes for a good 5 mins. There are changes in the Python interpreter for plugins, lots of crashing bugs fixed, and a complete WebDAV update. Sounds like a great update - had to get it.

Interestingly, now the tabs for the pages I have open are ordered differently, and I can't figure out how to order them manually. It's not a huge deal, but it'd be nice to know what the magic was to getting them in any particular order. Seems dragging them is the key, but what if one is off screen (to the right), due to a window being smaller than the combined widths of the tabs? Hmmm... no solution there, my friend.

Work-around: maximize the window, move the tabs, and restore it. Not bad.

The Fun of being Busy

December 3rd, 2008

cubeLifeView.gif

This morning it's been a hectic morning - lots of things to dig into, fix, write up, explain... it's been a blast. Nothing major, but it's like a wonderful little buffet of things to keep my mind working - and in some cases, exercising my patience as well.

Athens Exchange Acting Up Again

Seems every so often the Athens exchange is acting up from Reuters. Today we didn't get the clearing of the earlyClose.flag and that meant that things were not ticking as the price was based on the earlyClose.price and not the incoming ticks. Once I cleared that up, things started working better. My favorite support guy in the price feed group is going to look into this and try and see why we missed it yet again.

Looking to Filter Ticks by Historical Data

There are problems with the data coming from the exchanges - no doubt about it, but when it comes like it did today, it's a significant pain in the rear, and there's a significant push to try and find a solution for this problem. Today there was an option that was sending a quote (bid/ask) of 0.3/1.2 - creating a price of 0.75. Then a quote of 0/150 would come in making the price 150. One of these is clearly wrong, but is there an objective way to determine that? Not really.

We need to somehow look at the historical data for this instrument and determine if it's correct or not. If the last n ticks have averaged 0.75 with a tight grouping, then the 150 is bad. But it's also possible that the reverse is true. We need to look at the data in a larger sense. However, this isn't easy. The rules you start to make are hard to pin down with any accuracy. You end up making artificial judgements (limits) like 200%, and such. It's not logical, it's experimental.

So I sent out an email asking if now is the time to look at this - or do we want to put this off for later. It's going to take some time as the prices coming from some exchanges are not always clear and complete. Some have CLOSE, for instance, some do not. So we have to make complex rules for all this. And then there's the training process. It's not easy... or quick. It's going to take some time.

So we'll see if this is that time.

Fixed a Few Bugs

Hey... everyone makes mistakes, and this morning I had to fix up a few of mine. This was my gotcha based on the fact that some fields were not getting populated consistently. I had to make special cases for the different ways they got populated, and that fixed the problem. Shucks.

Worked Around Changed Behavior in VantagePoint

In the BKTimeSeriesViewer, the init() method was blowing up with an exception in the hiding of the non-existant points on the graph. It turns out that in the latest cut of VantagePoint, the method getVariables() will return a null of there's nothing on the graph to show. In the past, it returned an empty int[]. This null was caught and we had the problem. So... what was the solution?

Turns out it's pretty simple - allow the null. The method getColumnsOnGraphOnSecondaryY() in the BKBaseGraph was the problem, and if we model it after VantagePoint, then it's simple to say that if there is a null returned from getColumnsOnGraph() (as it calls the VantagePoint method), then it's reasonable to return that from getColumnsOnGraphOnSecondaryY() as well. The rest of the code handles it nicely, so it was a simple change.

Gave this to the developers asking for it and all was well.