Úll is nearly upon us

Around October 2011, Paul Campbell pitched an idea to me. The conversation went something like this

I’ve an idea for a conference. It will be aimed at Apple Developers and Designers. I’ve even got a cool name for it. It’s called Úll. I want you to help me.

That was about it. I knew Paul as we’d been through Launchpad together. Our desks were close by. We didn’t talk software much, but I do remember lots of chats about fine restaurants.

I liked the idea, so I agreed.

Organising Úll is like organising a large wedding; There’s venues, meals, guests; Then there’s speaker accommodation, entertainment and the logistics of making it all happen. It’s scary, stressful and worrying during the process.

And then Úll 2012 happened. Every speaker was amazing. Every social aspect was fun. All those words that are used so freely really describe it. Engaging, Entertaining, Enthusing, Inspiring, Enjoyable.

The line I’ve used to everybody since was “It made me want to do my own job better”. But that only begins to describe it. It made me proud to be part of the iOS and Mac development community. I shared moments with great speakers and picked up stories. Úll will always have pride of place in my career highlights package.

Looking back, many of my highlights were moments:

  • The night before the conference, sitting in a hotel bar with Michael Lopp, John & Amy Gruber, Paul, Josh Clark and Des Traynor. People I’ve respected near and far, together just shooting the breeze
  • The look on Josh Clark’s face when we entered the big ballroom for the banquet. He was gobsmacked
  • Seeing Jim Dalrymple walk into the top floor of Odessa. It’s a long walk up. Out of breath, all he can manage is “What the fuhhh?”
  • Baby Guinness shots with Amy Jane. Her idea.

But one moment stood out. After the last talk, Paul went up to the podium to thank the last speaker. You need to realise that at this point, we feel it’s a good conference, but we genuinely don’t know how well received it is. This is before Saturdays night’s events, before the chill out on Sunday. So, there’s still good stuff to come, but frankly, we’re still nervous about if we’ve actually pulled it off. And Paul asks

Was this worth doing?

What followed was a standing ovation. I was stood at the back of the room. Paul had beckoned me up to the podium, but I didn’t even hear that. I stood there and let that applause wash over me. I’m not exaggerating when I say it sent shivers down my spine, and had me welling up.

Yeah. It was worth doing.

A week or two later, I met up with Paul again. “So let’s start planning 2013″.

And now, it’s back. What a line up. I literally can’t wait.

Leave a comment

State of the iPhone versus Android debate

I’ve been thinking about the current status of the “iPhone Vs Android” debate. Here’s a brain dump of where I think this is at.
In no particular order

  • Android 4.0 is pretty slick. It has taken this long though. The earlier versions weren’t actually that good
  • It will continue to get better, but unfortunately progress will be hampered patent spats. Apple are the biggest offenders here. For some reason they seem to be targetting Samsung over everyone else
  • Well, I say “some reason” but Samsung are selling a TON of devices. They’re very good devices too
  • There seems to be big difficulty in getting Android users out of their obsession with “free”. Paid apps still hugely disappointing when compared with iOS
  • But, there’s a strange sense of entitlement amongst Android users. If you’re a known brand and you release iPhone only, you will get a lot of responses from angry Android owners.
  • This does not mean it will be worth your while to produce an android app
  • Divergence continues to be a problem. Even when you explain, people won’t necessarily believe you
  • No doubt about it. If you want big reach, you can no longer ignore android.
  • Native continues to give you best results.
  • The snake oil salesmen will still continue to flog cross platform solutions. These will continue to suck
Leave a comment

Welcoming Gavin

Today, we welcome Gavin Rooney into the team. Gavin has studied games development at Carlow Institute of Technology, so brings new capability to the Tapadoo Team. He describes himself as “a games coder/designer”; Brevity seems to be his thing.

The Gavin Rooney

Gavin’s working iOS and Android, and is focussing on 2D Graphics, and we’re delighted to have him on board.

To join me in welcoming Gav to the team.

Leave a comment

UITabBar Not Seeing Touch Events when you build for iPhone 5? – Try This

I’ve just spent an hour or so chasing a bug which had my head scratching. Hope this helps anyone else who encounters this.

The symptoms were as follows:

  1. I had a straightforward UITabBar based app
  2. When testing on 3.5″ screen, it worked fine
  3. When testing on 4″ screen, the tab bar would not respond at all

I tried looking at the view hierarchy, and there was no case of a view overlapping; user interaction was enabled in all the wrong place.
Eventually, I tracked it down to the main window; When I switched on “clip subviews” for this window, I realised that the tab bar wasn’t even drawn. This was the clue.

What was wrong?

Simply put, the project was originally created with a version of XCode 2 years ago. The main window was created in MainWindow.xib, and this had a fixed size (which, for some reason XCode wouldn’t allow me alter), and the autoresize mask couldn’t be altered either.

There was no creation of the window in the App delegate (this all occurred prior when MainWindow.xib was loaded, prior to the app delegate being called).

The fix was simple enough. In the first line of the delegate’s didFinishLaunchingWithOptions I added the following

window.frame = [UIScreen mainScreen].bounds;

Hope this helps someone.

Update
Nevan King was in touch to highlight a more elegant solution. Anthony Prato’s post, is better again.

That’ll teach me to use google before I waste an hour.

Leave a comment

Twitter’s changes: Thinking Ahead

It was reasonably late last night in Ireland when the changes to the Twitter API was announced. My initial reaction was similar I guess to John Gruber’s. I was concerned about what it meant to developers; I thought the matrix in the announcement was very “un twitter”.

But I’ve since calmed. I don’t hate it it that much. Yeah; Twitter won’t be as great as before, but at then end of the day it will either be good enough, or not. I think I summarised it ok in a tweet:

Basically

I think its easier to drill into this with a few bullet points:

  • Twitter was never really about the user experience. People came to it for the content. Or more correctly for the conversations
  • Great clients like Tweetbot provide the great experience, but using tweetbot is simply a choice I make of a tool to access twitter by. It was never “I like tweetbot so I should use twitter” (that would of course be backwards)
  • Twitter are now trying to take control of the client experience, presumably to monetize it
  • They have to do this; without monetization twitter would fail, and we’d have no twitter anyway
  • The “new twitter” experience will presumably have ads and/or promoted tweets
  • Lots of users will hate this
  • More users (than the previous point) won’t hate it, nor will they care
  • If the experience turns out to be terrible, people will stop using twitter if and only if getting off twitter is more acceptable than seeing ads
  • This is unlikely, as we really like the conversations we have there
  • Or more specifically, the larger general public won’t leave because Beyoncé (or Justin Beiber or whoever) is still on it, and the main reason they are on twitter themselves

It strikes me that many earlier adopters of Twitter (say the first 5 million users) consider that they own twitter because they were around from the start. They where the ones who explained it to their friends, even when their friends were skeptical. But you don’t own it. And, if it were to continue without appreciable revenue, it’ll be gone anyway. So it is changing.

Unfortunately, the changes are deeper to the seasoned twitterer than newer members. But hey – The seasoned guy is probably harder to advertise to and so forth.

I think the group with the most legitimate gripe is the developers. Twitter was launched with a basic web site, and an API which allowed Twitter to say “Knock yourself out – lets see what you can do”. And developers answered amazingly. There are great apps out there; and this undoubtedly meant that twitter could be available on every browser, desktop and mobile device with no development cost. Those developers did twitter a great service. They are getting the two fingers from Twitter, and this is wrong. (Who’s idea was the arbitrary “200% from today” crap anyway?)

I think this has yet to play out more. It is a calculated risk by Twitter. It may yet get tweaked. I don’t think Twitter will eat itself from within with crappy changes; If something is causing too much of a push back, they’ll alter course.

Twitter’s making their omelette. We’re seeing the inevitable breaking of a few eggs.

6 Comments

Irish Times Talks Transport Apps

Oh, and we get a mention. For travel innovators, timing is everything

Leave a comment

Certificates Magically Re-appearing in your keychain? Try this

We’ve had this ongoing issue on our Continuous Integration server which had us scratching our heads. It went like this:

  1. We create a certificate for our CI “Developer”
  2. We add him to the provisioning certificate
  3. The build is fine
  4. Some time later, we update the provisioning profile, and install this – We remove the old certificate from the key chain
  5. Each subsequent build, the old certificate magically re-appears in the key chain, and the code-signing fails as there are multiple matched certificates in the keychain

If you’ve seen this; here’s what I think is happening, and here’s how you work around it.

The certificate is embedded in the provisioning certificate. During the code signing process, a check is made to see if this is in the keychain; if it isn’t, the code signing process adds it to the keychain. Because the keychain has a matching private key, the certificate is now valid again, but cannot be used, as you now have 2 keys with the same identity in the keychain.

We tried deleting the older certificate time and time again, but the build process always brought it back. So frustrating. Also; there’s radars about this (example, and there’s questions on StackOverflow about it.

But here’s a little tip that helps; Note the certificate is put back into the keychain, but codesign will only work with a certificate where the private key is also in the keychain. The problem arises when the re-inserted certificate has its private key in the keychain.

So, next time this happens

  1. Locate the older, duplicate certificate
  2. Expand it
  3. Delete it’s private key

Now, even if you remove the certificate also, and even if your build re-instates the certificate, the private key will not be in the keychain, and so this older, duplicate certificate will not be used to sign your binary.

Yay. Go us.

14 Comments

Knock On Effects, and the Long Game

Many years ago, Microsoft made a decision to OEM their operating system. It went stellar, and runs on machines built by lots of manufacturers. These machines support peripherals developed by an even larger number of companies. There’s no doubting the success this has led to.
There’s a knock on effect though: Microsoft’s Beta Programmes have to be aimed at this wide audience; Secrecy is pretty much non existent if your beta programme involves millions of people.
So. Microsoft pre-announce early. If they didn’t, their beta programmes would let all the cats out of the bag, and there’d be nothing to talk about.
But when they build their own product, their marketing teams are conditioned by years of early announcements, and see this no differently. They early-announce their Surface product, and with this early announcement, have to leave out the yet-to-be-decided facts.
People’s reactions are are bemusement: When ? How Much?

This is the knock-on effect of the OEM programme.

Many years ago, Apple made a decision to build all of the ecosystem, and keep it internal. It grew slowly, and took years to make the slightest dent in the PC market.
But, this gave them the luxury of secrecy. When you own and make it all, you can ensure people keep their traps shut.
So, when Apple announce their products, they can say things like

“Today”

and

“$2,199″

People’s reactions are then about sprinting to their local Apple store, or reaching for their credit card.

This is a knock-on effect of playing the long game.

Different approaches…eliciting different responses.

3 Comments

Android scaling – quick example

This morning I wanted to demo how android sizes text for our designer. So I wrote a quick app that displayed text sizes in a few ranges 10-20 sp , dp, and pt. A nice side effect was it also showed how well android handles the vast differences in screen sizes and densities out there.

Some quick photos showing how android handles displaying things at a particular size across screens of different densities. Here’s a galaxy nexus with a 1280×720 (~316 ppi) xhdpi screen and a galaxy s+ with a 800×480 (~233 ppi) hdpi screen both displaying the same app.

The text blocks are all 48dp high, also the suggested sweet-spot for hitbox heights. They are demoing different text sizes that one might set in both sp and dp measurements. (sp will grow if someone turns on large text in the system settings, dp won’t). These screens are very different in terms of pixel counts and physical sizes, yet android performs very well in making them almost physically identical to my eyes and fingers. The nexus screen does look better of course.

The later images shows the difference in using px or dp dimensions for a views width. There’s a noticeable difference setting a px width between devices. Hopefully few people are laying out stuff with px anyway. The docs and the tools point it out straight away as a ‘don’t do that’ moment.

However dp performs nicely and just like the heights, the blocks with a dp width are pretty much physically identical on both.

Android does get a bit of a bashing about the diversity of devices that exist, but the sdk does a very good job in trying to help the developer out as much as possible.

Tagged | Leave a comment

The Sinclair ZX Spectrum is 30 today.

So I thought I’d repost this

Leave a comment