Shit Boots

description

Shit Boots

Flow Review

description

Flow Review

Latitude Interview

description

Latitude Interview

MacWorld 2008

description

Macword 2008

iPhone Review

description

State of the iPhone

iLife 08 Review

Item Description

iLife 08 Review

Coda Review

Item 3 Description

Coda Review

CSSEdit Review

Item 1 Description

CSSEdit Review

Healthy Mac

Item 1 Description

Healthy Mac

Dec 29

So I have finally had time to code to my heart’s content over the holiday break. I thought that I would share some of my thoughts and experiences with programming for Leopard.

Fast Enumeration

Cocoa now implements a foreach() type of loop, which cleans up code tremendously. Iterating over an array or dictionary is pretty common stuff and being able to condense code from:

NSEnumerator *e = [myArray objectEnumerator];
id item;
while ( item = [e nextObject] ) {
NSLog(@”%@”, [item printSomething]);
}

to a more elegant:

id item;
for ( item in myArray ) {
NSlog(@”%@”, [item printSomething]);
}

Properties

Properties are a wonderful addition to Cocoa and essentially eliminate writing basic accessor methods for your objects (setters and getters).

@interface Song : NSObject {
NSString* title;
Artist* artist;
NSDate* dateAdded;
}

@property(readwrite, copy)NSString* title;
@property(readwrite, copy)Artist* artist;
@property(readwrite, copy)NSDate* dateAdded;
@implementation Song @synthesize title, artist, dateAdded;

The ObjC 2.0 compiler gives you extreme flexibility with properties, beyond just the basic use of accessors here. You can specify a property to be readonly instead of readwrite, or to retain or assign instead of copy.

@dynamic title; -(NSString* )title { }

The above would require you to implement the method yourself, letting the compiler know you are handling that.

NSTreeNode

Not a feature of the ObjC language, but certainly a nice addition to help using NSTreeController. NSTreeNode is a wrapper object which aids in creating trees. Just create a NSTreeNode and add other NSTreeNode objects to the -mutableChildNodes array and you are on your way to a tree. Binding this tree to a NSTreeController is relatively simple as well. Of note, remember that if you are using NSOutlineView delegate methods, you receive a NSTreeNode object now, so you must use -representedObject on “id item”.

A further note, when using the “selection” controller key on a NSTreeController, the controller returns an array of NSTreeControllerProxyObjects. Either call -self on the NSTreeControllerProxyObject or when using bindings (binding a second NSTreeController to the “selection” of the first one) remember to use “selection” with model key path of “self”. I don’t believe this is documented anywhere, but using “self” clears up a whole world of heartache and gives you the actual NSTreeNode instead of the NSTreeControllerProxyObject.

Interface Builder

It took some getting used to, but recall that you have to drop a NSObject (blue cube) from the IB Library and set the custom class to initiate an object in IB 3. The old method of “Initiate Class” or whatever from the menu isn’t available. Also remember that IB Palettes don’t work with IB 3, you will need to find (or create) IB Plugins.

Core Animation

Recall that the -orderIn and -orderOut options in IB are for adding and removing subviews to the selected view in IB (-setWantsLayer:YES). So NSTabView will not magically transition views in and out unless you are programatically creating new tabs and such.

That was just a quick list of the headache I endured over the last few weeks adjusting to Leopard and mainly spending lots of time with trees in Cocoa.

I’d love to hear your thoughts about ObjC 2.0 additions, whether it’s garbage collection or something more minute!


Dec 29

Mac Fanatic wouldn’t be a true Mac based site if some rumors weren’t discussed now and then. So, here is a brief list of what I’d love to see at MacWorld this January. I think most of this has been rumored, but a few items may just be my own creation and have no base on anything at all.

  • Official iPhone SDK
  • iPhone Software v1.1.3
    • Text Messaging Improvements
      • Support for MMS (Multimedia - Pics and Vids)
      • Support for multiple text message recipients
      • Preference to keep text message recipient list ordered by date or sorted manually
      • Support for text input in landscape mode anywhere, not just in Safari (Would be awesome for texting)
    • Mail Improvements
      • Easier multiple message deletion in Mail
      • Let me set a background on the phone on the home screen, not just black
      • Support for flagging of mail messages via IMAP
      • Syncing of Notes with Leopard Mail
    • Phone Improvements
      • Preference to always show the favorites when I tap on the Phone App, instead of last used (Recents, etc)
      • Ability to clear just my missed calls in the Recents list, instead of clearing all Recent calls
      • Ability to edit contact info from Favorites in Phone.app, instead of having to find the contact under Contacts and edit it there
    • General Additions and Features
      • Ability to save images from Safari in a special album on the phone
      • If current hardware supports it, let me take videos with my iPhone
      • AIM, Yahoo, and MSN chat support
      • More games for iPhone that are not web based
  • iTunes Movie Rentals
    • Hopefully this will be affordable
    • Would be amazing if there was a “Rent-to-Own” option, pay 3.99 for a rental and then apply that credit towards purchase of the movie
  • Update to Leopard Mail letting me have more Dock icon badges telling me unread RSS items
  • New PC-Mac commercial, because they are so fun
  • Amazing stats on iPhone, iPod, and Mac sales during the holiday season
  • Addition of Leopard Docks to the Mac OS X Downloads page (just like Apple added Widgets)
  • Macbook Pro updates - serious redesign as it retains the PowerBook G4 form factor
  • New Cinema Displays
  • Seriously updated Mac Mini

So, that’s an extensive list of what I’d really like to see happen at MacWorld here in a few weeks. Of course, I’m well aware that some or most of these won’t come true. I’m actually fairly surprised that so much of the things I wanted to see at MacWorld were related to the iPhone. I’m not sure if that’s a good or a bad thing.
Overall I think MacWorld will be fairly exciting. We definitely won’t be seeing updates to iLife or iWork and it took forever for that to materialize last year and it’s just not time for an update. I’m not really sure what the “One More Thing…” could be either, but that’s half the fun!

And finally, I’m also very interested to see if there will be demos of the first wave of Leopard-only applications at MacWorld. Delicious Library and TextMate are two that come to my mind that would be the most exciting to demo (and I believe I read that Wil Shipley will indeed be giving a demo).

Did I leave anything out that you just know will be at MacWorld in January? Leave a comment on this post!


Dec 03

Ecto 3 is the next major update to popular blogging software for Windows and Mac. Comparable to MarsEdit and the like, Ecto lets you easily manage your online blog from an application on your Mac, much akin to using Mail to manage email.

Version 3 is a major update still in the beta stage, but you can download a free copy of the beta version here. A revised interface, filtering, improved performance, tagging, plugin support and more are just some of the features that I’ve noticed.

You can listen to my podcast reviewing Ecto 2 and other blogging software solutions here.


Dec 03

I’m well aware that the blog has died down over the last several months, especially with the podcast becoming non-existent. However, I still thought it was pretty awesome when I noticed that the site has topped 100,000 hits since I put it online (or installed Mint, but we’re not off that much).

I think it’s a pretty cool accomplishment and something that I’m proud of. For someone who doesn’t have that much time to pour into this project anymore and started this as an experiment and a hobby anyway, I’m happy.

My question to everyone is, do you still find the site useful and in what direction would you like the site to take?


Dec 01

Worlds AIDS Day originated at the 1988 World Summit of Ministers of Health on Programs for AIDS Prevention. Observed on December 1st each year, World AIDS Day is dedicated to raising awareness of the AIDS pandemic caused by the spread of HIV.

For more information, visit the World AIDS Day Campaign website.