Google Chrome 5.0.335.0 – Getting Respectable

February 25th, 2010

GoogleChrome.jpg

This morning I noticed that the 'dev' feed of Google Chrome is at 5.0.335.0, and so I decided to download it and give it another try. The reason I'm not using it more is that I've found it to be very unreliable in connecting to the sites/servers that I want it to. I wanted to use it as my back-up browser, which is Firefox 3.6 now, but it just wasn't as stable and useful as Firefox 3.6.

While I use Google Chrome all the time in my work at The Shop, and find it to be a very respectable browser for the work I do there, the Mac OS X port is just not up to that level of quality - yet. Well... today when I tried 5.0.335.0 it was acting much better about getting to the sites and moving between them. Not bad.

Given this, I may give it a day or two and see if it holds up to the same load that Firefox does. If so, I may switch over. Would be nice to see.

I Wonder If I Should Wear a Bell?

February 24th, 2010

cow.jpg

When I thought my cow-like appearance to my manager couldn't possibly get any worse, today happened, and I just feel like starting to wear a bell. No joke, I had no idea how bad it could get in the span of a day. It's stunning.

Recap: When Two Days is Too Long

Previously on The Farm... yesterday my manager stopped by and asked me to implement this new feature into my web app. It was a reasonable request, and I didn't think it'd take too long, but it wasn't just a configuration change, either. Basically, I'm using the H2 database as an in-memory database for a Tomcat web app and it's working pretty well for me. When I was asked a while back to add in alerts for conditions in the data stream, it seemed logical to use the database triggers capability of H2 to do the job. That way, I just deal with the stream of data regardless of it's source. Seemed pretty slick, and it is.

The problem was, this new request was to add the same kind of alerting to a different data stream - also in the H2 in-memory database, but a different table structure. Now as any database guy will tell you, converting a trigger from one table to another one with different columns, etc. is possible, and not too complex, but it's not something you can do in five minutes. Especially when you've got something as complex as the configurable and flexible alerting system I created.

So I said "Yeah, I can do that... sometime between two days and two weeks."

"Really! Come on... you can do it in a day, Right?" he said squinting and showing his displeasure with the answer I had just given him.

"Nope, that's a pretty decent time because you'll want me to have all the capabilities of the other, which means I need to generalize some things, and that's at least a few days."

He left, disappointed that I hadn't said "2 hours", and leaving me with the distinct impression that he thought I was sandbagging, or lying, or at least an ungrateful piece of meat (a.k.a. a Cow).

The Ole End-Around

This morning I was talking to a teammate and he said that our manager told him to ask me about adding this feature to the system. Immediately I was very defensive - did he seriously not believe me when I said it's take two days? Did he think so little of me to ask a guy that doesn't know this codebase one tenth as well as I did? What was going on here? But this wasn't my teammate's fault, so I tried to remain calm.

"Yeah, Steve, I know... He talked to be about it and told him two days. I guess he didn't like that number so he's asking you."

At this point, Steve clearly looks caught in the middle of things. I can relate. He had no idea what was going on as he wasn't involved in the previous conversation, but was hip-deep in it now. So we talk for just a minute or two, and then I decide to pull in our manager again.

"Ralph, I hear you're asking Steve about the feature we talked about yesterday."

"Yeah, we really need it - maybe he can throw it into Hemlock. Maybe he can put it into another page..."

I can clearly see what's happening, this feature isn't important to our group. It's important to another group, but by giving them something they don't have, Ralph looks like a RockStar. Good for Ralph. But he's doing it on the backs of us - he's not capable of doing this, and it's making me madder by the second to think that all he cares about is how "cool" he cal look to the other people here without giving any consideration to his people.

"Fine, Ralph, I'll put it in the other page, and it'll be a highlighted row." And off I went to start coding this up.

So Once Again, You Really Want This?

I code at a fever pitch to get this done because I'm also seeing emails start to fly around about another change coming, and while I didn't have a lot of time to respond to the emails, I did have a few responses to try and limit the work, but at each turn Ralph was saying we needed to do more, not less.

But I got the changes in and started testing them. Amazingly, I didn't have any real issues and it worked just exactly ass I planned. Guess there's something to this "experience" thing. So I then asked Ralph "Ralph, can you get the values from the business for the filter?" as I had in dummy values, but needed the real ones before I pushed the code to Testing.

"OK, I'll go get them." and off he went.

When he came back, he had a little sheepish look on his face and started to explain: "When I first asked Goose he liked the idea, but then Ice Man said it's not going to work because it's not on all the trader's desktops. Sorry..."

Basically, I had wasted half the day. Totally wasted for a feature Ralph was sure we needed to deliver to "look good", and it turns out, it's just a waste of my time.

Man, I was not happy.

But the day wasn't over, while I was doing this work, I saw in the email chain that Ralph had promised that I could get this other work done TOO!

Ralph's Looking Good: Part Deux

I couldn't spend any time worrying about the lost time, I had to get these other changes into two systems and get several things updated and then deploy a few things. It wasn't hard, but it took me several hours to make sure I got it right and that things would work.

When I was about half way done, and saw that I'd have to stay late, I asked "Hey, what's the rush on this? Why does this have to go in tonight?" And no one seemed to have an answer... but Ralph was conspicuously absent. So I had to trudge on...

As I was entering my 12th hour of work, I finally got things done and checked out. I had wasted half a day on a useless feature, and then hurried through the addition ov several data sources to the systems just to make Ralph happy - more like make him look good to others.

As I was getting ready to leave, I asked Ralph if he had a few minutes... he tried to say he was sorry, but I said "Let's go have a talk", and I walked into an empty office.

What followed was my feelings about his actions of the last few days.

  • the feeling of being massively manipulated about the feature addition with Steve
  • the feeling that I was lying or sandbagging about the two day time required - and what's wrong with two days? Is it really that much to ask?
  • the agreement "for me" as to what I could get done in a day - again manipulated
  • the feeling of disrespect, trivialization of my work, and general "Cow-ness" by him

In the end, I didn't ask for his explanations, but he was trying to get them in anyway. I didn't want to hear it. I wanted to state my case and then leave. So I did.

I wonder if I should wear a bell tomorrow?

Flash 10.1.51.95 Beta is Out

February 24th, 2010

While I'm not a fan of Flash, I do have to use it in my work with the Google Visualization Widgets, specifically the AnnotatedTimeLine, so it makes sense to stay as up to date as possible. I've been reading a lot about the massive improvements in the 10.1 performance on Mac OS X, so when I heard that Flash 10.1.51.95 was out, I decided to get it.

We'll see if this makes a lot of difference, and until Apple makes Flash really well, I'll need to stick with the Adobe player and ClickToFlash to limit the pain, and then do the few things I really need. It's not ideal, but it's the best I have at the moment.

NetNewsWire 3.2.5 is Out

February 24th, 2010

I saw this morning that NetNewsWire 3.2.5 is out and contains a few fixes for authentication bugs and possible crashing problems. Brent pointed out that he's planning on releasing several small bug fix releases as opposed to waiting for one big one - just to get the fixes out to those effected as soon as possible. Sounds nice.

Camino 2.0.2 is Out

February 24th, 2010

This morning I saw that Camino 2.0.2 is out with a few security fixes. Sounds about right, but since I don't use it that much, I'm not really that concerned about the threats. Still, no need to be silly and not get the update.

Mooo… I’m a Cow, Get It?

February 23rd, 2010

cow.jpg

Today I've been working on adding more functionality to Hemlock, specifically, adding a few features to the existing objects to significantly reduce the complexity of the JSP pages that generate the XML for the data. It took the vast majority of the day as I needed to update hours of JUnit tests that had absolutely no relation to reality, but that's been one of my biggest complaints of Hemlock in the first place.

Anyway...

My manager comes by to ask me if I could adapt the real-time alert system I built for the portfolio-level data to the trader's data we also capture. I said "Sure, but it's not trivial, it'll take somewhere between two days and two weeks. Hard to say exactly how much."

"Two days?! Come on, you sure it's not one?" was his response.

"Nope, two days is a pretty minimal bet - the original implementation was weeks, and if we want it to work for portfolios and traders, and then other data streams, well... it's going to take some time." I then tried to lay out what the technical challenges were so that he'd understand them.

"OK, but if you didn't do it right, just crammed it in there - how long for that?"

At this point, I was getting a little pissed at this display. I knew what the point was - there was a new trading system that had no controls on it, and if this alert system of mine could be used to provide that feedback and control then he'd look like a Savior. Sadly, it was going to take two days.

Let's think about this... he's upset that something is going to take two days to deliver. He already knows it'll be rock-solid and work like a champ, and for this, he can't wait two days?

Yeah, right.

It was at that point I realized that he sees me not as a team member, but a piece of meat - a machine for making him look good. I only exist to make him look better in the eyes of his fellow managers in the Shop.

Amazing.

I'm a cow.

Comcast Set to Deliver 100Mbps?

February 23rd, 2010

pirate.jpg

This morning I was running and watching a little TV when I saw a Comcast advertisement for their new high-speed service. It seems they are planning on moving to 100Mbps speed in the near future. Now I'm not sure if this would be a great deal for us... we had the Extreme 50 for a few weeks and weren't really thrilled with the speed. It seemed to Liza that it was even slower than the Ultra which is 30Mbps/7Mbps.

I'm not sure if it was the Comcast infrastructure or Liza just not wanting to pay the extra $50/mo (now it's only a difference of $37/mo). But we went back to the Ultra, and she's happy with that.

But I have to say, if I could really get 100Mbps to the house, that would be very sweet.

The Pain of Being the Engineer on the Train Wreck

February 22nd, 2010

Today has been a particularly sad one for me. It started out wonderfully, but soon after noon I was talking to my manager about the upcoming work I needed to be doing, and while it's normally an interesting feedback loop, this time it was just plain depressing.

You see... I'm the engineer on the train that's now purposefully headed for disaster.

It may not be certain doom, but it's very bad ideas, and rather than listening to someone with nearly as many years of experience as his age, he's decided that this is what he wants. I've tried to dissuade him. He's not interested. He wants what he wants, and I can appreciate that "gung-ho" kind of attitude, but I've been down this road before, and I'm not really convinced that this is the right thing for us to be doing.

But it's not my decision. It's his.

So I'm sitting on a project that I have no sense of confidence in. None. It'll be a mess no matter what I try to do because it's just too much data. But he's convinced that there exists a way for me to pull another rabbit out of my hat.

I've spoiled him. Spoiled rotten. I've pulled off too many things like this for him to think of the "reasonable". He goes straight for the "unreasonable", and will settle for the "impossible" if I fall short.

It gets a little old.

OK, a lot old.

How Not to Start a Nice Weekend

February 19th, 2010

I should never start working on the Hemlock project at noon on a Friday. I should have known that. But silly me... I wanted to get these changes in the code and checked in so that I could put it all behind me for the weekend.

I should have just taken off and dealt with it on Monday.

I was stupid, and arrogant to think I could get it done in half a day.

Hemlock is this horrible project that was dumped on my by a very bad developer when I arrived. It's a mess, a complete mess, and yet it works, and I can make it do more things than it was originally designed to do. That's my fault.

I should have faked incompetence.

So I got the real code fixed up in about 2 hours, but then I couldn't finish up the JUnit test modifications for those changes in the following 2.5 hrs. It was (and is) a nightmare. These aren't unit tests - they are user validation tests - without the user. It's exactly what JUnit can be abused to do and strangle your development effort.

But they are there, and that means I have to update them.

And ruin the start to my weekend.

Lovely.

But it's all my fault.

Designing for Continuous Operation

February 18th, 2010

Today I had some problems with the messaging software we use at The Shop - 29West. To be fair, the problem wasn't completely 29West's, but it was due to the architecture of 29West. Even in pub/sub mode, 29West (non-multicast) is still a point-to-point protocol. This is a feature in their design. I can see it - take out the middle-man and centralized bottle-neck, and you can increase performance. Makes sense... I've used point-to-point socket protocols a lot and there's a ton of good in them.

But when it comes to a service, that's not a really great model to use. Reason being: if it goes down for any reason, then you have clients that are unable to connect to this "pub/sub" system, and that doesn't make a lot of logical sense.

I mean, a subscriber should be able to subscribe unless the complete infrastructure is down - not just the publisher. It's a matter of opinion, I'll concede, but I think it's an opinion that should be shared by a vast majority of the systems developers in the world. The entire point of pub/sub is to separate the 'pub' from the 'sub'. Having it be point-to-point breaks all that to pieces.

Which brings me to the point that seems to be clearly lacking in The Shop - the thought for continuous operation seems completely absent. Everyone plans on nightly shutdowns, and as such, never puts even the slightest thought into making their system work all week long. "There's a nightly restart, so I will to." - that's just lazy thinking and lazy building.

I'm not saying there aren't reasons for some systems to have nightly outages. What I'm saying is that if there's a reason for your system to have one, then go ahead and have one. But if you don't need it, then don't take it. If you do this, and the other systems that do need it figure out a way around their limitations, then you have a more robust environment as nothing needs to have a nightly restart.

So stop accepting other's limitations as yours - but better systems than that.