Archive for the ‘Coding’ Category

Base 1.4 is Out

Tuesday, March 16th, 2010

Base.jpg

This morning I was thinking about SQLite3 and decided to check and see if Base had been upgraded since the last time I checked. It's a great little tool for SQLite3 database, and there's a lot to like there. SQLite3 is the backbone of CoreData, and it's been shown to be a great alternative to a config file or even an application's data file. SQLite3 is a single file database, and it's fast.

So I checked, and sure enough, Base 1.4 was out with a few nice improvements: CVS loading, SQL loading, and a lot of nice exporting file formats. Impressive. I'm not sure I'll use all them, but to have these in this nice, minimalistic tool is a really nice feature.

It makes me want to mess with CoreData - or just get into more Mac development. Darn, it looks like a lot more fun than what I'm doing now.

OK, I’m Finally Really Tired of Working on the Trading Floor

Tuesday, March 16th, 2010

This morning is like all other mornings in the last year, and in that, it's horrible. While I like the idea of teamwork and togetherness as much as the next person, the space I currently work in is the absolute worst space I've ever worked in. Seriously, all kidding aside. This is the bottom of the barrel for working conditions for a developer.

I like the vast majority of the people I work with - which is a real plus. I think the work is, for the most part, interesting enough, and while not really good work, it's good enough, and I can live with that. Again... most of the time.

No, this morning I'm really just sick and tired of the environment I'm working in. It's not a sometimes thing, or an occaisional problem - it's a daily, constant, reminder that my management doesn't have the first clue what it takes to be a developer delivering the kind of results that they are constantly asking for.

It'd be one thing if they didn't ask for much, and then the lower-than-average productivity of this space would be offset by the lower-than-average expectations. But that's not the way it is. Nope... I get hit daily with more things to do, and even two days is too long for major functional enhancements.

The Conditions

To give you a glimpse of what The Shop really looks like, this is the main floor of the Chicago offices. We are in the middle of a move to newer space - just one building over, but the space there is a carbon-copy of this picture. The furniture is all custom-made and at least ten years old. It's falling apart in places, and cobbled together in other places, but it works, and it hold up the sea of monitors and keyboards.

Trading Floor

and I'm in one of those long, flat desks at the bottom of the picture. Here's a different view showing me in the center flanked by my manager on the left and a teammate on the right:

My Desk

I'm sitting on a 6' long, 3' deep desk with one to the left of me and one to the right. I have three other desks facing my "row", and then behind me the same thing repeats across the entire trading floor.

I don't have any privacy. I don't even sit out of the way in some alcove where no privacy might not be so bad, as it might be quieter, but I don't get that. I'm sitting right next to one of the loudest group of traders I've ever seen. I understand that it's their job - they need to yell and talk all day long. That's what they do. But to think that I need to be next to them for some reason - well... that's where I beg to disagree. As much as they need to have the noise and the walls of monitors, I need quiet.

But I'm out in the open.

Clean and clear view of the entire office.

Not a single piece of foam or wall to stop even one bit of the noise of the traders on the floor.

I found a reference to this Joel on Software article where he discusses the keys to writing better code:

The Joel Test

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

I might expand Question 8 to read: Do programmers have the right working conditions? Because right now, I'm wearing three layers of clothes and thinking about putting on my winter coat to stay warm. Being cold, hot, uncomfortable in any way, is going to hurt productivity. But that's what I'm thinking about lately. I'm thinking about simple peace and quiet.

Giving it the Ole College Try

When I started a year ago, I had never worked on a trading floor. I had visited plenty, did little bits on the floor, but never really worked day after day on the floor. I had no idea. And primarily because I had no idea, I thought I'd give it a try. I have always liked working with the traders and I thought it might be nice.

Well... when I found out what the reality of this situation was, I was still willing to give it the ole college try. Stick with it... maybe it'll get better in the future. Maybe I'll learn to tune it out. After all, lots of other folks work in this noisy environment, why can't I?

The answer to that question was I have no idea, but I can't. This noise level means that I have to play music to tune out the distractions on the floor, but that's not really good for concentration, it's just familiar, and a little better than the constant, random noise of the floor.

What Could Have Been

In the new space, we could have moved into nice quiet space. I say could have because we're going to be down on the floor again. My manager wants to be in the thick of things. I can understand his motivation, it's understandable. But that's also because he doesn't need to have peace and quiet when he does his emails and his best gopher impression to pop up and interrupt me to ask me to do something else.

There's no solution here. I've tried to make this point time and again. I've sent links to studies, and even this morning I sent my manager the link to the article. But it's not going to help. This is how it is. If I want something different, I'm going to have to move.

Crud.

Now I’m an Embarrassed Cow – But Not Stupid

Friday, March 12th, 2010

cow.jpg

This morning a trader came up to me and pointed out that with the latest release of this ground-breaking, seminal, enterprise VB app that's the core of the business at The Shop, one of the key features was removed because Ralph, my manager, wanted to look like we were accomplishing something useful. You see, this VB app really isn't great, it's everything but that, yet it's proving to be very hard to retire primarily because (in my opinion) the strategy to retire it is horribly planned, poorly managed, and completely ineffectual.

So Ralph decided that it'd be a great idea to have as our group's plans to help retire this app. Well... this is a dodgey goal in the first place as there's no way we can do it alone, but still, doing even little things should yield impressive brownie points with the upper management. So he's all about shutting parts of this app down.

He shut one down early. Too early.

With this latest release, he had them remove an important component to this one trader. My code wasn't through Q/A yet - and probably not into production for another few days. When it does arrive, it has all the features he needs, but today, it looked like I took away the one useful component of this old VB app without giving him a replacement.

Nice.

He was kind about it, but still... I could tell... he wasn't happy. I wouldn't be. He's stuck and can't see his positions, and it's something I (seemingly) took away from him for no good reason whatsoever.

The truth of the matter is that Ralph took this away, all for the pathetic, useless, brownie points that we now have more than burned up because of this horrible miscalculation. I advised that we should have waited until everything was done and ready and then tell the VB app group to shut off this component, but Ralph wouldn't hear of it.

"Nope", he said "That'll put us back at least a month."

How incredibly short-sighted.

Thank goodness it's Friday - I'm leaving early because I just can't stand to be here. It's one thing to make me a piece of meat - I had a hand in that by being too efficient and not demanding enough. But to make these ridiculous decisions all for the sake of some lame belief that it's a Holy Mission to retire this app, and in so doing, inflicting this kind of collateral damage... well... that's just too much for me.

I'm not a stupid cow.

Possible Contender to Google’s AnnotatedTimeLine

Friday, March 12th, 2010

GoogleVisualization.jpg

This morning I was reading Daring Fireball and John pointed out an alternative to the Google Finance widget - the Google Visualization AnnotatedTimeLine. The HumbleFinance widget is a nice looking alternative to the AnnotatedTimeLine, but in it's current state it's too limited to really replace the AnnotatedTimeLine in my work.

First, it allows only two datasets. Normally, this is probably just fine as in a lot of finance you may just want to see an instrument price, or one instrument against an index - but for my graphs, well... I've had to limit the data in some pages to 64 datasets. It's just a different use-case when you're looking at risk across an entire firm.

Second, there are no annotations, and that's one of the most useful pieces of my web app. I'm able to overlay external events and trade events on the data to allow the users to see why the data is behaving as it is.

I'll certainly keep an eye on this as it gets better, it might get to the point that it can unseat the AnnotatedTimeLine. Then again, with Google dropping Gears in favor of HTML5 features, maybe it won't be too long and the AnnotatedTimeLine will be in HTML5 and we can get rid of Flash for the web app.

Google Chrome dev 5.0.342.3 is Out

Friday, March 12th, 2010

This morning I noticed that Google Chrome dev 5.0.342.3 is out and it seems to have fixed a few of my concerns about getting connected to servers, but maybe that's just my faster home connection versus the connection at The Shop. In any case, it's an improvement in something, so let's stay up to date and see if it's improved enough to be my secondary web browser.

Upgraded to the January 2010 gfortran

Thursday, March 11th, 2010

fortran.jpg

Since I was doing some simulations yesterday, I decided to have a look-see at the state of gfortran at the HPC on Mac OS X web site. Sure enough, they had an update. I have been running the September 2009 version, and they are up to the January 2010 release. Good enough reason to get busy installing!

I then ran through all my FORTRAN code again, and it even caught a few 'column 72' errors that had slipped by. Interestingly enough, MacVim pointed these out with a yellow background highlight! Very neat. I did the easy fix and the warnings went away.

I do so enjoy FORTRAN. It's just plain fun to work with.

Finally Finished Some Simulation Runs

Wednesday, March 10th, 2010

shark.png

Well... it's taken me what... about 25 years?, but in the end, I finally finished the first 10 psec of the simulation that I started in my PhD, and was never able to finish. These are the two big results I was waiting for with the Gould NP1 but never managed to be able to get the results out of the box as it just took too bloody long. Well... fast forward to now, and I was able to run the simulations for all 10 psec on my iMac at home without any problem at all.

In fact, the total runtime for the entire 10 psec simulation was 4:34:54 - about four and a half hours! Had I told myself back then that someday I'd run this code on a desktop Mac and it'd finish in less than half a day, I'd have laughed. And then wondered when that day would come. How exciting!

The first test is the Si pulse. Here, we're looking for a nice, representative pulse widening and drifting down the channel. I was able to get a few psec of this simulation done for my thesis, and it proved that at least in Si, the physics was behaving as you'd expect.

Si Pulse

The second test was the similar conditions in a GaAs channel where we're biased in the negative differential mobility zone, and so we'd expect the oscillations predicted by the 1D simulations to start to appear. What I'm seeing here isn't anything like that.

GaAs Pulse

This pulse seems to be nearly stagnant in the channel - hardly drifting at all - but spreading out much faster than the Si device. While this might make sense, if you think of the higher mobility in GaAs over Si, the problem is, the mobility in the bias conditions we're looking at should be shrinking the packet and starting to make oscillations on the top part of the pulse.

So I'm wondering if I've got something wrong in the code, or if I just have it misconfigured. It sure looks like it's configured correctly. But then again, I don't have anything to compare it to. Hmmm... very odd.

Well, if I get more time I might dig into this, now that the runs can be done in a reasonable time. I just wonder if there's something I'm missing as the other tests all checked out. It's something to think about.

Just Slugging it Out

Monday, March 8th, 2010

Today has been a good day and a bad day - just depends on how you look at it. I've realized a few things today - the ideas have been crystalizing for a while, but today they can into laser focus. The Shop is consistently focused on the gimme now! answer no matter the cost of the better, long term solution. This isn't some of the time, or even most of the time. No, it's all of the time.

I'm used to a little more of a balance, and not spending all my time fighting fires. I get to do little things - but they can't take more than a day or two before they are considered "back burner" projects and I'm asked to re-focus on things that will make my manager look good to the other partners in the Shop. It's not a bad motivation, and he's not the only one doing this, so I can't really say he's the problem. No... it's the entire place that's like this.

I've just gotten tired.

I want a rest.

So I asked to start working at home.

It went over about as well as I had guessed - which is to say that it didn't go over well at all. But I didn't expect it to.

Sad.

Oh well... I've had a nice run here.

MacVim Snapshot 52 is Out

Monday, March 8th, 2010

MacVim.jpg

This morning I saw a post in the MacVim groups digest saying that Snapshot 52 was released with a pretty significant list of updates and fixes. Most interesting to me is the inclusion of Core Text as the future of text rendering on the Mac. If this makes it smoother and faster, then I'm all for that.

It's still one of my favorite editors and only a slight second on my Mac to BBEdit. Great stuff.

Added an XML Output to the JiGV DataTable

Friday, March 5th, 2010

GoogleVisualization.jpg

Today I had the time and decided that it was about time for the DataTable to have a toXML() method so that if I have a servlet that's responding to something other than a JavaScript-driven web page, they can take this XML and parse it for whatever they want. Since I already had the HTML output method, this wasn't all that hard, I just needed to decide what the structure needed to be, and then replace the HTML tags with the appropriate XML tags.

Not bad at all.

OK... it's not rocket science, but it's something that needed to be done as I'm getting into a little larger audience for these servlets in the web app, and it needed the 30 mins I put into it to get the code and the unit test working.

So there.