Archive for July, 2008

Pushing Numbers a Little Harder – Good Results

Tuesday, July 15th, 2008

Numbers.jpg

This morning I was updating one of the Numbers spreadsheets I had and was trying to push the envelope a little more and see what tools Numbers really had for - well... crunching numbers. I had some data that I wanted to have massaged a little more automatically, as opposed to the brute-force method that I had been using for the past year - since I moved the data from Mesa to Numbers.

The first thing was to have a better calculation of the YTD comparison of monthly numbers. The issue was that I only wanted to look at those months I had data for this year in the previous year. Making it as apples to apples a comparison as possible. The trick there was that the comparison needed to be a sum of the data, so it was possible to make a new column with the IF() function, but it was done even better with Numbers' SUMIF() function.

By simply making the test range this year, and the comparison ">0" and the sum range the previous year's data, I get the sum for the previous year's data for only those months that I have data for this year. Excellent! One thing done automatically that I needed to do.

The next thing was to have the year-on-year monthly changes automatically computed without messing up the sums or averages by putting a '0' in the cell. This was pretty easily done with an IF() call where the conditional was the value for this month of this year being great than zero, and the true clause was the percent change. The false clause was simply the empty string, and that worked out pretty well.

When I was done with the process I had a workbook that looked the same, but acted entirely differently, and much more like a cool, complex, spreadsheet should operate. Now I put in the raw data and shazam! the complete workbook gets all the data it needs. Very cool.

Yes, I realize this isn't that big a deal, but the little I do with spreadsheets is very much brute-force and the steps to find out these functions and use them well was an interesting exercise.

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.

Update for Skitch and the Window Snap

Monday, July 14th, 2008

Skitch.jpg

Because I was out of communication on vacation for all of last week, I wanted to check my favorite apps to see if there had been any updates to them in my absence from the net. There had been, in fact - Skitch was updated and after the update I noticed a wonderful feature that I hadn't used up till now, but I'm sure to use it more and more in the coming days - it's the Window Snap.

Basically, when you do a constrained snap with Skitch if you just click on a window, it'll automatically select that window - with or without a shadow, on white, the desktop, or a transparent background and save it as your latest picture. You can then draw on it, save it, share it, all the regular Skitch stuff.

I've been looking for a simple 'window grab', and was looking at Flickr for pictures for the web site, but Skitch is just too good. I really like this app. Excellent stuff.

Updated iPod Touch to 2.0 and iTunes to 7.7

Sunday, July 13th, 2008

iTunes.jpg

When I got back from vacation on Friday I knew that I'd have the update for my iPod Touch waiting for me - and my $9.95. It doesn't matter, I knew I was going to upgrade - it was just a matter of time.

The upgrade was exceptionally slow, however, and I have to say I was more than a bit surprised at this. Given the other iPod updates I've had in the past, this one should have been much smoother, but it wasn't. Basically, it seems that they saved a few things off to iTunes, then wiped the machine, installed the update, and re-synced all the media again. I would have expected a little more efficient scheme, but I can understand that this is a know, repeatable, reliable way of getting it done.

As a side note, I also updated my PSP over the weekend and it was faster, but that had limited functionality in comparison to the iPod Touch, and yet it went just as smoothly, if a bit faster.

I also updated my iTunes to 7.7 so that I could access the App Store, etc. I'm not planning on buying a lot of stuff on the store, but it's nice to know that should I decide that there's an app I have to have, then I can get it without any hassle.

Adium 1.2.7 Update

Sunday, July 13th, 2008

Adium.jpg

While on vacation I got word from Adium that there was an update to 1.2.7 available. I got it and promptly forgot what the updates were from the release notes. Typical me. I believe, however, that they were small - as if that helps, but it's something to get anyway. I use it all the time every day and it's become an integral part of my daily communication. Gotta have it.

MacVim Snapshot 33 is Out

Sunday, July 13th, 2008

MacVim.jpg

While on vacation, the great guys developing MacVim released another update - Snapshot 33. There are a lot of changes, but I didn't take a lot of notes as I was in a Disney World resort at the time. I got the update, and if you're interested, you should too. I think this is the best Vim implementation I've seen and it's certainly the best Vim on Mac OS X.

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.

MarsEdit, WordPress, Flickr, Skitch and Blog Images

Wednesday, July 2nd, 2008

MarsEditIcon128.jpg

One of the really nice things I like about MarsEdit and WordPress is the ease with which you can put images into your posts. Sure, it's not rocket science, but there's writing the image tag and then there's point-and-click. I like the latter when there's a really nice interface. So I've been doing a little experimenting with the image options with MarsEdit.

There's the images that you upload to WordPress, and that's OK, but it has a limit on the upload of only a few kb. It's not horrible, but when I was trying to put up 20kb images it often times didn't work, and it's probably as much to do with the connectivity as anything else - but this is the connectivity I have, and if it's unreliable, then it really isn't a matter of why as much as it's a question of how to get the images up to the site?

Skitch.jpg

Many months ago I read about Skitch, and watched the demo and thought Hey, this is sweet! and signed up for an invititation. After a few months, I got an invite and have been using it ever since. It's been a simple way to take iSight pictures and screen shots and get them up to a place where they can be saved and served.

Flickr is the same kind of service (so I thought) and so I was recently looking at the different Flickr clients - settling on 1001 as it seemed to be a nice small app that did what I needed and didn't make a big deal of itself. The wrinkle with Flickr was not Flickr - but MarsEdit. When you place an image into a post from Flickr you get a 'mini' version of the image and a link to the Flickr page where the image resides.

This is OK if you're really wanting to forward folks to Flickr, but if you want to just display images in your posts, this isn't the best thing because the way it's integrated in MarsEdit. However, if I put the screenshots up on Skitch then I have to go to the Skitch page to get the URL and then paste it into the post in MarsEdit. It's like I have to do the work up-front or force the readers to do it on their own.

Neither is ideal. So I posted a request to the MarsEdit forums about adding Skitch support. Ideally, I'd be able to put something on Skitch (like I can in Flickr) and then MarsEdit can preview those images and I can include the links easily - but as regular images and not links to pages with images.

Daniel wrote back about the future plans, and if he does the plug-in I think I'm going to have to write a Skitch one as this is just about the neatest little snap-n-share application and service I've ever used. If you haven't seen it, take a look.

Large Java Applets are Buckets of Grief

Wednesday, July 2nd, 2008

java-logo-thumb.png

I've spent the better part of this day trying to track down a nasty little bug in, what I think, is Windows XP IE/Firefox and the Sun JDK/JRE Applet plugin 1.6.0_06. Now I say trying because I thought I had it fenced in to a certain set of repeatable conditions, but when I went back to check them after about an hour of running other tests, they failed me and the problem vanished. Crud!

The problem seemed to be a combination of using WebStart and a specific application off WebStart, and other Java apps on my box, and a web page that uses two fat Java applets to display data. One is a table of data, the other a graph of the same data. When I went to the web page, after running the WebStart application, IE (and Firefox) would lock up. Totally locked up. Not good.

I dug into this and have come to the conclusion that it's a combination of running this app pn WebStart, possibly the applet JRE version, and certainly the loading order on the page(s) in IE. If I go to the 'problem' page first, I get trouble - keep all else the same and going to another page first means that I can safely go to the 'problem' page later. Very odd.

When I went to change the version of the JRE that IE uses in it's applet tags, I found it exceptionally hard - as opposed to something like Mac OS X has where there is a little app that controls the version of the JRE used for applets. It's these little things that really frost my cookies with Java and Windows.

Anyway, I'm spending my day not really accomplishing anything because of these large applets and IE issues. I understand that sometimes it's nice to have applets to have a limited interactive functionality, and applets are great for that. But when the applets get to the point where they are causing as much grief as this, then you've overextended the design goals of applets. They become apps and that's what WebStart is supposed to make easier to deploy.

UPDATE: after another hour or so of fiddling about, it turns out that if I use JDK 1.5.0_15 and that's all, then I'm OK. If I even install JDK 1.6.0, it's going to take over the applet duties for IE - no matter what the settings in IE say. This, then causes the problem and we get the lock-ups. If I didn't need JDK 1.6.0, I'd be OK, but we need to have Java WebStart, and the 1.6.0 version is what we're standardizing on there. This means that for now, we leave the users on 1.5.0_15 and when we have to update to 1.6.0 for the WebStart for the users, I'm sure hoping that we have a newer version than 1.6.0_06 - with a fix for this crummy problem.

I hate big Java applets. Make an application, for heavens sake! Or switch to something like AJAX, or live with the page refreshes! It's not meant to do this.

UPDATE: HA! I found a bug report at Sun where several people were complaining that they had applets that worked fine in 1.4 and 1.5, but with 1.6.0_06 they were having a lot of troubles - just like me! Sun's idea was to try 1.6.0_10 (beta) and see if that didn't fix the problem. So I downloaded the two-part JDK/JRE and BINGO! that fixed the problem. Guess Sun's had this quite a bit, and fixed it. Good enough. I still think we're pushing the limits on the applet design and we need to come up with a completely different client footprint design - AJAX and Javascript frameworks or a full-up client.