About | ACP | Buy | Industry Watch | Learning Curve | News | Products | Search | Substack
Home » Learning Curve » Red Hat Diaries

CTGradient and the Landed Gentry of Mac Development™

It's all about CTGradient but it's not about CTGradient at all.

Get It

Try It

Chad Weider did a couple of grand things in 2006. He released his massive and sophisticated CTGradient class and he released the code under the Creative Commons licence.

'While CG is a heck of a powerful library it always seems to take an elaborate amount of code to do some of the simplest little things', writes Weider in the preface to introducing the code which abstracts the even more massive CGShading.

Vacuous Virtuoso Ankur Kothari recently dragged CTGradient into a project - and then realised he was shooting flies with a cannon. Chad's CTGradient class takes care of all possible situations; 95% of the functionality can go unused in an implementation.

What particularly bothered Kothari about this was seeing how many of the lamers known as the Landed Gentry of Mac Development™ were using this CTGradient class 'ad hoc' and of course not extrapolating the code into an independently stored framework so the poor users got only one copy no matter how many clients involved.

As he's just wrapped up Trimmit and as things were looking good and times were easy - why not try to improve the app?

Indeed. One of the golden rules of programming the Landed Gentry of Mac Development™ really don't care about. To them it's just 'shove the shit out the door, fuck the customer'.

And they've been doing this so long and with no one daring to challenge them that it becomes a pointed finger when Kothari suddenly shows everyone how easy it really is and what the 'lamers' don't do for their users/paying customers.

'CTGradient contains an incredible diversity of built-in gradients, gradient styles, and methods for creating fancy rainbows, radial gradients, linear gradients, aqua gradients, and a number of other interesting class and instance methods. It allows you to dynamically alter gradients by adding or removing colours, changing the level of transparency, filling NSRects or NSBezierPaths, rotating the gradient, etc. For demonstration purposes, all these features are excellent. For production, this is a nightmare', writes Kothari, who then launches into a highly entertaining - if not liberating and breathtaking - ride through optimisation. The optimisation the Landed Gentry of Mac Development™ don't want you to know about.

For it means more work for them if you do.

'Getting to the end of this article', writes Kothari at long last, 'you're probably thinking it would be a bit of a waste to use CTGradient if by the time you optimise it for your application - it doesn't resemble the original at all. And you're quite right.'

Here comes the cruncher. The inadvertent pointed finger.

'The documentation already shows you how to draw gradients yet the number of applications using CTGradient - the whole 1300 lines of it - is astonishing.'


The Landed Gentry of Mac Development™ were not late to react. Kothari's article got fast legs in no time. And it's truly amazing how well an innocently (inadvertently) pointed finger was able to flush the snakes out of the grass.

It's also amazing how far these 'people' will go to defend what essentially is a defenceless position.

  1. Ankur Kothari places his users/paying customers interests before his own.
  2. The Landed Gentry of Mac Development™ are too long used to their users/paying customers not daring to come bowl in hand and ask 'more sir?'

Caveat Emptor

Who would you rather have engineer your software? Someone who's as conscientious as Ankur Kothari? Or someone who squirms and attacks and insinuates and does the absolute utmost to avoid the actual question? You the user/paying customer can decide. Wander over to Ankur Kothari's article on CTGradient and see who's objecting. At least you'll now know what the Landed Gentry of Mac Development™ think of you.

See Also
Vacuous Virtuoso: CTGradient code bloat

About | ACP | Buy | Industry Watch | Learning Curve | News | Products | Search | Substack
Copyright © Rixstep. All rights reserved.