Archive for the ‘Everything Else’ Category

Back at it… Again…

Monday, July 23rd, 2007

Well... I'm back from vacation and it's a bit of a challenge getting caught up to things, but handling email from home made things a lot easier - at least on that front.

The exciting work I was doing on the coding serendipity right before I left for vacation took most of the day, but boy was it worth it. The brute force method of clearing out the positions and reloading them from the files was taking a lot longer than I had planned. Like minutes versus seconds. But with a little work and thinking about the problem carefully, I was able to get then entire process down to about 20 sec. It was very nice to see it working just as I had hoped. This is going to really save time when compared to the 20 min. recycle time if I had had to restart the server.

On a sad note, the CTO resigned while I was away. He'll stay on for a while, but he has always been a real asset to this place. I have to admit that I'm more than a little worried that things won't be as nice around here without his steadying influence, but there's nothing I can do about it, and I know that in the end, things work out, and life goes on.

iChat Problems

Tuesday, July 10th, 2007

It's been a quiet day - got word on a bug fix I'll incorporate tomorrow, fixed a few issues with some data, but it's been a nice and quiet day. So I spent a little time trying to see if I could get iChat to work from my MacBook Pro to my kids' MacBooks. I know that they can video chat to one another, but when I tried to chat with each one I got the 'Error -8' problem that seems to be pretty common to a lot of folks.

If I had to guess it's in the ports, but it's possible that it's the NAT on the Netgear wireless router. I'm going to have to do some tests when I'm at home to see if I can chat them when I'm on the same network, and if that works, can I chat them when I'm on the primary network in the house. This will test the Netgear router as the kids' machines are on the 'downlink' side of the router, and the internal network is on the 'uplink' side. If that fails, then I know it's in the Netgear router and I need to deal with that. If not, then it could be the router at work, or blocked ports.

What's really amazing to me is that Apple hasn't put this out in a FAQ or something to address this directly. It's almost like a simple software update would say "Hey, I can't Video chat because I can't connect to port x on the other machine." Then you'd have some URL to go to and see what the problem was. This would be incredibly simple, but they haven't done it. I suppose it's not a high priority as for most people is just works, but when there's a problem, it's always better to give an error message with as much information as possible.

So I'm hoping it's something with the Netgear setup. The Apple web site mentioned turning off UPnP on some routers, but there wasn't a lot of real detailed information other than the port numbers that needed to be open. Since none of the machines has the firewall turned on, I think it's got to be in the router at home - or here at work. If it's here at work there might be a chance I can get the ports opened, but we'll have to see. I might not be able to. In any case, this is a puzzler that didn't need to be as puzzling. Apple just needs to have better error messages.


UPDATE: turns out it was the available bandwidth at work. There are 200 users on the one 1.5Mbps DSL line and that's not leaving any real bandwidth for the iChat AV connection. Problem solved, but oh how I wish they'd have real bandwidth for these lines - that, or a really fast WiFi in the Chicago area so that I could use that and not have to hassle with this either.

Getting Back At It

Monday, July 9th, 2007

Today was my first day back from the long Macalicious weekend where I got the two MacBooks for my oldest kids. My son (13) loves the games and is saving up for some game he saw in the Apple store. He's playing DVDs and surfing and loving it. My daughter (11) is having a blast with iLife (iWeb, iMovie, iTunes, and iDVD) and ready to publish a new web site with movies and pictures any day now.

Work is a little tough getting back into it. Lots of emails to catch up on... needed to spend an hour or so with a new guy to bring him up to speed on the components of the system I've been working on for the last 6 years - he's a new second-shift Ops, and will be needing this information as soon as he can get it. Then there was a bug to file with the vendor of our reporting framework, and a few other things to play catch-up on.

But probably the most interesting thing that happened today was the Slashdot article about the Google Maps image of the prototype Chinese nuclear sub. This is incredible, and at the same time shows once again that the cost of destruction of weapon is far far less than the cost of it's construction.

I think the first real point of this was the Falklands Islands War where a missile took out a large British warship. The British won, but the cost of the loss of the warship far outstripped the cost of the missile it took to take it out. This lopsided equation is now even more clear with the Google Maps realization. There have always been spy satellites, and yet the problem with having them is that you can't really tell people what you see as then they know the capabilities you have. But with this, Google plays a somewhat disinterested third-party and "outs" the Chinese sub without the western powers having to leak that the sub exists. Amazing. Just like that, the western governments can bring up the boat as a "problem" without having to expend any of their intelligence in the bargain.

The web and companies like Google are going to change the way people look, act, respond, and are governed. Wild.

Genius Bar Help

Sunday, July 1st, 2007

Apple-logo.jpg

Last week my son told me that the Mac Mini's keyboard wasn't working. It's the kid's computer, and it's used a lot by everyone in the house. It probably should be upgraded to a nice iMac, but that's a different story. I went to look at the machine and it was in major trouble. Light, Fan, but no start-up chime. Yikes. So today we took it to the Genius Bar at the Schaumburg Apple Store.

I knew the warranty was close - it'd been a year, give or take a bit, and just needed to get everything off the computer hoping it was not the hard drive. So I expected to pay - I just really needed it to be fixed. Knowing that this weekend was the launch of the iPhone, I decided to wait for Sunday and let all that excitement die down.

We made the Genius Bar appointment Saturday afternoon for 1:30 pm the next day. Good enough - we're in line.

We show up at 1:25 pm and we're #2 in line for the Mac services. Not bad. We have to wait a little while to have someone get around to us. I explain the problem, he checks it out with a monitor, keyboard, and power supply. The first test is that it's still not working, and it's not the power supply. That's some relief, anyway. Next, so takes it in the back to reseat the RAM. I've already done this and it didn't help, but I'm not going to get in his face about this, so I let him take his own path in the debugging cycle.

He comes back and that's not it. He looks at his laptop - which I'm guessing has the decision tree for debugging Mini problems, and then comes to the decision that it's the main logic board. This was one of the two things I had found would be the problem from my Googling - the other was the power supply, and we'd already ruled that out. So it's the logic board. Now what?

"Yeah, it's the logic board, and it's about a month out of warranty - but we're going to cover it for you. We have to order the replacement, it'll be here on Wednesday and it'll be a very fast replacement. We'll call you."

Simple as that, it's going to get fixed. I am completely overjoyed. I can't believe my luck. I'd heard that the guys working at the Genius Bar had a lot of leeway with the warranty work, and they didn't like people getting in their faces, so I had played it very cool for this reason. Now that it was looking like it was going to get fixed, it was dancing in the streets time. I could not believe it.

This experience, in addition to all the others I've had with Macs and Apple, in general, makes me a customer for life. I know there are some that have bad experiences... bad products... but I'm not one of them. I feel good every time I'm in that store. I know that just about anything I get will be top quality and will work wonderfully, and if it doesn't, the guys at the Genius Bar are going to give me a fair shake. You can't beat that.

So... all we have to do is wait for a couple of days for the call and then go pick it up. I'll make sure to pick up a big drive as well to make automated backups with. I'll put the same crontab I have on frosty on the Mini, squirt, so that the kids won't need to worry about losing anything should this happen again.

Trying to Keep an Even Keel

Thursday, June 28th, 2007

Today has been an interesting day. Things have been rough at times in the past few weeks, certainly seem to be going through a slump. And like any slump you have to try to keep an eye on the horizon for you know that someday soon your luck is going to change and things will turn around and once again life will be good. But making it through a tough slump is no fun, and one lasting a few weeks to a few months is certainly something you look to get out of as soon as possible.

On the downside, last night my son told me the keyboard on the kid's computer (a Mac mini) was messed up, so I went to look at it and see what the problem was. Well... it wasn't the keyboard - it was the mini! It would start to power up, I could hear the DVD engage, and the light on the front came on, but no chime, and that means bad news. I took it apart to see if it was a simple RAM seating problem - nope. Maybe the drive connector - nope. I was thinking that it was a bad drive and that would be horrible as all the kid's stuff is on the box. I have some backups, but nothing recent, and there's stuff there that is really nice.

So this morning, I did some googling and found out that it might be the power supply, or the system board, or maybe the battery, but it's something along those lines. Most likely not the hard drive. That was definitely on the upside. Tonight I have to go home and try out a few things, and if nothing works, it's time to go to the Apple store and see what they can do for me. Not ideal, but saving the data is now priority 1. As soon as it's set up, we're getting a nightly backup in place. Not going to let this happen again. Ever.

On the downside, I had another run in with the Rock Star and his own unique way of suggesting an idea. This time, he was saying that one of the methods on an object was not very strong. I looked at it, and it looked acceptable to me - certainly within the guidelines in the comments on the method. But he said how I should look at the code for a Java class and how it does the same thing the safe way. Well, I looked, and it did virtually the exact same thing. Nearly identical. When I pointed this out to him, he agreed, and then apologized - he'd not read the comments and formed a bad opinion. On top of that, the code he referenced was not what he thought - and it only bolstered my code. This is what's aggravating me about this guy - why not ask? Why accuse? Why not discuss the possibility? Why point out what's wrong and how to make it right - when in fact, all he did was show himself to be a lazy reader and have a poor memory.

So while that appears to be an upside, I talked to him and he doesn't see it as something to avoid. He didn't think there was anything wrong with his approach. This means that he's going to be doing it again, and again, and again... and after a while this is going to be really annoying. Maybe I'll just assume he doesn't know what he's talking about and force him to re-read the code, but my guess is he's going to be a pain in the neck for as long as he's here. That's too bad. Maybe when he learns enough of the systems he'll stop asking the questions. Hopefully.

Work is stressful even under the best of circumstances. The demands are high, the responsibilities for someone willing to accept them are high, and thankfully the rewards are high (otherwise it'd be a losing proposition). But there's got to be a way to get out of this slump and get back on top of the game. I know it's as much attitude as anything else, and getting that positive mental attitude is hard when you're in the slump. I just have to keep looking at the horizon. It'll come, I know it will.

Complaining about Comcast

Tuesday, June 19th, 2007

I was reading a story on Slashdot today about a blogger that was mad at Comcast for essentially rolling back features, in this case, HD channels, on her service. She could always upgrade her service to pay more to get them back and get others, but she was mad about what Comcast had done. I agree with her that it's a raw deal by Comcast, but honestly, what do any of us expect from the likes of Comcast, AT&T, and the large cable/telco companies? Honesty? A good deal? Please.

I spend more than $200/month to Comcast for cable and internet. I'm never going to get VOIP service until they change the regulations on 911 service, but given that I get all the channels, an HD PVR, 8Mbps (down) Internet, I'm not surprised that I pay a nearly insane amount of money to Comcast. But what's the option? AT&T? Not likely... they use a Dish service in Chicagoland, and their best DSL is still slower than the cable modem speed I'm getting. It's just what the market is willing to bear.

I can remember paying $750/mo for a 56kbps leased line through Sprint to the internet for my company. It was early 1990s, but still... $750/mo? The 56kbps line was no different copper than a standard phone line, and the service was something they already had in the CO (central office). I know this because my company was a computer/telco consulting company. But if you wanted to have something other than a modem connection in the early 1990s, that's what you had to pay. Comcast, while a different company, is doing the same thing - charging what the market will bear.

Unfortunately, there isn't enough competition to really drive prices down. Verizon's FiOS isn't in Chicagoland, and I can understand why - Comcast has incredible market penetration, and to put all the infrastructure in-place to 'steal' customers from Comcast is a dodgy proposition. Better to go to someplace that's not served by Comcast nearly as well and get much better market share right off the bat. So they go to other places first. Even if they did come in, they'd hardly undercut Comcast by much... maybe a few dollars, or provide features (like speed) that Comcast doesn't. Again, doing what Comcast did with their cable modem to AT&T's DSL.

So it's business... nothing more, nothing less. While I don't like it, I can't very well blame Comcast for doing it. I can vote with my dollars, and if I really don't like what Comcast is doing, I can go somewhere else. But in this area, the choices are limited, and it's not like AT&T is a corporate angel, either. It's business. What surprises me is that she was supposedly an industry insider, and she's still surprised. Now that's amazing.

Gotta Leave it on the Track

Monday, June 18th, 2007

Interesting thing happened on Friday, and I'm just now getting around to writing about it. One of the new developers here asked me about my opinion on the checked versus unchecked exceptions - otherwise known as the runtime versus typed exceptions. So I talked to this guy for a while about where we use one versus another and why we try to stick to a scheme given that Java itself makes this pretty hard to do. For example, Java has runtime exceptions and typed exceptions in it's code, so when you try to write code like Java's you are stuck trying to make it look like Java, but since there are really no hard and fast rules as to when to use one versus the other, it's a bit tough, and you have of make a lot of judgement calls. Nothing horrible, but something you have to be aware of.

So as we're talking about this, the guy tries to show me that I'm inconsistent in the use of these in the code I've written. I understand exactly what he's trying to do (though he denies it) - he's trying to show me how smart he is in an effort to gain my respect. Missed the boat entirely.

This kind of "See how smart I am?" crud does the exact opposite for me. Sure, you look at the Vector class and there are a lot of exceptions that are unchecked - ArrayIndexOutOfBoundsException is one. In JDBC this would be a checked exception for sure, but here, it's not. Why? Who knows. More importantly, who cares? When you're writing JDBC-based classes and extending them, you have to live in that little sub-universe of Java, and stick to their pseudo-standards. In the case of the Vector, you have to stay in the world of JDK 1.1 and realize that in the beginning they weren't using a lot of checked exceptions, so you have to make you code look a lot more like that - certainly if you're subclassing Vector (which was the case in this instance). Then he asked me to look at his code and what would I do in this specific case.

I looked at the code and said that he should check the input parameters, check all returned values, and single-entry/single-exit all methods. These are the three most basic coding standards that I have and believe in them without question - regardless of the language. He then said that this code didn't need that. A light then went off in my mind and I knew exactly who this guy was. By the way, he was the Rock Star of the previous few day's posts. This guy was a lazy Rock Star coder.

I asked him my one of my favorite questions about self-image and human nature: If you were driving on a road at 2:00 am and came upon a stop light that was red, and could see far in all directions, far enough to see that no one was coming, would you run the red light? His answer was "Yes", as I knew it would be. I pointed out to him that this tells me he believes himself above the "rules" made by others. After all, the stop light is just supposed to keep us safe, or is it the law to obey them? Yes, it's a law, but many people think it's really optional, and so feel that it's their life, and they can decide what's important and what's not, and they decide that this light isn't worth stopping for.

So we look at his code. We talk more and it comes out that he's built server-side code that has all these checks in it, but he hasn't put them in this particular code because he thinks it's not worth it. I ask him: "Why isn't this section of ten lines of code worth your very best efforts?" He has no answer, and wants to change the subject - which means he knows that I'm right, and that well documented, error-checking code is really better than code that's totally optimistic and undocumented. But he was trying to show me how smart he was, and this is really spoiling his plans. Sad day.

This goes into every aspect of a person's life - you either run it out to first base, or you pull up if you think you might not make it. You either go all out every time, or you sluff it off. You play at your level, or you sandbag. It's personal honesty and integrity. As Yoda said: Do or do not. There is no try. and he wasn't talking about giving your best effort and failing, he was talking about giving it everything you have all the time, believing that this is the last time you'll ever get a chance to do this, or you hold back, take it easy, realize this isn't a playoff game, etc.

I have no interest in living my life the latter of those two. I have to give it everything I have every minute of every day, or I'm just not going to feel like I can look myself in the mirror in the morning. And when I give it everything I have, I can look myself in the mirror - win or loose, and know that the only thing I can do is practice, because there's nothing I could have done to change the outcome - there's only what I can do to change it the next time.

Introspection is Painful

Friday, June 15th, 2007

Several things have happened in the last few days that have caused me to look back on things, times, places, and look within to see if I'm really the person I think I am, or if I'm just kidding myself. It's not a fun process. Never is. Never has been.

The first incident was an old friend from grad school emailed me about some pictures that Purdue had up on it's site for the graduates. Some were clearly professionally done, others were very clearly not. What sort of stung was the fact that I spent 9 yrs. there and there was no picture of me. It's like I was a ghost. Invisible. But I wasn't. I taught classes, did research, did a lot of stuff, but in the end, I'm only a footnote, it seems. Now I know that I didn't take the time, effort, or money to get a professionally done photo for the school, and I didn't go out of my way to put in an amateur one. But I am willing to guess that my friend that sent me the links didn't go out of his way to get an amateur picture of him there, either.

I'm surprised at myself, a little. I didn't think it would bother me, but it does. Just a bit. I look back and think What difference am I making? and I'm stuck thinking that about the only thing I'm really doing of any permanence is raising great kids. No one really seems to care too much about the work I'm doing. And in all honesty, if I weren't doing it, they'd survive. Maybe have to have more people, or do with less, but they'd still keep rolling.

Which brings me to the second thing that recently happened that caused me to take stock. Yesterday, I wrote about the Rock Star programmer, and today I talked to his manager - simple saying that one of my concerns before we hired him was that he might turn out to be just like this - Do what I want, or I'll do it anyway. And the feedback I got from his manager was a little surprising, and at the same time not: he was happy with the guy. He hadn't had any experiences like I had with the guy and was producing a lot of stuff - comparable to the others in the group. Again, I hate to say it, but it's classic Rock Star programmer - gets lots done, but don't cross him.

I didn't push it, and didn't want the manager to do anything at this point, I really just wanted to express my concerns and see how his dealings with 'Mick' had been going. I know in my bones that this guy is going to be more hassle than he's worth. But I'm not about to make it an issue. But it got me to thinking: Am I a Rock Star programmer?

I suppose that anyone that's really productive can think that maybe there's a little element of the Rock Star programmer in them. Being a Rock Star is, after all, about getting a ton of work done in a very short time. But very soon after that, the similarities end and a good, senior, developer is entirely different from a Rock Star. So I was looking within and trying to see if I was really who I thought I was.

I guess the thing I look at are those things that I see that are clearly not the qualities of a Rock Star in myself. Like the middle of the night phone calls. Never lost my cool, always explained everything, walked them through the problem, or if they wanted, I just fixed it myself and then sent out an email explaining the problem. Existing code - I stick with what is as opposed to what I'd like it to be. I might not code this class a certain way, but if it's there and working, I'm not going to spend the time to recode it just because I don't like the way it looks, or how it's structured. Now, if I have to re-write big sections of it, I'll probably clean up the indentation, add a bunch of comments, and such. When I write new, I try to stick with the 'tone' of the rest of the library/package/project. It's just easier on the next guy that might have to pick this up. There's no need to make it look like it's been written by multiple folks, even though it clearly has.

So I guess I'm comfortable with where I sit in the spectrum. I'm certainly not a wallflower, but I'm pretty confident that I'm not a Rock Star either.

Summertime and Relaxation? HA!

Monday, June 11th, 2007

This past three-day weekend we took a trip to northeastern Indiana to a state park for a little pseudo-family reunion with my side of the family. It had it's moments... there was swimming for the kids... playing in the wide-open spaces with footballs, baseballs, frisbees... taking a hike to the nature center... having pizza with everyone... no doubt, there were fun times. But it wasn't very restful. Summertime isn't very restful, is it? I mean, the weather is nice, and for those of us that live in cold and ice for far too long each year, it seems that we're so excited about the warmth, that we forget that we're wearing ourselves out.

Then, on the way home it's time to stop by the Farm and see Liza's Dad. Always fun, but we get to spend about an hour or so with him and then it's time to head out to get back in town in time for me to get some sleep before I have to get up and start the week. I know that my workload is at least partly to blame, but that's also the primary reason that we have the time and money to do the things we do. So we can't be too hard on the workload.

I look forward to the weekends to rest and relax. But it seems that summertime is always not when you get to really rest and relax. Liza said to me "Lazy, Hazy, Crazy Days of Summer? HA!" and she's right on the money. I don't like the snow, but Holy Cow! I'm ready for a little rest already.

Silly Parent Tricks

Tuesday, May 29th, 2007

As a parent, I have dome some pretty crazy things... I've been sprayed with pee... I've caught poop in my hand to keep it off the floor... I've been kicked, slammed, thumped, and pounded by kids - but up until this past weekend, I've never shot myself. This is one of those stories that reminds me that the most important thing to keep as a parent is your sense of humor.

Anyone who's watched A Christmas Story knows that Dads often think about the (unsafe) toys they had as a kid when their kids (boys or girls) want to have a similar unsafe toy. As a parent, it's you'll shoot your eye out, but as a kid it's just the ultimate in fun. In recent weeks my son, Joseph, has been asking for an Airsoft gun to play with in the back yard. Since it was a slower muzzle velocity than the forbidden BB gun, it seemed like it might be a non-messy paint-ball gun. So we had a look.

The guy behind the counter at the Bass Pro Shop said that it'd leave little bruises, but not puncture the skin. That if we wanted to make sure, we could go home and shoot ourselves to see what it really felt like. Seemed like a good plan at the time. Ah... silly parents...

I unpacked one of the guns when we got home, loaded it up. Looks nice... non-threatening as it's translucent, but it's got good weight and the clip is nice in that it can take 15 shots and then the child in question has to reload. Better than the old days of dropping in 500+ BBs to my air rifle, pumping it up 20 times, and punching through metal. But I digress... I then took the gun to the garage as I didn't want my neighbors seeing me shooting myself in the backyard - that'd bring a 911 call for certain.

So in the garage, I'm sitting on the steps to the garage door with my elbows on my knees. I'm looking in the recyclables thinking it'd probably be a good idea to shoot something hard and just feel the impact energy before actually shooting myself. So I find this nice, sturdy cardboard and think the guy at the store said it would not break the skin, this is pretty tough, should do nicely. Ah... silly parent...

So I put the muzzle of the gun to the cardboard and calmly pulled the trigger.

YIKES!

The little yellow plastic ball had gone clean through the cardboard and tagged my left leg! It stung, but not as so bad that I jumped. Then again, it had already slowed down while plowing through all the good, strong, cardboard. For a second, I looked at the cardboard with disgust, as if it had let me down. Then I quickly realized what had really happened and looked at my leg. A bruise was already appearing - shaped like a donut, or 'O'. Interestingly, nothing in the center was bruised, only the periphery. It didn't raise a bump. It stung for about a minute, and then it was just a mark. No lingering pain.

I walked back into the house, showed my wife and the kids. They were surprised and a little bit scared of the guns. Good. Healthy respect, that's nice. It didn't hurt any longer, but it was a funny story to tell. So I tell this story so that other parents can spare themselves from shooting themselves with one of these guns. They are not safe to shoot at each other. But they are probably more safe than BB guns. Lesson learned.