Archive for the ‘Cube Life’ Category

Lots of Job Changes Going On

Thursday, July 17th, 2008

GottaWonder.jpg

A very old friend is getting a new job - he's only been at his current position for 7 months, and he's worried that this will make him look a little flighty. I think it's great that he realizes that this isn't the place for him, and found a new place to go to.

A new friend of mine, and co-worker, has put in his two weeks notice and will be moving on to work with another friend of mine soon. He's excited as it's a huge opportunity for him.

My friends are getting new jobs, and I'm currently waiting for plans and decisions to be made. Consequently, this means I have a little more time on my hands than usual which, under the circumstances, means that I get to talk to my friends in these transitional phases they find themselves in. True, one has been at a place six years, and the other seven months... one I've known for decades, the other for a few years, so there are lots of differences, but also a lot of similarities.

Change is always a challenge to go through well. You have to be excited about the new, but you've obviously got a lot of feelings about the old - even if it's not that 'old'.

I look at my kids too. A son starting High School this fall - more big changes... daughters starting new things as well... it's all about a lot of change. We're all pretty well managing the change, and the risks of the change, but every now and then things can seem a little daunting.

It's odd... interesting and at the same time sad, that I'm watching all this change, and not really being a part of it. I've had plenty, and I'm sure more to come, but it's a very interesting time, and there's time enough to think about it all.

Poor Motivation Strategy: Be Happy, or I’ll Kill You

Wednesday, July 16th, 2008

PHB.gif

I don't usually spend a lot of time dealing with suggestive management techniques - I was a manager, and it's not easy if you're not a natural at it, or you don't have the ability to become really good at it. It's not an easy thing to do, and it's often thankless as you're in the middle of the work-flow - not really doing the work, and not at the top, so you tend to get it from both sides. That having been said, I heard of a motivation strategy that has to be one of the historically worst in human history: fear.

Sure, it's a decent short-term motivator: fight or flight. It's built into all of us. But to use it in business is a sign of desperation. Which is never a good thing. Today I heard someone say "I need you to be excited about doing this - or I'll find someone who is."

When I was talking to other people later in the day, a friend coined the phrase "Be Happy, or I'll Kill You!" - and I had to laugh. It seems so non-sensical when you put it that way, and that's the way it was really put forth. I know people get under stress and they say and do things that they wish they hadn't, and there's always time later for apologies. I'm just worried that this isn't that time. I'm worried that it's going to get worse before it gets better, and if that's the case, then some folks are in for a very rough ride, indeed.

I know management can be hard. I know I'm not any good at it. I've known some people that were really good at it, and some that weren't. I just hear these things and I think Uh oh... this can't end well...

Static Code Analyzer for Obj-C

Tuesday, July 15th, 2008

xcode.jpg

OK, I've been coding for a long time. I've used lots of development environments and the only one that I've found that really holds my interest is ProjectBuilder/Xcode on Mac OS X. From the first time I used it on NeXTSTEP 3.3, I knew it was something far beyond an editor with build tools. It was just so clearly built by developers, for developers. I'm still of that same opinion today.

This morning I read about an interesting tool that analyzes the Obj-C/C code and tells you where you might have issues with leaks, etc. Nothing that hasn't been covered a dozen times before in a dozen different tools, but this one is a little different. First, it's a syntax checker. Again, lint did this for decades, but this is different in that it knows about the idioms of Obj-C and the class structure that Mac OS X uses. That's huge.

Next, it's slick in it's reporting in that it's all web-based and generates all this very simply. I'm not a big fan of web apps, but for reporting, it just can't be beat. What they have done here is the very best of web reporting for coding issues, and I have to say it's remarkable.

I decided to put in one of my projects to see what it might find. Interestingly, it found a possible error in one of my classes in that I wasn't creating a - (void)dealloc method for the instance. Now, technically, the class involved is the main controller class, and it would not get deallocated except on shutdown, so there's no real problem there, but it's nice to keep things clean and try to do the right thing all the time. So I added the very simple method and re-ran the checker. Clean, save for a dead store issue that I'm not about to change as it's really just the last part of a method that doesn't return the error code. It's more of a coding style than an error, but I appreciate that it's telling me about this.

While I'm not doing a lot of Obj-C coding these days, it's tools like this that make me want to change jobs so that I did do a lot of Obj-C coding. The Mac is a wonderful platform, and its development tools are the best I've ever seen. With the addition of tools like this code analyzer, it's even better. Long live the Mac!

Sometimes the Explanation is the Hardest Part

Monday, July 14th, 2008

cubeLifeView.gif

Today I had a meeting with my Boss and he wants me to take a more managerial role in the project he's got, and I appreciate the opportunity, but he really wasn't listening to me when I tried to explain that I didn't think I'd be the right guy for the job. I don't blame him there, either. He's got a tough position and needs to have this project succeed. Everything he's put me on has succeeded, and that's a pretty impressive 7 year track record. Makes sense he wants me to do this.

But it's not what I want to do. Not even a little.

I've been the manager, I'm not that good at it for a wide spectrum of people. I lead by example, I believe in hard work and honest mistakes, and if you're talking and chatting about the Cubs then say you've had no time this week to complete your assigned duties, I've got absolutely no sympathy for you. Face it... you had an assignment, you played around and now want to say you have no time? Sorry. You messed up. Face it, apologize, and don't do it again.

Unfortunately, that's not how a lot of the folks in this place seem to function. They have their own pace. As long as the current management is happy with them, that's great. I just know if I were to manage these folks, many would think I'm even more of a jerk than they already do. But none of them would be able to say that I asked anyone to do anything I haven't already done myself.

I owned a company, I've done the management thing. I realize I'm not the kind that really inspires people. I'm the person that works very hard to get something done and then moves on. I don't waste a lot of time on chit-chat, it's just not how I enjoy spending my days. I want to create. That's what makes my day have meaning.

But they seem determined to try and push me into a management role - that really isn't a management role at all. Just a role of responsibility. Responsibility without authority - a recipe for disaster every time. When I try to explain it to him, he's not really listening. He doesn't want to hear that I don't want this... he needs to hear I'm all on-board and ready to go. So explaining to him without offending him is nearly impossible.

So I'm not sure what I'm going to do. I know that I'm going to do my best as long as I'm here, but this may very well be the reason to move on. I've had a great run here, better than most. So it's not bad to walk away at this point. Look for new challenges, seek greener pastures, all that. Maybe this is just that event I've been waiting for to get me into gear.

Why Not Stay a Do-er?

Thursday, July 3rd, 2008

PHB.gif

I have been working on a problem for the last few days at the Shop - a pricing data issue, and in the past I've worked closely with a good guy in another group to solve these issues. He's a great guy, in fact, always there to help me and we support each other's causes - when he needs to get something going for me, I tell him exactly what I need, and he scrapes it together... when I have a problem with his stuff, I don't scream and rant, I give him a good bug description and don't hassle him constantly for a fix - I know he's on the case, and he'll get it to me as soon as he can.

So yesterday I wanted to ask him if he got the trace data necessary for the problem we're looking at. He said he'd given it to the support team and that he'd check with them and if they haven't gotten it fixed, he'd step in.

He's become the manager.

Why?

I know it's The Corporate Ladder, and you're expected to climb it. It's not called the corporate couch or something, but still - why?

He was (is) a good guy, very talented at what he does, and still he wants to move to a position where he's not sure he's good at it, and not sure he's interested in getting away from the coding, but he still makes the move. And he's not alone... I know most people would be doing exactly the same thing in his position. But I still don't understand why?

I've managed - in fact, this is the first position where I'm not managing since getting out of college. I've owned my own company, I've done the corporate ladder... it's just a ladder that never ends. Never. You'll climb and climb, and then get on another company's ladder and climb there, and for what? Money, Power, Glory? OK, it's nice to have money, but after a point, isn't job satisfaction important as well? When you're coming home to your family, don't you want to say "Hey, I did this today!"?

I know it's not popular, but I like building, and doing, and would rather not talk about it to death. I'll be glad to talk about other people's achievements - great tools and projects I've seen and been a part of... but to do nothing more than be the classic Dilbert Pointy-Haired Boss.... No thanks. I want my life, and here I'm talking about my work life, to be more than that.

Funny Video about IT Support

Monday, June 30th, 2008

cubeLifeView.gif

I found this movie on Daring Fireball, and I have to say I've laughed hard each time I've watched it. It's not that I'd have played either role in this clearly fictional interchange, but it's so typical of many of the interactions between non-technical folks and the IT folks.

The vocabulary miscommunication... the reboot that turns into a power-cycle... the mistaken power-cycle... the remote desktop session... it's all just too funny when put together in a short format like this. Really quite impressive. I watch this with my wife, and while she didn't understand all of it, she understood enough, and was amazed by the 'Exchange Gymnastics' so that even she laughed quite a bit.

The icons are a laugh all by themselves.

If you have ten minutes, and are in IT, watch this. Incredible.

Coming to Terms With One’s Place in the Organization

Monday, June 30th, 2008

cubeLifeView.gif

I was trying to get some sleep last night, and I got a call from the Shop about a problem with one of my systems. It wasn't my fault, but that doesn't matter, does it? There is a problem, and it needs to be fixed, and trying to assign blame is just not going to do anyone any good. I walked the second-shift guy though the initial debugging steps, and it appeared that I had to get out of bed, get online and see what was happening.

Turns out, there's a mistake in the generation of a back-up position file, and the simplest thing was to get the primary working and base things off that. I did it, and was back in bed in about an hour or so. Not a huge deal. But then it got me to thinking about the last few weeks.

I've been asked to get "emergency" updates out for projects that aren't mine, and did them literally in less than half the time the manager of the product expected - less than 24 hrs. in all cases. I've been asked to do several things that under 'normal' circumstances I'd never have been asked to do - all because it's an emergency for one business user or another, and they needed it done right away and had no time to get one of the eight people on the project to actually do it.

Then the calls about the problems that aren't really mine, but I'll fix because that's the kind of person I am. I don't pass the buck, I don't find the problem, assign blame, and hang up. I find the problem, fix it, and then we try to make sure it doesn't happen again.

I'm the classic go-to guy here. I've been here for so long that I know how a lot of things fit together, I know what's supposed to happen, what might happen, and how to deal with it. I'm a walking compendium of environmental knowledge, and that's become what my real job is. I'm trying to come to terms with it, because I took this job to be a coder, and there are a lot of people here that have far more time with these systems than I do, but they aren't the kind that will function as I do in the middle of the night. Many will yell and hang-up, or simply not answer the phone. So I've become the person I am.

It's security, that's for sure. But it's also a little boring. I want to create not answer the same questions 53 times a week from 13 different people trying to track down what happened on this day at this time because the business wants yet another post-mortem on the problem. I understand the need for the analysis... I just don't see the need for everyone to bug me about it.

I'm going to have to grow into this role, that's for sure.

Adding a Pseudo-Z-Axis to Scatter Graphs

Friday, June 27th, 2008

comboGraph.png

Today someone stopped by and asked if there were a way to add a grouping, or filtering, capability to the scatter graphs that I have built atop the VantagePoint graphing system. In the Shop, we use these interfacial classes as they include applet frameworks so it's easy to include them in applications and applets, they represent a simplified user interface, while still allowing the user to dig into and grab the VantagePoint objects if required.

The functionality is basically this: have the user indicate a column in the dataset - numeric or alphabetic, and then generate a list of unique values for that column. Put those into a simple JList in the graph's GUI and then allow the user to select/de-select the values and in so doing, showing and hiding the values on the graph. For a concrete case, imagine there's a column that indicates the species of an animal, and the rows are a series of animals on a farm. Many will be duplicates (cows) because there may be specific data fro each cow, but there will also be chickens, and pigs, and dogs, etc.

By selecting 'cow' in the JList, the cow's data will be show in the graph. Deselect it and the cow data will disappear from the graph. Pretty neat. It's a good idea, and I needed to think for a while about how exactly to implement it successfully.

VantagePoint allows me to easily show/hide the individual labels on points, so that's easy. But when looking at the points on the scatter graph we're in a bit of a pickle. You see, the scatter graph is the intersection of two columns - one for the x-axis and the other for the y-axis. VantagePoint only allows for showing/hiding of complete columns. So if I try to hide one point, I hide the entire graph. That's not good, and there were no documentated ways to do this 'single-point' visibility.

Then I got the idea of painting the points white-on-white. VantagePoint allows you to color each data point differently, but the problem is there's a black border on the points, and I could not figure out how to change that color. Then I thought of the size. Bingo! I had a winner.

I could make the points that I wanted to hide very, very small, so small that they didn't even render. Then when I needed to show them again, I could draw them 'normal' sized. This was nice because I didn't have to remember the color of the point - I just had to change the size of a point from 'small' to 'normal'. Sweet!

I still had a little work to do on the order of graphical operation to keep the 'flash' in the update to a minimum, but I think I have that working just fine now. It's been an interesting ride, but I'm glad I stuck with it to get this done. It'll be a nice addition to the graphing capabilities of the graph.

Good Coding is All in the Details

Thursday, June 26th, 2008

GeneralDev.jpg

I was talking to a friend that was 'thinking out-loud' about starting an Open Source project for a web service that he wanted to build in Erlang. It sounds nice, but as I'm not really the most knowledgeable person about the subject matter, I'm really more of an interested observer than an active participant, but we've been friends for a lot of years, and so I wanted to listen about this idea of his.

He got around to the fact that he was also working though this issue with XML files (totally unrelated, which is the way a lot of our conversations are) and the fact that the people that created these XML files had their own XML parser that didn't adhere to the XML standard, and so all the XML code they generated wasn't standard and he had to write a job to clean it all up t then use it. "It's all about details!" he said, and I could not agree more.

Development is about details. Anyone can sit and say "I want this page/view to have this, and that, and this, and I want it to look like this, with bold here, and a pick-list there..." but it's making it work that's the tough part. Even with code generators these days, it's the details they leave out that matter most. If you really want to make a sustainable, maintainable, robust application, then it's going to require that someone get involved in the details. There's no other way to do it.

If you think you can be a developer and not pay attention to the details, then my suggestion is to get another job. You're not in the right line of work. You might as well be a surgeon that can't stand to see blood. It's that much a part of the job. Unfortunately, as my friend and I spoke, I realized that we both know of a lot of 'developers' that don't have any attention to detail. I hear it every day. It's a sad statement on the craft of development that there's no easy way to tell a developer who has attention to detail from one that does not. They both look the same.

Happy 7th Anniversary!

Wednesday, June 25th, 2008

cubeLifeView.gif

Seven years ago today I walked into a new place, a new position, a new job and it's been an interesting ride. I've made many friends, some have moved on, others have come. I still talk to many, and miss others that I haven't been able to stay in contact with.

The work has been interesting, tiring, fruitful and, unfortunately at times, pointless and wasteful. It's been an incredible series of events and projects. Things designed quickly, based on good instincts, built quickly have lasted for years longer than expected and have worked wonderfully. Things designed by the best-intentioned groups with all the governance, etc. have languished for a few months and failed before ever really getting off the ground.

Ups... downs... seven years of work. Lots to think back on and remember today.