red when excited

things we think while we do things we do

a lot of what we do is typing, so we thought, let's do some more typing about what we are typing about. make sense?

Switching to Windows & Sony: Day 1

Thursday, January 09, 2014

Don’t panic. Well. Perhaps don’t panic. 

Back in 2005 I happened to be in San Francisco just as the Mac Mini was launched. I arrived there after driving for two days with my first iPod as my only source of music. I had been impressed with the iPod despite years of disappointment with other MP3 players and enormous skepticism about Apple and its products. 

So I decided to pick up a Mini. 

The rest is history really, a few years later I had a first generation Core 2 Duo iMac on my desk and I had, in my heart, switched. 

Now, with the development of Blitz Bombers on Sony’s PS Vita I have an excuse to do two important things: 
  1. Look at the revitalised Sony gaming platform: How does it compare (from a developer perspective) to Apple’s iOS developer tool suite? What’s sign up like, what are the tools like, how does the publishing experience compare? 
  2. Sony’s tools run on Windows. I’ve just picked up a Lenovo Yoga 13 touch-enabled laptop, now seems like a good time to give Windows 8.1 a go. It’s not like I haven’t used Windows in the last 5 years; I have. It has however been a “classic” Windows experience. I haven’t played with 8 in any way at all, and now with the first iteration on the 8 metaphor released, it seems an oppertune moment to emerse myself in the platform again. 
Now, please note that I’m doing this from an Apple user and developer perspective. I am going to be drawing comparisons between Apple experiences and Sony/Microsoft ones. What many Apple supporters don’t realise is… most Windows users don’t have the vaguest idea how things work over in OS X land, and they don’t care. If they have used a Mac, it might not have been an “open the box and boot up” experience. They may just have been droppped in the uncanny valley of OS X where things look a lot like Windows but don’t work the way they expect. That’s often not a positive experience. 

Here’s a great example. Some friends of the family picked up a Mac for the family this Christmas. They picked a 27’’ iMac with blue-tooth keyboard and touch pad. They did this largely because their son is a big Apple fan, and the family computer was due for an update. They are loving it. Set up could not have been easier. The cables have gone. They love the gestures on the touch pad. 

Did you get that last bit? They love the gestures on the touch pad? That’s one of the things that drove me nuts when I did throw an early beta of Windows 8 in a VM to try. I couldn’t figure out any of the gestures. Apple has an advantage. They shipped the hardware, with the gestures printed on the box. The box is sitting next to the iMac, with the gestures facing the user. Software doesn’t come in boxes any more, but hardware does. Apple’s combination has allowed them something physical to print them on, and these new users are using that, and loving it. Does it mean the gestures and swipes in Windows 8 aren’t as good? Does it mean they aren’t as intuitive? No. It just means they aren’t as discoverable, and there isn’t a damn thing Microsoft can do about it in software. 

So. Let’s get started. 

  • The Yoga arrived in a lovely box, well thought out unpacking process, absolutely on a par with Apple’s experiences. All good. 
  • The initial boot of Windows 8 (the laptop doesnt ship with Microsofts latest version, but I know I can upgrade for free) was smooth. No scrolling text showing BIOS checksums or such nonsense. The initial text introducing Windows seemed overly chatty, but Im a nerd. Thats probably just me. 
  • Entering login details is as smooth as you would like. Curious reboot occurred, during which I am “taught” the various gestures. See note above, I’m well aware I need to remember these. I don’t. 
  • The combination of touch and mouse is REALLY interesting. I kind of love it whilst also being aware of the fact that I’m having to decide how to do things. Every time I’m forced to stop touching and use the keyboard, I’m resenting it. Every time I can just jab my finger at a button or do a swipe I’m enjoying it. 
  • I have no idea how to update to 8.1, so I bumble around looking for update or Windows Update. I find something, but it says no updates required. 
  • I head over to the “Store”. Nothing there either. 
  • OK, I can use Google as well as anyone else. Oh, I have to chose my browser. Seriously. EU. Stop making Microsoft do this. It’s not giving me the consumer a great experience, and they are no longer the same company they were 10 years ago. 
  • I pick IE, I want 100% Microsoft. Bing results point me at a page that explain a (it appears to be different) path to the right update options that should cause 8.1 to appear in the Store for me. I follow those steps, it’s now downloading 138 updates. It provides no indication of when this will be completed. It has been sitting there for an hour, still no progress bar or estimated time to complete
Not a win, but I’m going to leave it overnight and see where we are in the morning. 

Apple TV 3G

Wednesday, September 04, 2013

No, no. I don’t mean 3G wireless… I mean a true 3rd iteration. I’ve just read “Mysterious ‘Set Top Box’ Shipment Records Hint at Refreshed Apple TV Coming Soon” over at Mac Rumours and it set me thinking… there’s been a reasonable amount of discussion about whether or not there ever will be an Apple TV SDK. We are all hoping for it, but there have been some good arguments for signs that something might be coming (Kyle’s resonated with me) and against from folks like Ben Thompson with his well thought through “Not so fast on that Apple TV SDK”. 

However, if you’ll let me play what if in the 6 days between now and September 10th, most of the “seems unlikely”s can be addressed.

Hardware isn’t powerful enough
Well it could be if they are shipping an update. The two limitations typically cited are power and SSD space. The later may easily be solved in a rev, and flash memory isn’t getting more expensive. I don’t see why Apple couldn’t do this if they chose to. Looking at power, Ben argues that the A5 series isn’t going anywhere. He might be right, but actually I think Apple have a history of throwing something away if it doesn’t meet their needs. The A6 or some variant of it could well be a candidate. Of course those A5’s may still find homes in other Apple devices as well. However, actually the biggest issue I have is… you are assuming that this will basically be the iOS SDK. Multi-tasking, system background apps (push e-mail etc) may simply not be available or running. This could be made to work with some relatively simple restrictions that have been in place before. 

You have AirPlay
You do, and it gets you a long way. But there’s lag. The kind of lag that makes arcade action games deeply unsatisfying for anything other than secondary information or more tolerant games. The kind of lag Apple doesn’t tolerate for long. Of course suggesting that AirPlay is good enough kind of discounts the next argument… Why would you both to fire up the Apple TV for AirPlay, but not for a native Apple TV app. 

You wouldn’t bother
However, I completely discount the second part of his argument (essentially referencing Chris Adamson’s post suggesting that it’s too much effort to go turn the Apple TV on rather than use your phone). Adam says he throws huge swathes of use-cases. Sure, if you start with the assumption that you aren’t already plonked on the sofa and using the Apple TV. 

Actually I think the biggest thing that you can throw at the against case is…

That Dumb Little Controller
Nope, I don’t buy a Siri based control interface. It’s not 100% reliable (it’s frustrating enough when your remote isn’t aimed correctly at the IR sensor when you twitch a muscle to press a button, let along having to repeat verbal commands). However the new controller API appearing in iOS and Mac OS X really does suggest that Apple may have a perfect storm of oppertunity. 

That said, it just feels like it enable one very specific set of use-cases. I think you would want a richer user-interface unless games and media consumption are the only goals (which they could be, and that would be enough for me). 

What if Apple aren’t worried about the same thing that the stock market is worrying about, what if the C doesn’t stand for ‘Cheap’ or ‘Colour’? 

What if it stands for ‘Controller’?

Sure you have the iPod touch, but you want a device that is always with someone when they are sitting in front of the TV. That’s not an iPod Touch, that’s an iPhone. You start to get a growing set of use-cases: 

  • Out of the box, it’s a TV peripheral
  • Add a game controller it’s a casual gaming platform
  • Add an iOS device it’s a second (big-ass) screen with native apps controlled by a touch device you always have with you

There’s a but, right? 
It’s not going to happen. I’d love it to. But not this year. Apple has certainly proved it can walk and chew gum, but they don’t need to do this now (next March would be more likely, but I don’t think there is a crushing pressure. Best in, not first to,  market is their MO). 

Oh, and the ‘C’ is totally for Colour. 

Dash and Oyster: Sandboxed AND Integrated

Thursday, June 20, 2013

We were nearing completion of Oyster (, code generation was in, and whilst fixing a bug I used a snippet we have in Dash (, and it suddenly struck me that it would be great if we could create snippets in Dash directly from Oyster. 

We fired off an e-mail to Kapeli to test the waters… would he be interested? The immediate and welcome answer was yes, but with the follow up question… as a pair of sandboxed app store applications, how could we make this work? 

His reply contained a couple of initial thoughts

  1. Use the Dash service “Create Snippet in Dash”... possible, but not a great user experience (make sure you have services turned on just for starters, but also the user would have to name it, set the language… things Oyster already knew)
  2. Distributed notifications… but that would only work if we weren’t sandboxed
  3. Try and write to Dash’s library directly. Ugly, and fragile, we’d be immediately loose the ability to change our core formats easily and the user would have to navigate to the Dash library to even give permission
  4. Custom URI that only Dash would open, allowing the snippet to be stored. This felt like a good choice, but what if the regular expression were very long? Would we hit encoding issues? 
We iterated around solution 4, as it felt the closest to what we want (and it’s basically how iOS apps try and deal with similar restrictions). Ultimately we augmented it somewhat… here’s the flow

  1. The user invokes the “Save to Dash” action in Oyster
  2. Oyster would “open” a URI that essentially tells Dash that there is some special data on the clipboard. The pasteboard type was custom to ensure we don’t tread on other clipboard content. That special data contained the snippet, it’s name, language, and a unique ID that would ensure if the user modified the regular expression, we would just update Dash, not create a new snippet
  3. Dash is started/activated by the URI, grabs the data from the pasteboard, and creates or updates the snippet 
Simple, robust, elegant, and Sandbox friendly. We did the work on either side and just 8.5 hours after I sent the initial e-mail we had builds that worked together. 

I thought it was worth sharing, as you don’t see a lot of inter-apperability on the Mac App Store. I’d also like to take this oppertunity to personally thank and praise Kapeli. Open and accommodating, innovative and fiercly productive. Thank you. 

NSTableView Drag and Drop with Bindings and NSArrayController

Tuesday, May 28, 2013

Red Sweater have an excellent blog post (link) providing an NSArrayController which provides support for drag and drop re-arrangement of NSTableView items. 

It works perfectly, but there is a gotcha… It is single minded in its purpose to provide the above capability, but it restricts your ability to provide drag and drop outside of the list as well, possibly in multiple formats. 

Sadly comments are closed on the blog so we weren’t able to post this minor tweak there, but here is an updated method for their class that will ensure any NSPasteboardWriting implementing class also writes its other formats onto the paste board during dragging (their class will just ignore these other types, its not interested, so the drag and drop still works). 
- (BOOL)tableView:(NSTableView *)tv writeRows:(NSArray*)rows toPasteboard:(NSPasteboard*)pboard{	
	if ([self draggingEnabled] == YES){
        //This is for the drag and drop within the table
        [pboard declareTypes:@[kRSRTVMovedRowsType] owner:self];
		[pboard setPropertyList:rows forType:kRSRTVMovedRowsType];

        //This adds all the other paste board types for anything the object supports itself
        for (NSNumber *row in rows){
            id arrangedObject = self.arrangedObjects[row.integerValue];
            if ([arrangedObject conformsToProtocol:@protocol(NSPasteboardWriting)]){
                NSObject *writableObject = arrangedObject;
                [pboard addTypes:[writableObject writableTypesForPasteboard:pboard] owner:writableObject];
                for (NSString *type in [writableObject writableTypesForPasteboard:pboard]){
                    id pasteBoardItem = [writableObject pasteboardPropertyListForType:type];
                    if ([pasteBoardItem isKindOfClass:[NSString class]]){
                        [pboard setString:pasteBoardItem forType:type];
                    } else {
                        [pboard setPropertyList:pasteBoardItem forType:type];
    return [self draggingEnabled];
That’s all there is to it. Now all you need to do is add the NSPasteboardWriting protocol to any of the objects in your NSArrayController has and their additional types will be written too. 

Big thanks to Red Sweater for the original post, and hopefully others will find this useful.  

Nintendo takes aim at their remaining foot

Thursday, May 23, 2013

Not only did they mistake the Wii for successful hardware (as opposed to a great integration of hardware with a single piece of awesome software), they now don’t understand what fans are.

For the avoidance of doubt, if you make videos of Sumbolon or Cloud Mate and upload them to YouTube, you are welcome to retain ownership of those videos. 

1 of 37  1 2 3 >  Last ›
Please wait...