One Nice Advantage of CVS over Subversion

August 4th, 2008

cvs.gif

This morning I was putting in a few changes to a project I was working on and one of the nice features of CVS over Subversion really hit me - CVS allows you to check-in part of your workarea by specifying the files you wish checked in. This is really the core of Subversion - that the entire workarea is a single check-in unit, but what happens if you're in the middle of changes for something and you need to checkin some changes to another totally unrelated part of the code.

Subversion would have to branch or checkout a new workarea, add in only those things that you can checkin at this time, check them in, and then go back to the original workarea and update that to merge in the changes.

That doesn't sound too bad, but it's nice to have several changes in CVS and check in just those that you know are safe for the repository, and then keep working on the others. I know it's part of the "problem" with CVS, but I see it as a genuine feature. I use it all the time.

In fact, the number of times that I checkin everything in CVS is so few as to be considered "rare" - less than 5% of the time. The vast majority of checkins are checking in a few files with a directed comment in the logs, and then repeating as necessary.

So while I like the Subversion feature of keeping a pristine copy of the workarea in the workarea, it's got an offsetting feature in the targeted checkin. At least for me.

[8/5/08] UPDATE: I was talking to a friend today and he mentioned that you could checkin individual files. But I looked at the PDF again that comes from the Subversion project and it doesn't mentioned this at all. I'm stunned that they didn't mentioned this in the docs from the project. It's one thing that really was turning me away from Subversion. Now I can relax and move back towards it as necessary. Wild.

Solving a Problem and Upgrading All at Once – Sweet

August 2nd, 2008

NetgearWNR3500.jpg

At home we've been having a real issue with Comcast where the speed was so unreliable that it became almost unusable. Huge pain in the rear. So we've gone through the Comcast angle and on Friday they came out and swapped out the cable modem and when Liza connected her machine directly to the cable modem it was fast, but after going through all the network in the house, it was slow. So it was clear that I had another issue to clear up.

All my tests in the house were showing me that the network wasn't the problem. Everything was fast, all tests showed things were just fine until I wanted to leave the house - then things got hit-or-miss. While I was doing some of these tests in my office I noticed that the LinkSys router's network port and the LinkSys 16-port 10/100 hub's network port were going offline and then back online. The router has only 4 ports, and I need the 16 for all the things in the office. But this was the first clue that there was something else going on.

My next test was to get on a machine on the hub and ping a machine on the router. When I did that and let it run, I could see that packets were getting dropped. HA! I was onto something. There seemed to be intermittent connectivity issue with the router and hub so off to BestBuy to see if they had what I needed. Thankfully, they did.

I picked up the NetGear WNR3500 wireless-N router and gigabit 4-port switch. I decided that while I was replacing the hardware, let's go gigabit and get a good wireless-N access point in the bargain. I also picked up a Netgear 16-port gigabit switch to replace the 16-port 10/100 hub, should that be the problem. Thankfully, it was just the router and when I got the new guy in and configured I saw marked speed improvements right away.

What a relief! I had enough evidence to think it was one of the two, but I'm glad it was the first one to replace and it means I can take my time replacing the other just to get to gigabit wired network speeds in my office. Nice upgrade, but getting a functional link to the cable modem was essential.

Java and HotSpot Errors – No Fun to Debug

August 1st, 2008

java-logo-thumb.png

This morning I had a Java HotSpot error in one of the components of a production system of mine, and I have to say, it's not been very helpful. I've looked at the HotSpot file and the problem seems to be in java.util.zip.ZipFile.getEntry() and Google tells me this is because of a possibly corrupt jar file, or someone has written to the jar file and made it so that the reading get very confused.

Unfortunately, all the jars have been stable for quite a while, but maybe the filesystem was the issue. We might have had some NFS issues which might have lead to this. Unfortunately, I can't do a lot about where the jars are stored, they need to be centrally located and there's only the one filer. Bummer.

I've sent a few emails the the guys who wrote this component to see if they have any ideas about what might be done to increase stability. I'm on JDK 1.5.0_10, but would 1.5.0_15 be better? 1.6.0? I'm searching for anything because there's no way the files were corrupted. I restarted the app and it all came back. Odd.

I just wish there were more information or a clear explanation of other possible causes so I might find the real culprit of this crash.

UPDATE: when it looks like the chips are down, sometimes you get a break. While digging into this with the developer that wrote the component having the problem, he noticed that the crash occurred when a script was being run through the system. I noticed that the last two crashes occurred at 8:00 am for the last two Friday mornings - just when cron launches these jobs. BINGO! While he was going to track down if the problem was in the bsh jar I was using, I decided to take a completely different track - forego the bsh script and write it in perl. Then, I'm not calling the system to do the work for me, I can do it outside the system and it's much safer and cleaner. Not to mention faster. I recoded this and it works like a champ. It's going to make things so much easier. Whew!

Linear Algebra Classes on iTunes U

August 1st, 2008

keynote_sm.png

A friend of mine that wanted to get up to speed on matrix math asked me what I thought he should do. I told him I'd look at iTunes U and if I found some good class on Linear Algebra I'd tell him about it. Well, I have to say I'm amazed at what's available in the iTunes U selection.

I looked around a bit - it could be a little better organized, but I can say it's not bad - just time-consuming to find what you might be looking for. What I found was a pretty nice course called Linear Algebra, Spring 2005 from MIT Open Courseware. Thirty-five 40 minute lectures that start at a pretty basic level and seem to cover all the basics. It'll give him a really solid understanding of the matrix manipulations he's doing in his work, and hopefully some understanding as to why he's doing them.

I have to say that the first time I took Linear Algebra I got the mechanics down pretty well, but the level of understanding was just too thin. Maybe it was the guy teaching it, after all, it was a night-school class at a local campus, so it's not like he was a renowned lecturer, but still, I have to accept a good chunk of the blame.

Later, in grad school when I really learned it, I really enjoyed it as well. I told my friend that if he watched the course and had any questions I'd be glad to meet him for lunch and help him through the issues. I doubt he'll have a lot of questions - he's a smart guy, but it's always nice to know you have a safety net, and that's what I really gave him. Should be interesting to see how he does.

It’s Been a Long Time Since I ‘Developed’ Paperwork

July 31st, 2008

PHB.gif

Over the course of the last probably 8 years the number of pieces of paper I've printed out are few and far between. I have to print out two pages a week for my time and billing, and when I go someplace that I need directions to, I map it and print that out. It's a very little bit of paper.

I buy books electronically now. I get PDFs of manuals when I can. All in all, I'd like to be as paper-free as possible. And I've been doing a good job... until recently.

Part of my current assignment is a ton of paper-pushing. Read this spec, write this spec, what's the status of this spec? It's what I thought I was walking away from 12 years ago when I left my own company. I left management behind, and wanted to just do.

But every time I think I'm out, they find a way to pull me back in (excuses to Michael C.)

If I felt it was going to really be something then I'd be a lot more excited about it. But it's just paper because business feels like it's accomplishing something when it goes through fifty reams of paper a day through a printer. After all, what's getting printed has to be useful, right?

I've told them I'm not the guy for this job, but I've been told I am. Funny... I thought I'd have known that by now. Silly me. So I push paper. What a state.

Lots More Testing of the New Ticker Infrastructure

July 31st, 2008

MarketData.jpg

I've spent a lot of time today working with a good guy in the ticker infrastructure team to get bugs in his group's code worked out. It's not been easy on him, that's for sure. Today I showed him no less than 4 bugs, each requiring new libraries be built - or in the case of one, the infrastructure itself had to be patched and upgraded.

I gotta hand it to him, it's a massive change, but I'm amazed that his developers didn't find any of these bugs in their testing. I'd have thought they'd have seen these as I did upon first inspection. I guess this is what he's going through to get his guys to get the bugs fixed.

In the end, I know it'll work, but I just feel really bad for him when I keep pointing out bugs less than 5 mins after a new release that he's thinking fixed the very last bug. Nope. There's a few more.

At least he's taking off for the weekend and getting some rest. I'll email him the next set of bugs in the morning and he can get to them on Monday. He deserves a break. It's close, but it still needs work.

Crazy Talk About Source Control Systems

July 30th, 2008

cvs.gif

I've used a lot of different source control systems in my days. Some have seemed to be really nice, only to be replaced by others that are even nicer. Some were replaced by worse systems, but for the most part, it's about the integrity of the development process. Period. Some make it easier to work in teams, some make it easier to work in a distributed manner, but all should have the same key feature: it allows you to version your files so you don't loose anything.

Which is why I was stunned to be in the middle of a discussion about the "one" source control system we should be using. Why? We've used ClearCase, and it worked OK, but then they didn't like supporting it and told us to move to a different system. We've used CVS for ages and it's never failed us. You can use Subversion now, and it's fine. I'm not sure, but I'm willing to bet that just about any reliable SCM is going to work. Just pick one, make sure it's safe, backed-up, and then get on with the job.

svn.gif

To say a group needs to use one at the exclusion of another is silly. You don't use one development environment at the exclusion of another - use Eclipse if you want... use Emacs, use Vi... just get the job done. Why would a group of professional developers even consider making rules like this?

OK, maybe some places feel it's important to have a single tool for each category so that people can get used to it and not have to change. Fine. Then by that logic, if someone is using a tool, don't make them change. If it's working, then it's solved. If it's not, then fix it. But making rules like this when nothing's broken is just plain silly.

When I've used projects that are in Subversion, I used subversion. When they were in ClearCase, I used that. What's the big deal? There is no one tool that's so vastly superior to the others that it can't be made to work, just pick one for a project and stick with it. Seems pretty clear to me.

But I'm in the minority here, it seems. They want to say all new development needs to be in one system. Until they don't like that and move to another, as they did when they moved to this one they are favoring now. It's crazy, but that's corporate life, I guess.

There Are Certain Things We Shouldn’t Know

July 29th, 2008

GottaWonder.jpg

I was talking to a friend that recently left a position as to the reasons for leaving the position, and he said something that was remarkably insightful: I shouldn't know that my COO hates me. It's sad that he does, but what's really just plain bad management is that this upper management makes it known publicly that he doesn't like developers.

I was talking to another friend today that went for an interview and he was talking to the CTo of the small-ish shop that he was interviewing with and the CTO told my friend that he was overpaid. He went on to say that his advice was to have my friend talk to a recruiter and see if he wasn't telling him the truth. The conversation he had with this CTO as part of the interviewing process was just not at all what you'd expect from a CTO.

It was almost like he didn't want my friend to take the job, but didn't want to say "No" to him. Very odd story to hear.

I'm sure there's more to this from the CTO's point of view - who knows how well my friend did on the technical side, and if his personality was a good match with the people. Lots of things can factor into an interview. Heck, back at Port-to-Port, my old company, we had a saying: Sometimes good people don't fit. It was the recognition that good, talented people might not fit into every organization well. It was no reflection on them as a talented person, it was a statement on the fit.

So I look at these two things and think there's a big difference between a good interview and a bad one. And a good manager and a bad one. And it's got nothing to do with skill or talent. It's about personality. If you're someone that likes to poke at people, then you might be a great coach or trainer. But you're not likely to make a great manager as you need to motivate differently in the long haul to be a real success. You also either like talking to people and have a good sense of how to make people feel good about themselves, or you don't. If you don't, your interviews might seem very odd.

It's all about knowing what you're good at. Focusing on the positives and trying to best deal with the negatives. It's not easy, and we all need to do more of it.

I Wonder What the Real Productivity is Around Here?

July 29th, 2008

cubeLifeView.gif

I'm sitting in my cube - like a million other office workers in the world, and I'm listening to the chatter of my co-workers. Now I'm the first to admit that I'm a little more driven that the average worker, and have been called work-aholic more than a few times. But working hard just feels good to me. I like having a challenge to overcome. Yet clearly, mine is not the only work ethic. Far from it.

To hear about the game... or about this contractor, or about that bid for the new kitchen... you'd think that this was a part-time job. Yet I suppose that as long as their managers are happy, I can't complain... only wonder. Wonder at how much might get done if people stopped focusing on their personal needs and started focusing on the business' needs. If their work tasks took priority over their personal tasks.

I chat with my kids when they are online and I'm not busy... but it's never at the expense of work that I'm supposed to do for the Shop. I'm sure there are a lot of people that do personal errands, or call about bills, or such - that's just the nature of people trying to get their non-work life stuff done in the only time that other people are open and available.

I suppose then it's more a level and priority thing. If you're talking about the Cubs for 15 mins. that's OK... but if it's 3 hrs - or you're watching the game while at work, then it's possibly a bit excessive. If you're working out a complete remodel of your house and only get to spend 2 hrs a day on work tasks, then you might have a priority issue.

I just look around and wonder... How much could we really get done if everyone really tried?

Disabled the Last of My Bad Boy Bots

July 29th, 2008

chat.jpg

This morning I was able to restart the last of my servers that had a re-configuration with the MindAlign system to disable it. These were the 10 authentications per minute that were spamming the authentication server... well... the last of them are finally disabled and things seem to be going swimmingly. Good for me. I wrote up the documentation on how to re-enable them once MindAlign decides to allow bots once again - whenever that is. I just wanted to make sure that if I got hit by a truck, someone could read the docs and get things going again.

I know from experience that this is not going to make any difference in the MindAlign stability, but they have been rather insistent that we shut down these spamming bots and so I have done it as quickly as is prudent. We'll see if they are as quick to restore complete MindAlign service.

I'm not holding my breath.