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 31

It’s been a couple weeks since I’ve posted anything and I figured that I would take the time to catch up a bit.

First off, the site has been online for one year now. We haven’t been with this domain for a year yet, that’s in February if I’m not mistaken, but I’ve been working on the site for a year. That’s a big accomplishment, I was excited and enthusiastic, but never quite thought that I would be renewing my hosting and domain name with such success and a loyal following as everyone has allowed. I truly appreciate it.

I have finally torn myself away from a few other ongoing projects, as well as my vacation, to finish the last of the site changes that I started at the beginning of December. The site has an updated favicon, new podcast icon, and the Downloads page is once again in business. I believe that about wraps up all of the stuff that I needed to get accomplished.

I am working on a podcast shortly, I should have lots of announcements and cool stuff this week, if everything pans out as I hope, so stay tuned. Of note is this next podcast I will be reviewing the first product that I haven’t personally purchased. I will be reviewing a piece of software because the company contacted me and requested that I review it, so this is a very big step for us!

Apple filed a bunch of financial reports because it’s the end of the year and it still looks like Jobs is in the clear. I have to wonder who is going down for this, surely there will have to be some criminal charges brought against someone, it wasn’t an accident that this was allowed to continue for nine years.

iTunes and iPods did very well this holiday season. My brother had several friends which received iPods this year and I know several others as well. This is easily confirmed by the fact that there were millions of hits on the Apple site on Christmas day because people were trying to download iTunes and setup their iPods. The iTunes store is still feeling the effects as downloads are downright slow as of this writing.

For those that remember, my Macbook battery issue has been resolved with a replacement. I bought this black Macbook within a week of the initial launch and started having issues about two months ago with a four month old battery. The computer would die with about one hour of battery life remaining (according to the OS), making me curse several times as I lost data on the shutdowns. There was a discussion in the Apple Discussions about this issue and several other users reported receiving a new battery fixed the issue. This was true for me as well.

Finally, I hope everyone is enjoying the holidays and have a very safe New Years Eve as we look forward to 2007. May 2007 see the safe return of our troops.


Dec 20

AppleInsider has some more details about the latest build of Leopard and I thought I would bring forth a bit more information to those.

The feature that has been in the news the most in the last few days is the addition of ZFS support in Leopard. For those that really don’t care about filesystems (me included for the most part), should you be excited? My short answer: no. To the end user, some stuff will certainly change for the better, but it won’t be like you’ll install Leopard by formatting your Mac with ZFS and all of your worries will disappear. The addition of ZFS might enable some really cool features to be added to applications and the OS itself later (sorta like Time Machine), but for Leoarpd’s initial release, I really don’t see it being anything that exciting.

A few other notes about this latest release include update builds of Quicktime sporting the HUD-style Inspector windows (see my previous post my thoughts on this matter), updated screen saver options, more parental control options and updates to the Quick Look feature in the Finder, where you can preview files in a cute little window instead of having to open up an application to do this.

Overall, I haven’t had the change to play with any version of Leopard since I received my WWDC copy without updates, so I’m not really sure how the progress is going. Of note in the article, the author doesn’t feel like Apple will be able to deliver a production release of Leopard at MacWorld in January. This is a little disappointing, but at the same time I’d rather Apple spend the little extra time needed to deliver a stable and well-rounded product than try and rush something out the door to compete with a buggy initial release of Vista.

Found via | AppleInsider


Dec 19

Just to sweat it out, I’ve been working on adding a cool HUD-style Inspector to an app I’m working on. The thing is I’ve been doing it all by hand. As in creating the whole freaking window, text, everything on the window, from code. Not an easy process and it gives me so much appreciation for Interface Builder!

The thing is I needed to bind a NSTextField to some values from an array controller. Not that big of a deal setting them up in code, but then I decided that to simplify my life, I would need to bind them with the “displayPatternValueX” option, instead of just binding to :@”value”. So, without further ado, here is a snippet of code that produces a single textfield on the window bound to my controller with a sorta label before the actual bound value. It’s almost magic!

/* Rating */
NSTextField *ratingField = [[NSTextField alloc] initWithFrame:NSMakeRect(10+20, y_position - 20 - 50, windowSize.width-(2*(10+20)), textHeight+5)];
[[window contentView] addSubview:ratingField];
[ratingField setEditable:NO];
[ratingField setSelectable:NO];
[ratingField setFont:[NSFont systemFontOfSize:textHeight]];
[ratingField setTextColor:[NSColor whiteColor]];
//[ratingField setBackgroundColor:[NSColor grayColor]];
[ratingField setDrawsBackground:NO];
[ratingField setBordered:NO];
[ratingField setStringValue:@”%{value}@ Bookmarks”];
[ratingField bind:@”displayPatternValue1″ toObject: [parent BookmarksController] withKeyPath:@”selection.rating” options:[NSDictionary dictionaryWithObject: [NSString stringWithString:@”Rating: %{value1}@ “] forKey:@”NSDisplayPattern”]];

Just need to keep in mind that the magic code does what you can easily do in IB. Just to clarify, this is in a separate NIB and I’m essentially using File’s Owner as my binding object, except I used [parent BookmarksController] to access this. In IB I would have bound to File’s Owner with a modelKeyPath of @”BookmarksController.selection.bookmarkName” to get the same result. Tricky part was getting the NSDictionary setup using the constant @”NSDisplayPattern” to get the pattern to work.

[ratingField bind:@”displayPatternValue1″ toObject: [parent BookmarksController] withKeyPath:@”selection.rating” options:[NSDictionary dictionaryWithObject: [NSString stringWithString:@”Rating: %{value1}@ “] forKey:@”NSDisplayPattern”]];

Hope that all helps someone since I can’t find any documentation on the subject online. There’s plenty to explain it for IB, but there aren’t any examples of doing it by hand. Thought I would throw that out there.


Dec 19

I get a lot of my news from digg, sadly enough. One of the things that I find so funny sometimes is the comments after each article. These comments get heated very quickly and the argument I love most is the guys who complain about Apple stories. Let me elaborate.

e2superman says: Digg is a bitch. They are complete apple fanboys themselves. Note the Apple Section and lack of Microsoft Section. That about sums it up. Digg loves Microsoft bashing.

Great. So you hate reading about Apple stories, yet you take the time to leave comments on one. Makes complete sense in a way, but aren’t you complaining to the wrong group of people at that point?

MisterCookie says: Good. After they try the overpriced piece of shit that is Apple products, maybe they’ll appreciate Windows or Linux more.

There were other comments in between these two, but basically it’s a back and forth anti-Microsoft, anti-Apple related stuff. I mean, I dislike using a PC, but I don’t go around using foul language and talking bad about their products. I’m intelligent enough to have an informed conversation with someone over the pros/cons of both platforms and at the end of the day it doesn’t matter whether MSFTdaBomb38 thinks that Apple products are horrible or not.

Bottom line? Just how childish is this? If the hardcore Windows users are so fed up with the amount of Apple-related content that is on digg (and there is enough to keep me reading, otherwise I would move on) why don’t they create their own Windows-centric kinda place and be happy there together? Just my thoughts…

You can read the comments and digg the article I’m referring to here.


Dec 19

Just another reason why I want a DeLorean. I’m in love with this car…

YouTube Link


Dec 17

Banner-1

Schoolhouse

Schoolhouse is a very nice way to keep up with all of your coursework, simply put. Features include GPA and Final grade calculators, graphing of grades, prioritizing, Classcasting to share your assignments with classmates, sending assignments to iCal and iPod, and much more. The interface is very clean and well laid out. Overall it seems to be a very stable application that the developer has created to deal with his schoolwork himself. Also of note is that a new version, 2.0, is supposedly in the works with an expected release date over this holiday season break, as the developer is away from school and hopes to get it out with the extra time.

Be sure to listen to this episode to get more details!

Download the latest version of Schoolhouse here

Please note that this review was for a 1.x version of Schoolhouse. As of late March 2007, version 2.1 was released. This newer version is leaps and bounds ahead of the one talked about in this review, so please consider trying out the latest version for yourself. Expect an new episode reviewing this software in the near future.

 
icon for podpress  Enhanced Podcast [27:02m]: Play Now | Play in Popup | Download (1648)

Dec 15

I mention this on here just because I find it humorous. So, Vista hasn’t hit the store shelves yet. Believe me, you would know because there will be tons of hype all over the net as well as a slew of bug fixes for the first few months. It’s like looking into a crystal ball.

So why are we talking about Fiji? Forgiving the code-name, Vista isn’t out the door and frankly, even if it was, I’m sure there will be tons of stuff the poor developers at Microsoft will have to do for months before they can sit back and go, “You know Bob, we rewrote 56.7 million* lines of code in about 5 years. We’ve issued over 600 security fixes and updates to the users in the last 6 months. Hell, I think we’re done”.

I just feel like Microsoft should focus on getting their product out the door, releasing enough updates to make it stable so that businesses will even consider the long and horrid upgrade process over the next few years, before contemplating the move to another OS. Let’s not get greedy guys!

*Note, I’m clueless as to the total number of lines of code in Vista.

Found via | ZDnet


Dec 14

I thought I would share a bit of code with anyone out there who wonders exactly how basic searching is achieved in your favorite applications.

Conceptually, the user will enter a search string in the search box, something like “Jo”. Now, you will need to find every object in your table that has “jo” in it. You get to choose the amount of control, as a programmer, you put into this. If you want to be very kind, you can add a drop-down menu that the user clicks to search for “Jo” just in the name field, for example. However, I feel that most people are comfortable enough with just filtering (ie, not full-scale searching), we will simply search every item in our object to find matches. Still with me?

For example (’Por Exemplo’ comes to mind..) :

Imagine we are creating an address book-like app (hint-hint) and each person in our address book has four pieces of data each. Each person has a name, a screen name, an url, and an image associated with them. We certainly can’t filter the images, but we would like to search through the names, screen names, and urls. So, let’s figure out what we’re going to do.

First, you’re going to setup your interface in IB. I’m not going to take the time to go through all of this, but you drop a NSSearchField onto your window and hook up the bindings with the “predicate” option farther down the Inspector window. I have an array controller of “Person” objects, so I want to set my bindings as “PeopleController” as my source (same as the data source for my tableview), filterPredicate, and the model key as “personName” (the string that holds the name in a Person object, doesn’t really matter, but you must fill in a valid KVC value here).

I have also subclassed out the standard NSArrayController to provide filtering support. I connect my “search” IBAction to my NSSearchField, to actually implement the searching. I also like the instant filtering style, so I select the “Sends Search String Immediately” attribute in IB for my NSSearchField.

That ties up the interface stuff, now we need to actually figure out how we are going so sort. The concept behind this is we go through every object in the original array (that supplies the table) and see if it matches our search criteria. If it does match, we’ll throw it into a new array. When we’ve searched everything, we’ll return this array to the table so it can display it as the search results. When the user is done searching, we release that array and return the table back to the original array that holds all of our data. Let’s start searching!

Code for the filtering Array Controller

- (void)search:(id)sender {
[self setSearchString:[sender stringValue]];
[self rearrangeObjects];
}

- (NSArray *)arrangeObjects:(NSArray *)objects {

if ((searchString == nil) || ([searchString isEqualToString:@”"])) {
newObject = nil;
return [super arrangeObjects:objects];
}

/*
Create array of objects that match search string.
Also add any newly-created object unconditionally:
(a) You’ll get an error if a newly-added object isn’t added to arrangedObjects.
(b) The user will see newly-added objects even if they don’t match the search term.
*/

NSMutableArray *matchedObjects = [NSMutableArray arrayWithCapacity:[objects count]];

// case-insensitive search
NSString *lowerSearch = [searchString lowercaseString];

NSEnumerator *oEnum = [objects objectEnumerator];
id item;
while (item = [oEnum nextObject]) {
// if the item has just been created, add it unconditionally
if (item == newObject) {
[matchedObjects addObject:item];
newObject = nil;
} else {

NSString *lowerName = [[item valueForKeyPath:@”personName”] lowercaseString];
NSString *lowerScreenName = [[item valueForKeyPath:@”personScreenName”] lowercaseString];
NSString *lowerUrl = [[item valueForKeyPath:@”personUrl”] lowercaseString];

if ( lowerName != NULL && [lowerName rangeOfString:lowerSearch].location != NSNotFound) {
[matchedObjects addObject:item];
}
else if ( lowerScreenName != NULL && [lowerScreenName rangeOfString:lowerSearch].location != NSNotFound ) {
[matchedObjects addObject:item];
}
else if ( lowerUrl != NULL && [lowerUrl rangeOfString:lowerSearch].location != NSNotFound ) {
[matchedObjects addObject:item];
}
}
}
return [super arrangeObjects:matchedObjects];
}

The code above goes through each object in the array and pulls out a string for the name, url, and screen name. It compares the entered search string to each of those strings, and if it matches, adds it to the array we return that has the matchedObjects. Of note here is that we check for a NULL string from the object because if we don’t, the object will show up in the results even though it shouldn’t.

I think that was enough of an intro to searching. Let me know if you would like to hear more about implementing the ‘Recent Search Items’ list, or searching by category. Comments are welcome. If you’re interested in a working XCode project with the code, let me know and I might throw one together and post it online.

UPDATE: I didn’t originally provide enough information about this controller, so here are a few links and documentation. Apple has documentation on this subject with almost the identical sample code that is published by mmalc below. You can read the documentation here.

Download mmalc’s source (pretty much what is in the documenation) here.  This is a sample project, so it’s nice to look at as well.  Of note, if you want the iTunes, Spotlight-like behavior of instant results (a true “filtering” action, vs searching), go into Interface Builder, select the NSSearchField and for it’s attributes, check the box with “Sends search string immediately”.  A nice example.  Check out his website with lots of other good bindings related examples is here.


Dec 13

On my long list of things to do, this one has been awhile coming and I finally got around to it tonight. In analyzing the stats for this site, there are a lot of people that come to the site for a specific review and download that podcast episode. Usually there is a click right after that to the “Podcast” page on the site, but I’m not sure how many people are subscribing. For that reason, when someone views the Podcast page from now on, the banner below will be shown.

Picture 1-2

I’m debating whether or not I want to add some sort of similar banner when someone views a specific episodes post. This might help people who are visiting the site for the first time easily listen to more episodes and subscribe, but could be a little annoying for everyone as well. Just some general thoughts on the matter would be appreciated.


Dec 13

In the latest seed of Leopard there is a new feature for recording video greeting to be played when someone tries to contact you and you are away. Then that person can leave you a message. I’m not sure how useful this could be, but sounds like it would be cool. A pic taken from MacRumors is below.

 Article Answeringichat

Found via | MacRumors

Older Posts »