waffle

The best tutorial on how to get started in Ruby I've read (and I've read quite a few). It doesn't assume that Ruby's the greatest thing since sliced bread. It doesn't show you how to arbitrarily stack punctuation-heavy statements to produce a compact but unreadable and unpredictable (and I say this as a Perl user) one-liner. It doesn't assume you know nothing about programming. It says "you're a programmer, I'm a programmer. You know what objects are, and what a STDIN stream is. Hop on, and let's see what we can do." More like this, please. · 2005.08.31 09:36 (x)

LVL99

Like other freaks, and probably, in fairness, like most other people, I have something that I just cannot tire of. It is a six year old game, produced for an obsolete portable console that I just won’t stop playing.

I find RPGs dull. If I wanted to spend my days ‘fighting’ in a menu, I’d do text-based adventure games with recursive footnotes. “Adventure games”, where I can actually go a full five minutes without being forced into a menu, if I’m lucky, are better. (I count the Zelda games as adventure games, instead of the mostly menu-based dealies often starring Guybrush Threepwood. Countless others may not. Vocal such specimen can bite me.) I loathe FPSes – my hands are shaky. Worms and its follow-ups are nice. I also like some sports games like the FIFA series and Mario Tennis. (And as anyone who knows me can tell you, I also completely love simple 2D or 3D platformers, like the Mario, Sonic and Mega Man series.)

So what do we end up with as the game I can’t stop playing? Surprisingly, a game that’s not the best I’ve played, a game that’s not the easiest or hardest I’ve ever played, and overall a game that’s not insanely impressive. Yet, I can’t stop playing the 1999 hit Mario Golf for Game Boy Color. Sure, it’s memorable because it was the first game I got for my first Game Boy. And sure, it’s nice because it has Mario characters in it. But even all sentimental reasoning and association aside, Mario Golf stands as an insanely well put-together game, with a minimalist but solid back story (kid wants to beat best golfer which happens to be Mario), perfect control (a review I read about Super Mario Bros once mentioned that if you “slip and fall”, you have noone else to blame for it but yourself, something that applies even more here) and a good challenge.

Mario Golf starts off smoothly with four clubs (Marion, Palm, Dune, Links (which, mischievously, carries a Triforce symbol as its badge)). Each club has a master. Challenge each master and win over them – something that can only be done by boosting your miserable starting stats inch by inch. Practice in specific areas in some clubs, or find new areas in the terrain where you can earn special Stars. But even when it’s all done – a rewarding trip in itself, which ends with meeting and beating Mario on a fifth course in the clouds – you can still play for ages, just climbing levels and carefully choosing which stat of the five to boost.

Climbing levels are deceptively simple, but everything effects how your ‘guy’ will handle in the end. My first golfer to hit Level 99, the ceiling of the game, could hit the ball 350 yards, but had to aim in the woods – so bad did his shots aim, so curved was his hit and so much was his shots affected by the wind. My second golfer just today hit Level 99, and the stats were much more even this time. He hits 314 yards (w00t!) and has a straight shot (as opposed to a fade/slice or draw, which means that the ball curves in different directions), can maximize his power to really whip the ball far, but still hits way too high.

But what’s even more amazing is how the choices you make affect the elegant controls. If you miss the hole by a few feet, it’s nothing but your own damn fault – you need to be careful when aiming, have timing when shooting and pick the right stats on level up to achieve a golfer that hits it your way. This may be the secret recipe, the reason why I simply can’t tire of this game.

I’m now going to go create a third golfer, developing his stats absolutely even to the maximum extent, and I am completely convinced that I have at least another 70 hours of (effective) game play ahead of me, and that I’m going to create a lot more characters before I stop playing Mario Golf.

Shore thing

Nine months ago, I acquired a PowerBook G4, and since then, I’ve began using it more and more. There are surprisingly few applications on Windows that I can’t live without that’s not gotten an equal on Mac OS X, and the dealbreakers for me were EditPad Pro (a very nice text editor), Trillian (the multi-protocol IM client) and Paint Shop Pro (the fully-featured graphics editor that takes under half an hour to start, allows for customization and doesn’t suck).

EditPad Pro, despite being great, was the easiest to find an obvious replacement to. I had already tried (using an old borrowed PowerBook G3) SubEthaEdit, and what SubEthaEdit does is amazing; this is what SubEthaEdit does – it lets you edit a document over the Internet (or the local network) with any number of other people live with colorization. Think “multi-player notepad” meets “multi-player diff” – in Technicolor. Insanely cool, but niche, right? Well, true, but on top of that, it’s an excellent code editor that’s absolutely on par with EditPad Pro (which didn’t even support Unicode). It’s an instant fit.

(But, the crowd says, what about TextMate? Stunning autocompleting and snippet management, but wretched decision to not derive the work from NSTextView. This effectively means that they will have to spend time re-implementing encoding handling and printing and wrapping and I still won’t be able to hold Ctrl, Cmd, press D and move around the mouse getting popups telling me what the word under my pointer means – all of which would have been if not free then nearly free. It doesn’t bother me that they’ll have to do this, it bothers me that I’ll be missing out on features that should otherwise be there had they not had to spend time reimplementing core functionality, and, notably, it bothers me that I’ll still be missing out on the core functionality which will probably be turned into feature bullet points instead of other amazing features as incentives for me to upgrade.

(Update: a reader labels my NSTextView support as ‘propaganda’, perhaps rightfully so. There’s good sides of using your own, and there’s good sides of subclassing NSTextView – I take for granted that people will be able to figure that out. The reader mentioned that NSTextView has historically had bugs, and even points to DB’s The Downward Spiral which details a huge bug (which I haven’t seen, but that’s how bugs work). Another point mentioned is that TextMate’s excellent features are all extrapolated from the choice of not using NSTextView, and that by using NSTextView subclasses, your app’s main component can be held hostage to bugs that cannot be fixed, which is an insanely good point. Finally, the reader mentions, NSTextView doesn’t perform well under load, but neither does TextMate. I have to add personally that the creators of TextMate left a sour taste in my mouth when, around 1.0, they mentioned that they had, more or less on purpose, chosen to implement some preferences as document specific menu items to keep the app simple, which, aside from going against UI conventions (you stick extremely commonly used Preferences in menus and that’s it) and common sense, is much like putting lipstick on a pig (“look – our app is simple because we don’t have preferences”).)

But, the other end of the crowd say, what about BBEdit – it doesn’t suck, right? Well, when Rich Seigel, president of Bare Bones, spews dreck like: “These overnight text editors don’t reflect well on the genre or the platform [..] We are raising the bar, elevating the standard.”, that’s when I lose respect for otherwise fine software developers, and decide that they can take their $49 or $129 or $199 and demand it of people that don’t seem to mind the complete lack of respect for their colleagues, be it in the ‘genre’ or the ‘platform’.)

Adium is a multi-protocol, open source IM client for Mac OS X. It is insanely different from Trillian, but I’ve settled in with Adium. Like Trillian, it has problems with file transferring at times, which does bug me, but not beyond the point that I can’t switch to iChat, transfer the file and be done with it. Adium is written in Objective-C using the Cocoa framework that I’ve come to love, and while I’ve tried to write one-off plugins for Trillian, I admire Adium’s modular construction and see no notable difficulty in being able to write a plugin for that. That’s why I’m happy to announce that I’m now a minor contributor to the Adium project, where I’ll occasionally provide some investigating relief and occasionally think up things on my own to straighten out or extend.

That leaves Paint Shop Pro. Photoshop is mostly a no-go for me personally; its interface doesn’t work with me. I’ve tried the niche players like Pixen – which is good but not really too useful outside of pure pixel pushing – and in the end, until today I’ve been using a special version of GIMP called GIMP.app.

Here’s how it’d work: GIMP would start up under X11. It would take several minutes to start up. Since X11 is a window manager looking like a program, and several programs can thusly be run in it, clicking the X11 icon in the dock wouldn’t bring windows to the front, and neither would Command-Tabbing to it, or clicking GIMP’s icon in the dock. (Clicking X11′s icon or switching to X11 twice would, however, bring the windows to the front.) GIMP being GIMP, it would carry Control-shortcuts instead of Command-shortcuts. X11 being X11, you were required to hold down Command and not Control to simulate a right click. And any of them being any of them, when you would hover a button, or a popup menu, or any other widget, in a window that’s not the current window (which often is the case in GIMP) it would light up, but when you clicked it it would only bring the window to the front, where you’d have to click again – the worst kind of wrong-headed click-through, for what has got to amount to 50%+ of clicks.

Even if GIMP’s interface was otherwise perfect (far from it), and even if it supported OS X color and font pickers (it doesn’t), and even if filters didn’t take eons to go from menu item click to trite dialog where any kind of immediate preview is a rare luxury, I think most people would be far pushed to call this a good state of affairs.

But then, today, it came to me in a dreamdel.icio.us RSS feed detailing links with the tag ‘cocoa’Seashore. Seashore is a graphics editor – a Cocoa app that is ‘based on GIMP technology’ and even shares the same file format. Seashore is beautifully put together, looking exactly like a Mac OS X application should these days and weighs in at a svelte 3.4 MB disk image (GIMP.app is a 42.5MB beast). Seashore is a light-weight GIMP done right, and I suggest that you check it out when you get a spare moment. The tools are sparse, the filters mostly unimplemented, and it takes you four to five clicks to finally reach the download page, but if those are the only problems (which it sure looks like) then what we’re left with is a nearly perfect, if only started-on, graphics editor with a top notch user interface and an awesome workhorse pedigree. What a concept.

Older posts »