So, looking at Engadget’s live updates for Steve Jobs’ Interview, it would appear that Apple is looking to make ASoT obsolete. Here’s a pic of the forthcoming YouTube integration in June’s AppleTV software update, courtesy of Engadget:

So, I guess Xdog will be kinda miffed, huh?
Although, apparently Steve is still in the habit of calling people personally to recruit them. So, Steve, if you’d like to email me, I can give you my phone number; I’m ‘alan’ at this domain. Thanks mate, talk soon
I was asked just now to explain how the ‘About’ page in ATV Loader works, and since it’s actually really simple, I thought I’d share it here.
It actually uses BRDocumentController, which can display any of the following components:
- Title header, with or without an icon
- Scrollable text (actually a BRParagraphTextControl)
- A button, with a target & action
You can create your About.txt file in TextEdit in plain text mode (or your favourite plain-text editor), but be sure to save it using UTF-16 format. That last bit is important, because that’s what BRParagraphTextControl expects by default, although you can provide a different encoding by calling -setDocumentPath:encoding: instead of -setDocumentPath: as I do in the following example. I prefer UTF-16 though, since that means it’s fully localizable (you’ll never need to worry that under a different locale you’ll need a different encoding, at run time).
To use BRDocumentController, you call your choice of the header, document, and button setup methods, and finally call -doLayout to arrange your chosen items prior to display. This last is also important — without that, everything will be positioned at the lower-left, on top of one another. Any setup functions you don’t call will not create that object, so, as in the example below, not calling -setButtonTitle:action:target: will result in no button being created or displayed.
Here’s the code I use in ATV Loader, tweaked slightly to inline a separate method:
- (BRLayerController *) _showAbout
{
// 'About' file path
NSBundle * bundle = [NSBundle bundleForClass: [self class]];
NSString * path = [bundle pathForResource: @"About" ofType: @"txt"];
if ( path == nil )
return ( nil );
BRDocumentController * result = [[BRDocumentController alloc]
initWithScene: [self scene]];
// by default uses Unicode (UTF-16), which is what we used when
// creating the file
[result setDocumentPath: path];
[result setHeaderTitle:
BRLocalizedString(@"About ATVLoader", @"'About' document header")];
[result setHeaderIcon: [self listIcon]
horizontalOffset: [self listIconHorizontalOffset]
kerningFactor: [self listIconKerningFactor]];
[result doLayout];
return ( [result autorelease] );
}
Looks like someone at MacNN noticed the BDK, and so I’ve had a fair bit more traffic pop up today. As a precaution, file downloads are going to be moved to another server with more bandwidth a little later today.
Just a heads-up.
Update: I worked out how to use mod_rewrite to redirect things instead. So the links haven’t changed after all — yay!
Version 1.0.6 is now available for download, both from the link below and from your Apple TV. This version includes a French localization by GoldstarQC, German by therealkerni, and Spanish by dordoka. It also adds indications of updated plugins in the plugin list, which will look like this:

For plugin authors, the implementation works by checking the FRApplianceName and CFBundleName values in your bundle (the former is the localized CFBundleName, btw). If neither of those match the title or the ’short name’ under which you’ve registered your plugin at plugins.awkwardtv.org, then you can add a new key to your Info.plist, like so:
<key>ATVPluginShortName</key>
<string>myshortname</name>
The short name is the value which appears after the ?recordID= bit in the URL for your plugin page at the plugins site.
Yeah, I needed to do that to make it work for loader, which is ‘ATV Loader’ out here, but ‘AwkwardTV’ inside the plugin. Let’s hear it for forward-thinking!1
And of course, the manual installer is located at the usual place:
Download version 1.0.6
So, after a few hits from what I would guess are actually Apple Stores here & there (either that or Apple is handing out IPs to its employees to use from home), I’m now seeing a bunch of visits (one or two per day for about five days now) from Cupertino.
So, greetings Apple people. If there are any AppleTV programmers looking, would you care to let me know how accurate my tutorials are?
Oh, and if the person using a French OS X browser happens to be Bertrand Serlet: Bonjour, monsieur— aimez-vous me donner un travail?
1
Actually, that goes for pretty much anyone at Apple with the ability to prod the HR department into action; all job offers graciously accepted…
I got my video tutorial done….. almost 20 minutes of it…. and it was 4.3GB in size (uncompressed). So, I proceeded to try & encode it using H.264 into a smaller file size. But it ganked the text too much, so I tried again, with a higher bitrate. And again. And again.
In the end I gave up & just did ‘Export to Apple TV’ instead. It produced a 100.3MB file. Hm.
So, I uploaded it to the Internet Archive, rather than kill my hosting provider. It’s a 1152×720 resolution video, Mpeg-4 using H.264. Right-click the link below to download it, left-click to stream it directly within your browser.
Go straight to the .m4v file
So finally I can release to the public what I’ve been working on for the past couple of weeks. It’s been a bit of a labour of love for me, and I wanted to get a few things just so, including proper online help modeled upon Apple’s own, a fabulous Apple Devtools-style icon from BigBaconAndEggs, and incorporating feedback and suggestions from my testers ericIII, xdog, and |bile| on the AwkwardTV IRC channel.
It includes an Xcode project template to get you started, a set of class-dumped header files for the necessary frameworks, and an application which lets you run the Apple TV interface in a window on your desktop.
So, without further ado, I shall direct you towards the official product page itself for more information and a download link.
Okay, so the plugin did not in fact handle redirects correctly, it just happened to be the case that my Mint download counter redirection URL didn’t cause problems during testing, but everything else actually did, including the one just added to the XML feed used by ATV Loader.
sigh…
So, here we have version 1.0.5.
Pray, people. Pray.
Download it here
And so, scant hours later, after fiddling with a bug in the ‘update-self’ routines, we have version 1.0.4. This version fixes that bug (earlier releases will not set the privileges on the built-in SetupHelper tool properly, meaning it’ll fail to install what it downloads).
I’ve also added a custom User-Agent to the HTTP headers used by the appliance when downloading items. If you want to track the number of hits you get from it, the new value is:
"Mozilla/5.0 (AppleTV; U; Intel Mac OS X; ATVLoader)"
Just filtering on ATVLoader would probably do the trick, though.
The download link and installation method, as ever, remain the same.
Download it here
The download link and installation method remain the same.
Download it here