Archive for August, 2009

Tracking Snow Leopard and Clever Configuration Tricks

Monday, August 31st, 2009

Today I've been doing a little Snow Leopard tracking - following all those folks that got Snow Leopard on the opening weekend and reporting their successes and failures. I'm really surprised that I have as much 'unusual' software as I have - Growl and Dropbox are the holdouts to be sure, but a ton of apps have released 'Snow Leopard' releases. Great for me, I'll try to upgrade this coming weekend.

I was also facing a tough update cycle with an application I'm working with. I needed to change the source app so that it published more data that could then be read by the 'receiver' app and presented to the clients. I didn't want to have to go through two QA and release cycles, but there didn't seem to be any alternatives.

Then, while talking to my manager about the issue something popped into my head - clever configuration! Currently, my 'collector' app looks at the data received from the 'source' - a URL-referenced web server, serving up XML files. It parses this data and then works on it. But what I really wanted to do was to have the additional information in the parsing. However, it's also valid to think of adding that in the configuration of the 'receiver'.

What I decided to do was to add optional, additional, configuration to say "for this URL, here's the 'overrides' for the values you'll be reading". With this, I was able to very easily set up the additional information I needed without the need for the release of the other 'source' application.

I'll still add in the additional information to the 'source' application, but there's no need to wait for it and this opens the door for other overrides in the future. Pretty neat.

Cyberduck 3.3b1 is Out – Snow Leopard Ready

Monday, August 31st, 2009

The folks working on Cyberduck have released a beta: 3.3b1 that is Snow Leopard ready. This is nice as I often use Cyberduck for file transfer and the previous version wasn't ready for 10.6. Not a major deal - still waiting for Growl and Dropbox, but getting a little bit closer with each release.

Snow Leopard’s OpenCL Using Both GPUs in MacBook Pro

Monday, August 31st, 2009

One of the neat things I had hoped about the MacBook Pro with the two GPUs was that once OpenCL was in the OS (Snow Leopard), we'd be able to take advantage of both GPUs not just one as with the graphics display. I had wondered why someone in Apple's position would have wasted the space, power, heat, to put a second GPU without some idea that it would be useful to the user in the future. And it is.

This article talks about the benchmarks done with Snow Leopard and the OpenCL performance - and it's indeed using both GPUs. This is fantastic news, as it means that Apple is going to be pushing processing tasks into OpenCL, and we'll all be able to benefit from them.

Fantastic news. I just need to get Growl and Dropbox to be Snow Leopard compatible and then I can update and see the sweetness.

LaunchBar 5 Release Candidate 4 is Out – Snow Leopard Ready

Monday, August 31st, 2009

Well, while I'd heard it was running OK with Snow Leopard, LaunchBar 5 RC4 is out with the single release note:

  • This version is compatible with Mac OS X 10.6 Snow Leopard.

so I'm glad that I was able to get this before I updated to Snow Leopard. I'm still holding off for Growl and Dropbox, but they should be fixed up any day now.

Questioning the Use of Google Protocol Buffers

Friday, August 28th, 2009

GottaWonder.jpg

Being new at a job means trying to fit in. At least it does for me. After you've been around and seen how things are done, and why they were done that way, you can start to critique what's going on. Short of that, you're a clear outsider looking in, and your statements are written off as "...well... if you really understood how we do things here..." and dismissed. So I've been trying to understand the usage of 29West as the messaging system and Google Protocol Buffers on top of that.

I can see the many advantages of Google Protocol Buffers:

  • Language independence
  • Transmission protocol independence
  • Automatic class code generation

But if you look at these classes, they are really very thinly wrapped objects with simple setters and getters and no real place to put higher-level methods on top of the data package.

I can also see that any good messaging system has the exact same capabilities. 29West is no exception, and in it's API you can package up elemental datatypes, shoot them out, and pull them out at the receiving end in an entirely different language.

Sure, 29West is a single transmission protocol, but that's the point of settling on a standard messaging platform for the organization: you want to have one, and only one, messaging system you have to deal with. Given that you make this selection, it seems like overkill to use Google Protocol Buffers to package up the data into a generic byte stream 'payload' in a 29West message.

I suppose if 29West had adopted this, or Google Protocol Buffers had a 29West 'wrapper', it might make sense, but neither does exist. It's just payload packaging on top of a system that already handles the problem of payload packaging quite well.

And as I'm thinking this I read in their C++ tutorial:

Protocol Buffers and O-O Design Protocol buffer classes are basically dumb data holders (like structs in C++); they don't make good first class citizens in an object model. If you want to add richer behaviour to a generated class, the best way to do this is to wrap the generated protocol buffer class in an application-specific class. Wrapping protocol buffers is also a good idea if you don't have control over the design of the .proto file (if, say, you're reusing one from another project). In that case, you can use the wrapper class to craft an interface better suited to the unique environment of your application: hiding some data and methods, exposing convenience functions, etc. You should never add behaviour to the generated classes by inheriting from them. This will break internal mechanisms and is not good object-oriented practice anyway.

They echoed the exact thoughts I was thinking at the time. This is a "data encapsulation" system for transmission on multiple protocols. It's not advisable to subclass these guys because the generated code could get changed at any time and break your code -- so it's really just a data 'packager'. Which is nice, if you need it. But why do you need it if you have a messaging system that does this already?

Answer: You don't.

In the applications I'm looking at, it's clear overkill. There's no added functionality, and just added overhead. If there were the chance that we'd need to use a different transport in the future, then that would be something. If we were abstracting away the 29West messaging so that it could be changed out easily, that would be something. But we're not.

I can see this as something that someone wanted to do - no real need - just a want. That's a pretty thin reason to make organizational standards.

Who knows... maybe there's a reason for it that completely evades me at the time. But I don't think so. I think Google said it best:

...they don't make good first class citizens in an object model.

and if that's the case, and you've already standardized on a messaging system that does this same packaging, why would you choose to use them?

Sparkle as Moved to GitHub – Nice Affirmation of Git

Friday, August 28th, 2009

gitLogo.gif

Well, I'm happy to read that Sparkle, that amazing updater for Mac OS X, is now being hosted at GitHub. While it doesn't mean all that much to many, I do believe that the choice for me of Mercurial or Git has ended up being right.

There are just too many things about Git that are nicer than Mercurial.

But hearing serious developers came to the same conclusion is also reassuring.

Dropbox is Not Snow Leopard Ready

Friday, August 28th, 2009

Another of those apps that's important to me - Dropbox, isn't ready. There's a beta, and it looks to be almost there, but it's one that's in the "not" column, for sure. I'll just have to wait a little while before moving to Snow Leopard.

Growl 1.1.6 is Not Snow Leopard Ready

Friday, August 28th, 2009

growlicon.png

Well... I see the first reason not to update to Snow Leopard this weekend - Growl is not ready, and from the messages I've been reading from the authors suggests that they won't even start discussing it - or committing code to the repository until Snow Leopard ships. Their concern, and I understand it, is their NDA with Apple, and not getting sued.

But if that's the case, can't they have one box that had the Snow Leopard code working? I can't believe they have the Snow Leopard betas (hence the NDA) and aren't at least trying to get their code working. Sure, they can't release it, but they can get it ready on a branch - waiting just for today when it's released, they can check it all in, and it's ready to go.

In any case, this is going to have to wait. Crud.

UPDATE: The latest word is that they are looking to have Growl 1.2 out today. They aren't sure if they'll make it, but that's what they are shooting for. If they get it, I'll be very pleased.

Skitch 1.0b8.3 is Out – Snow Leopard Compatibility

Friday, August 28th, 2009

Skitch is one of those applications that I simply can't imagine not having, and so I was very happy this morning to see it was updated to provide Snow Leopard compatibility. I don't need any fancy new features - I just need to know it'll work with the new OS.

DrawIt 3.8.5 is Out

Friday, August 28th, 2009

DrawIt.jpg

With all the updates for Snow Leopard, I was going through all the significant apps I have and thankfully, DrawIt 3.8.5 is out with updates and, I assume, Snow Leopard compatibility fixes.

  • Significantly improves text display but only when there are no filters applied to the text
  • Compatibility fixes with the upcoming Sketch application
  • Other minor bug fixes

It's going to be a busy day of updating as it's on sale and that means the NDAs are dead and things are starting to flow. Sweet.