July 2009 Archives

Quality over Quantity

From John Gruber at Daring Fireball::

And so Microsoft's official stance regarding Apple's growing domination of the $1,000+ market is that Apple is charging hundreds of extra dollars in pure margin -- $500 in the case Turner cited in his prepared remarks. The computers that Microsoft chooses to brag about on stage at a major conference are the $650 17-inch laptops advertised in Best Buy Sunday circulars.

There's no question that retailers sell tens of millions of cheap Windows laptops every year. But no one with a pair of eyes thinks such machines are of comparable quality to Apple MacBooks. Even without turning the machines on, anyone can see the difference in design and build quality. In fact, you don't even need eyes -- just pick them up and see which one squeaks. Apple is selling more MacBooks every quarter. Microsoft thinks it is sitting pretty because Best Buy has a 17-inch Dell for $650.

Well said.

Paul Graham has written an informative essay on his blog titled "Maker's Schedule, Manager's Schedule" that had Twitter abuzz this morning. Definitely worth the read.

I echo his statements on how meetings can be devastating for a makers schedule. They can just take the wind out of your sales, or worse, make it hard to even get started.

Lately here at the office we've been trying to use our calendar's (Outlook, Entourage) to mark off large chunks of time for doing work for specific clients or projects that we know we've got a lot to do. It sends a message to you and others that this time is reserved already, and I'm going to be productive and get things done. So far, it's worked out pretty well.

Just pushed another update to JRFeedbackProvider on github. This update displays a "Thank you" sheet on successful submission of feedback. In addition, I added optional support for using the Growl framework.

To use Growl to display your thank you message, change #define USE_GROWL 0 to 1 in JRFeedbackController.h and add a new entry into your plist dictionary defining your other Growl messages. See here for more on using Growl.

I forked the JRFeedbackProvider project on github yesterday and made two commits that have already been pulled and merged into the main branch. They're small, one adds a regular expression check on the email address sent in the php file to check it's format as a valid email address, the other adjusts the NSTextView's NSTextStorage to remove the bold font when using showFeedbackWithBugDetails: to pre-populate the textview with bug details.

JRFeedbackProvider is a 'nonviral cocoa source for implementing an application feedback panel' . In short, it provides your users a standardized in-app method of providing feedback, from bug reports to to feature and support requests. The two main approaches are to use the default details pane, which asks basic questions for each category separated into three tabs/panes, and another option which allows the developer to pre-fil the bug report pane with details supplied from within the app.

The second patch I committed dealt with the latter feature. In the default showFeedback method, the textview was pre-filled with some basic questions in bold; "what happened, what did you expect" etc. The showFeedbackWithBugDetails route was essentially a blank text area by default with the exception of whatever the developer chose to fill it with by supplying an NSString, but this always resulted in the supplied text being in bold like the pre-filled bug report. I initially figured out that if you called [textView setString:@""]; it would 'fix' this and the following text would be a normal font weight, but I stumbled across this thread on cocoadev that sent me in another direction. So I went back and updated the method to first grab the font in use by the textStorage's (which was bold) and creating the same font using the NSFont's familyName method, but without the bold, like so:

NSFont *resetFontWeight = [[textView textStorage] font];
//  Font name: Helvetica-Bold   
//  Font Family Name: Helvetica
[[textView textStorage] setFont:  
    [NSFont fontWithName:[resetFontWeight familyName]  
    size:[resetFontWeight pointSize]]];
[textView setString:details];  
[resetFontWeight release];

This effectively resets the font, losing the bold.

JRFeedbackProvider

I've taken a big interest in JRFeedbackProvider, already with two (albeit small) patches ready and I filed a new bug on the latest update. JRFeedbackProvider is a add-on to your cocoa app that will let the user easily submit feedback to you, be it a bug, feature request or support request, and all you need to do is copy the files and make a menu item connection, and use the provided php script on your server (or write your own in your language of choice).

This project has given me a great chance to get in to contributing to open source projects, it's scope is reasonable and there seems to be room for development that I can take swings at. I'd like to start a Zend project to act as a collector of these feedback reports, not as a bug tracker, but as a bug/feature/support filtering system. A place that collects reports from the wild and the developer can then make decisions to discard, reply to, or push over any issue to their bug tracker of choice.

Open Source Projects

I'm looking to get more involved with open source projects, both Cocoa and PHP/Zend. I'm currently a contributor to the Canary twitter client and looking to give back to JRFeedbackProvider after I integrate it into my app.

I also have some code I want to share: I've got a category for CALayer to find a sublayer by name, and a category to MGTwitterEngine to allow for image upload, adding the missing updateprofileimage API call. Hope to put those on github soon.

Starting new. Again

I've started a new site again. I enjoyed writing my last one using the Zend Framework but ultimately I don't want to maintain it, I'd rather be writing. I've tried schedules for blogging before but I think this time I'm just going to keep notes through out the day and try to post example code and other stuff I can derive from what I work on.

This site is setup using Movable Type, which so far is proving to be very nice

Stackoverflow

About this Archive

This page is an archive of entries from July 2009 listed from newest to oldest.

March 2008 is the previous archive.

August 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.