dog

Ready for Lion

July 7th, 2011

In case you’re wondering how the Pedias will fare when Lion comes roaring into the Apple world, they are all 100% ready. We’ve been testing the latest version of the programs on the latest Lion developer release and everything is running smoothly.

We have yet to work out how we’re going to tackle Lion-specific features such as the new Full Screen View and how it’ll work with the already existing Full Screen View in the Pedias but we’re very excited about all the new possibilities. Now all we need is 10.7 released! :)

Update: Just fixed two small bugs related to Lion compatibility so make sure you download the latest version (4.6.7) for the programs if you’re on Lion.

Detecting PPC Code Before Mac App Store Submission

June 3rd, 2011

Since the Mac App Store is Intel only, developers have to submit applications that are stripped of all PPC code. Slowly more and more developers are building their applications Intel only, given that the latest versions of OS X, Snow Leopard and soon Lion, are Intel only. The Pedias rely on a large number of external frameworks, so it was not as simple as changing the build setting in Xcode. While the transition happens here is an easy command we used to find PPC code used in our applications.

find Bookpedia.app -exec file {} \; | grep "ppc"

Of course run in Terminal while inside the build directory and change Bookpedia for your app name. Should any frameworks or libraries be reported to contain PPC code, you can strip the PPC without rebuilding by using the lipo command.

lipo -remove ppc AFramework.framework/AFramework -output AFrameworkIntel

I stored these new Intel-only versions of the frameworks to be used by Xcode when building our software for the Mac App Store. Of course there is also the option of doing the stripping to the entire app after building with the ditto command (but I prefer to do modifications before Xcode’s final code signing step, even though Mac App submissions are re-signed for any changes during upload).

ditto --rsrc --arch i386 x86_64 Bookpedia.app Bookpedia-AppStore.app

Hope some developers with larger apps will find this useful.

A Modern Apple Tree

May 29th, 2011

Today we had the rare opportunity to see where Apple devices are born. Luckily we were allowed to take a few pictures and with the sun just right, it was a magical moment.

 

 

We decided to take the office outdoors on this sunny Sunday afternoon. (Click on the images to view larger.)

New Version for the Pedia Programs: 4.6.5

April 22nd, 2011

Version 4.6.5 is just a small update but it fixes some nagging bugs, especially for the RTF text export (which didn’t encode correctly for diacritics and languages with characters not found in ASCII). The search plug-in architecture has also been completely revamped along with fixes to most of the plug-ins for retrieving more data, in particular larger cover images where available.

To get the update just run your current Pedias and use the ‘Check for Updates’ command found under the program name.

For Mac App Store users – the update has been submitted for DVDpedia, Bookpedia and CDpedia and hopefully they’ll be approved soon.

New Info View Template: Jungle Green

April 20th, 2011

DVDpedia user Chas has written an info view template, with the help of Forum user Jonas, that includes some nifty links to Wikipedia and IMDb.

Just click on the little icons next to a name and the relevant page will open. Of course the possibilities here are endless – icons like these could be used for links to Metacritic, Rotten Tomatoes, Hulu… (Reminds me of the LeoTab info view template which incorporates a trailer and cover image search.)

You can download the template from our Extras page. I hope you enjoy it; thanks Chas!

Conditionally Building Mac App Store Applications to Exclude Sparkle

February 9th, 2011

A lot of developers are in the process of rebuilding their apps for the Mac App Store. One of the guidelines is not using any update mechanism and leaving the updating to the App Store. Like most developers we also use the Sparkle framework to do our non-App Store updates and figuring out how to build a version of your application without Sparkle can be frustrating. Some developers have already solved it in clever ways – our favorite being Gus Mueller from Flying Meat who uses a script to run a find and replace:

Then when my build script is run for App Store builds (-s) it’ll use /usr/bin/sed against Acorn’s project.pbxproj and replace all instances of Sparkle.framework with Noop.framework. Then the automated build takes place, and Noop.framework gets copied in instead of Sparkle.

But we feel there’s still space for another solution on how to conditionally include Sparkle:

1. You should have a configuration for the App Store. It can be created under the project settings “Configurations” tab. You should duplicate your Release configuration for these new settings.

2. Remove Sparkle from being automatically included in all linker calls. To do this remove it from under the Targets–>Link Binaries With Libraries.

3. Under all your regular configurations (Debug, Release, …) add Sparkle to the linker flags. Open the build setting and set “other linker flags” to “-framework Sparkle”.

OTHER_LDFLAGS = -framework Sparkle

4. You now need to remove Sparkle from the Mac App Store application folder after building it. Create a new custom script build phase to run at the end of your build (Custom Package Processing above) and make the script the following (do make sure that the value of $CONFIGURATION matches the name you set  your new configuration for Mac App Store releases):

#!/bin/sh
# Remove Sparkle Framework for MacAppStore
if [ $CONFIGURATION == MacAppStore ]
then
rm -rf "$TARGET_BUILD_DIR/$FRAMEWORKS_FOLDER_PATH/Sparkle.framework"
fi

The above takes care of the physical framework and linking but you still need to remove any code that calls the Sparkle framework. To do so set a variable in the Mac App Store build that you can use in your code to conditionally include Sparkle calls.

5. In your Mac App Store build setting set a flag, we use:

OTHER_CFLAGS = $(OTHER_CFLAGS) -DMacAppStore

6. Encapsulate all  your sparkle code with #ifdef preprocessor directives.

#ifndef MacAppStore
[[SUUpdater sharedUpdater] checkForUpdatesInBackground];
#endif

7. Don’t forget to update your interface if necessary. Remove any menus and check for update preferences. Include the menus programmatically for non-Mac App Store builds at applicationWillFinishLaunching:

#ifndef MacAppStore

// Insert Check For Updates menu
NSMenu *mainMenu = [NSApp mainMenu];
NSMenu *appMenu = [[mainMenu itemAtIndex:0] submenu];
NSMenuItem *uploadMenu = [[[NSMenuItem alloc] init] autorelease];
[uploadMenu setTitle:NSLocalizedStringWithDefaultValue(@"Check for Updates", nil, frameworkBundle, nil, nil)];
[uploadMenu setTarget:self];
[uploadMenu setAction:@selector(checkForUpdate:)];
[appMenu insertItem:uploadMenu atIndex:1];

#endif

The same method can be used for the eSellerate registration engine. The linker flags would be, “-lEWS -lValidateUniversal” and you would remove both the libEWS.a library and the compressed .zip version of the engine. Hoping the following proves useful to a few developers. Code on.

Pedias on the App Store

January 28th, 2011

Our first few weeks on the App Store have gone well and even though there have been some minor confusions both on our part and the users’, all in all it seems to be a good addition to our distribution channels.

The one niggle I have is about demo versions. We can send users from the App Store to our website to download the demo and try out the programs for free but then they have to delete the demo in order to purchase the full version from the App Store. This is not the best user experience, especially if users think that their data will be affected by the deletion of the program (it won’t – the Pedias keep their data separately from the applications for exactly this reason).

Of course the time-lag between submitting an update and getting it approved is also a bit of a stumbling stone because we never know how fast the process will be. With our latest update (4.6.4) now in review, the first one we’ve done since the release of the App Store, that’s not critical because there weren’t any major bug fixes included. But I can understand that it might be frustrating for Mac App Store customers to have to wait for an update when they know that it’s out and available on other channels. We’ll have to see how this plays out in the future.

Happy New Year

January 5th, 2011

What better way to celebrate the start of 2011 than with some excellent shots of DVDpedia in action, courtesy of DVDpedia user SP. He currently has 4365 movies in the program (total duration 631.92 days) and quite a sweet setup in his living room:

Can any one compete with this, setup and/or library-size wise? Let’s hear it!

Giving Back

December 8th, 2010

The Child’s Play charity was set up a few years ago by the funny folks from Penny Arcade. They collect toys, video games, movies, books and money for children’s hospitals in North America (and expanding around the world). Being in hospital is awful enough but it’s even worse during the holidays so hopefully these donations make the time a bit more enjoyable and bring some cheer to the kids.

Bruji is proud to be a corporate sponsor for Child’s Play 2010 once again. If you’d also like to become a sponsor, donate to the hospital toy drive or just send $5 via text message, check out Child’s Play Charity for details.

New Italian Search Plug-in

July 11th, 2010

Andrea Guglielmi, Italian DVDpedia user, created a plug-in for his favorite site DVD-store. He has spent a couple of weeks tweaking it to perfection and collaborated with DVD-store manager to develop the DVD-Store plug-in. They even went so far as to amend their search routine output to allow him to create the link back URL to DVD-store reliably so that clicking the title of imported movies opens directly to DVD-Store details page for a single movie and not search results. That is some outstanding support from a DVD website for a single DVDpedia user. Not only do they have good support and a big database they have some good prices on Blu-ray titles if you are living in Italy.

Kindly they have both agreed to share the plug-in with other DVDpedia owners, so our Italian users can jump right in by downloading the plug-in. We really appreciate Andrea’s work and DVD-store for providing access. This is Andrea’s second plug-in for DVDpedia (his first plug-in, included with DVDpedia, is for Terminal Video).