Friday, July 17, 2009

Millions of people hate this feature

Millions of people hate this feature

It seems that a new feature was added to Google Reader recently that sticks a smiley face and tells you how many people you don't care about liked an item. I'm sorry, but I really don't care how many people liked something, and nor do I tell people what I thought of items - I just subscribe to news feeds for things that *I* like. Unfortunately, the people behind Google Reader don't appear to think that way (much like when the much-hated 'share with your friends' feature was added) and instead shove these things down our throats.

Well, it's a free service, and I get what I pay for. But I'm not going to continue to use Google Reader until they get rid of it.

Note: the CSS class is 'entry-likers' - if you have something like GreaseMonkey installed, you can add the below:

.entry-likers { display:none;}

FireFox 3.5.1 released - install now

FireFox 3.5.1 has been released, which patches the zero-day vulnerability found that could allow arbitrary code execution if browsing to a remote site. It also fixes startup problems that were created thanks to scanning of multiple disk directories on startup; having run the Mac version through monitoring the file system, then I can confirm that it does as advertised.

If you use FireFox, and you'd installed the 3.5 update, then you should install this update immediately. If you followed instructions to disable the javascript.options.jit.content setting, you might want to re-set this back to 'true'.

Friday, July 10, 2009

ObjectivEClipse 0.2 released

Thanks to a lot of good contributions, I'm pleased to announce the availability of ObjectivEClipse 0.2, which allows Objective-C code to be written/compiled inside the Eclipse CDT environment on the Mac.

This version depends on CDT 6.0 and Eclipse 3.5, which are part of Galileo. If you've already got a 3.5 install, you can use the update manager to find and install CDT, or you can download a pre-canned Eclipse CDT package with all the Mylyn goodness built in.

You can get ObjectivEClipse by adding the update site and then choosing the ObjectivEClipse plugin, or by downloading the site as an archive and then installing that. The update site is the suggested mechanism, because if that gets updated, you just need to do an update to get the next build.

So, what's new with ObjectivEClipse 0.2? Well, we've had many good contributions, not the least of which is a parser which is less brain-dead than the one I originally hacked together; so we can now parse interfaces, field definitions, methods (both interface and implementation) and, thanks to built-in CDT support for such things, use code folding and Mylyn. The net effect of all this is it's really starting to feel like an editor that isn't horrible at editing code, though it lacks a lot of the must-haves of IDEs these days still (the lack of indexing means that a lot of things like refactoring and cross-file hyperlinking are a little way off yet).

But it's possible to compile run-of-the-mill Hello World applications, as well as cross-compile to different architecture and different SDK and have the GCC errors hook up to the line in which the problem occurred, as well as using the built-in GDB debugger to step through code.

Here's a screenshot of Mylyn in action on an Objective-C project (with and without Mylyn):

If you'd like to get involved, please start playing with it and giving feedback/ideas/code/coffee/donations to charity. Clearly, it's not a replacement for Xcode, but it's a starting point for developing Objective-C code in an Eclipse IDE.

Wednesday, July 08, 2009

One year later ...

The last year has been a bit of a tumultuous one, and it's time to take stock of my surroundings and figure out how things have gone on. Looking back a year ago, a lot of things have changed. Credit crunch sounded more like a breakfast cereal; the App Store was a glint in Steve's eye (and he was back at work then, too), and Lehman Brothers still existed. Heck, even Gmail was still in beta. For me, I was getting on with my life until I was diagnosed wtih Leukaemia, which was a bit of a breeze block on the road of life.

At the time, not knowing was probably the most difficult part. In fact, the suspicion that something was wrong was easy to arrive at, with multiple tests and cores taken out of me; actually getting to the diagnosis was therefore a bit of a relief. And the type (hairy cell) is one of the better ones to be diagnosed with.

The immediate consequence of the treatment (rebooting my immune system through chemotherapy) was the development of a fever, which hospitalised me for a couple of weeks (although they did let me out for the afternoon for Sam's birthday). Thereafter, it was a case of repeated blood transfusions (and a major fill-up before heading up to my brother's wedding) and generally feeling quite weak and run-down, before returning to work (electronically) for the Lehman's crash clean-up — although I didn't physically return to work until December.

Whilst I've been relatively normal this year, I think the biggest change has been psychological. For one thing, I'm starting to become a hypochondriac (verging on OCD), although like all paranoiacs, I know that they're coming to get me :-) Getting back onto the road of life has been a bit of a challenge. For one thing, my energy levels have been slowly sliding over the last couple of years. At first, I thought it was due to old(ish) age but looking back on it, I can probably finger the disease as the cause of fatigue.

My energy levels rebounded after treatment, but they're probably not where they once were; so my extra-curricular activities (writing for InfoQ, work on ObjectivEClipse etc.) are going forward at a slower pace than they used to. But I'm also asking myself the question of why I'm doing this — and sometimes I'm not sure. I guess priorities change in life, and as life goes on you naturally drift towards, and away from, things that you used to do.

I'm also missing a certain verve or joie de vivre. I suspect everyone gets this from time to time, especially after returning from holiday, but I hope it's a temporary thing and that it will return eventually. Having a great family and enjoying in Sam and Holly's laughter is certainly medicine for the soul.

And lastly, I wouldn't have been able to do this without the support of friends, family, and the support of my ever-loving wife Amy. She's really been the glue that's held everything together over the last few years, and although our family has gone through hard times, we're still very much a tight unit.

Wednesday, June 24, 2009

Eclipse Galileo released!

Today marks the arrival of the Eclipse 3.5 (Galileo) release train, bringing in with it a year's worth of accumulated goodness. Ian Bull has already provided his top ten list, but as a Mac developer one of the most important things to me is the Cocoa support.

For those that don't know, the underlying APIs on Macs have been based on two different concepts; the object-oriented framework that once was Nextstep (called Cocoa in Mac OS X) and the older legacy C-based API from Mac OS 9 days (called Carbon). Although both can be used to write applications, interact with the same (visual) widgets, and have much the same access, ever since Mac OS X was released the future has always been Cocoa. (The iPhone has a predominantly Cocoa based runtime as well.)

When the Eclipse Mac port kicked off (which was by and large when I became involved with the Eclipse community, having only seen/used Eclipse in an IBM-related position prior to that), the decision was made to go down the Carbon route. In part, this was due to the familiarity of the APIs with respect to other UI toolkits available, and also lack of exposure to Objective-C in general. Apple has kept updating Carbon in subsequent Mac OS X refreshes, but the pace of development has mainly been in the Cocoa space. And given that the Carbon libraries were predominantly 32-bit, the cost of upgrading/maintaining those in a 64-bit world were too high; Apple has explicitly said that Cocoa is the 64-bit way of the future.

Other high-profile apps have been based on Carbon for some time - QuickTime and Finder are two such examples. But although Mac OS X has been able to use more than 4G of memory (by creating multiple 4G slices where necessary), it isn't until Snow Leopard that the Cocoa applications have had native 64-bit access across the board. Snow Leopard might be the last Apple OS that will run on 32-bit machines; if it weren't for the fact that some of the initial Mac Minis were 32-bit, Snow Leopard probably would have had a 64-bit only moniker as well.

Apple has also made sure Java developers move forwards with 64-bit support, though arguably there's not much for Java developers to do/care, since the JVM handles all the abstractions for non-native code. The latest Java 6 is only available on 64-bit Intel Macs, which may have performance improvements over its Java 5 counterpart (which has 64-bit and 32-bit mode).

This brings us back to Eclipse on the Mac. There are now three downloads you can get:

  • carbon.tgz - the older, Carbon-based UI which should run on PPC and Intel machines but only be capable of Java 5 32-bit access
  • cocoa.tgz - the newer API, able to run on PPC and Intel machines, also only capable of 32-bit access
  • cocoa_x86-64.tgz - only available for Intel 64 bit platforms and 64-bit JVMs (Java 5 or Java 6)

To configure which JVM you use by default, you need to run /Applications/Utilities/Java Preferences.app which specifies the order in which it tries to launch a JVM. If you download the x86_64 package, you need to make sure that Java 6 (64-bit) or Java 6 (64-bit) is at the top of the list. Otherwise you'll need to ensure that Java 5 (32-bit) is at the top of the list.