img_7894

Goodbye, Grandma

My grandmother passed away today. I cried for the first time in a long time. I am lucky though: I got the chance to know my grandma.

Her name was Maria (and she is part of the reason behind my daughter’s name). She was such an incredible woman. Not only was she a hard working person (she’d wake up at 5am and turn in at 10pm), but she never complained about the hand that life dealt her. She was born in the countryside, and she lived all her life at the top of the Harghita mountains. She raised four children (including my mother), and sadly she had to bury her husband and her eldest son.

She was strong and fit. She rode her bicycle till well in her 70s. She wouldn’t miss Sunday mass even if she had to battle a blizzard. She was respected and obeyed by the entire family. She never raised her voice, nor did she ever need to punish anyone. She knew how to have fun, too. When we least expected it she’d prank the kids, or she’s crack a joke.

Before emigrating to New Zealand, the very last trip I took was to go and see her. It was a 12 hour journey, and although I only spent a few days with her, I never regretted it. That was not the last time I saw her, though. I went back in 2011 and, for the first time in my life, I was able to have a grown-up conversation with her. She told me about what our family went through during the Second World War, she told me about how my grandfather lived and died, she gave me life advice, and she answered all my questions. I loved her more that day then I had my entire life. I had always known she was an incredible woman, but until that day I had never quite understood why everyone looked up to her the way they did.

My grandmother played a big part in my life. When I was nine years old and I ran away from home, I ran to her. When I had to decide what to do when I had a week to spend in Romania, I went to see her. When I close my eyes and think of my childhood, I remember spending time with her, learning how to herd the sheep, milk the cows, work the hay…

I’m lucky because I have so many memories with her. But there will not be any new ones and this is hard to come to terms with. Goodbye, Grandma, rest in peace, and thank you for everything you gave me.

#Jafac picture

#JAFAC – Don’t Miss It Next Time

I had the privilege to speak at the very first edition of #JAFAC hosted at the fantastic GRIDAKL. Many people requested that speakers share their slide decks. Since there’s nothing sensitive in mine, I’m able to post it below.

During the interactive part of the talk I mentioned a number of apps. Some these (iOS) apps were: Air NZ, Amazon, Chirp, Drafts, Emoji++, Evernote, Garageband, IMDb, Instagram, Instapaper, Kibo, MacID, Musixmatch, OmniFocus, Overcast, Slack, Starbucks, Trello, Way2Ride, Workflow, and Trade Me.

I didn’t know what to expect when I was invited to take part in this event. I have a lot of respect for the people who put it together, so I went. This tweet right after the conference pretty much sums up my experience:

I came back reassured, inspired, and motivated. Thanks Sandy, Brenda, David, Steph, Jimmy, Christine, Te Miha, Richard, Colart, and everyone else I had the pleasure to listen and to talk to.

It was also very impressive to see just how knowledgeable were all the people in the attendance. Day two, the un-conference, enabled all of them to play a more active part and turned into such a revelation.

Stephanie BySouth

“Coaching Leaders” session with Stephanie BySouth. Part of un-conference on day two

If you focus on enabling people to work together successfully, if you are all about empowering teams, if you are keen to find ways to remove needless processes, if you want to learn on how to use feedback properly, if you desire to be in the company of really smart (Agile) people, then trust me, you don’t want to miss the next edition. In the mean time, I’ll leave you with a quote from Sandy: “no pain, no Spain”.

nicktmro_2016-Apr-02

I’m Attending Google I/O 2016

Although I have attended WWDC several times in the past, I have never attended Google I/O. I wanted to, but I didn’t manage to. This is about to change.

After a couple of years of becoming more and more involved in the Wellington Android community (by organising both the Android Meetup and GDG Wellington) I have finally been able to register for Google I/O.

I am a lot more excited than I thought I would be. The advent of Material Design and the relase of better and better Android devices (it’s no secret I’m a fan of the Nexus 5X), have contributed to making me more deeply involved in the Android ecosystem.

If you are around San Francisco between May 15th and May 21st, and you are keen to catch up and talk mobile stuff, get in touch. 

I can’t wait to attend I/O and to come back home to share my expeirence with the rest of the Google and Android community here in Wellington, New Zealand.

Adobe’s Efforts

In 2014, Adobe purchased the photo editing platform Aviary and integrated it into is Adobe Creative SDK. Aviary was known to be an easy-to-integrate photo editing tool, which is why so may 3rd party developers embraced the platform and integrated it into their own apps.

A year and a half later, developers are told:

  • the old Api Key won’t work anymore
  • they need to bloat their apps and include more of the CreativeSDK
  • they need to create a new App ID on the My Apps page on CreativeSDK.com
  • they must write down the secret token information since they won’t be able to retrieve it after registering their apps

This would be easier to come to terms with, had it not been for the insincere opening statement on the developer site:

We’ve made great efforts to ensure that migrating from the Aviary SDK to the Adobe Creative SDK is as seamless as possible.

Did I mention that end-users may end up needing Creative Cloud accounts before they can use the tools? The Getting Started guide is a herald of the future change: “Authentication is part of every Creative SDK workflow and every action performed requires a logged-in user”.

I do hope to see this change for the better, but I’m not holding my breath.

Interview Questions – One of my Favourites

Being a part of an interview can be a daunting task. For some people it’s a painful experience, for others it’s a thrill. I remember being in interviews that I didn’t want to end, and in others where I felt like banging my head against the desk. Assuming the interview is going well, there’s this one question that I always like to bring up.

If I’m being interviewed I like to ask:

If I do everything right by you, and I am a top performer, where can I be in two years’ time?

I need to know what the strategic plan is for the company. I want to know what the growth opportunities are. Depending on the passion and the clarity of the response I can also draw other conclusions or come up with follow up questions.

The reverse is also true. When I conduct interviews (and I’ve done hundreds in my career so far) I like to ask:

If we do everything right by you, and we support your growth, where do you see yourself in two years’ time?

I have heard some amazing answers, ranging from: “I’ve left the country“, “I’m running my own company“, “I’m the best mobile developer in New Zealand“, all the way to “I have taken your job“.

If you decide to start asking this question in your interviews (whichever side of the table you’ll find yourself), I encourage you to follow up during your first and second performance reviews…

So why don’t you take a moment and ask yourself: if you are honest with yourself, where do you want to be in two years’ time? If you’re feeling brave, tweet me your response.

p.s. this is a good opportunity for me to recommend this book: The Manager’s Book of Questions by John Kador. It’s a fairly old book, but because it doesn’t focus on one particular technology, it asks various categories of questions (from icebreakers to competency), and it doesn’t seek provide the answers, I still find it very relevant.

Clean Code – Mandatory Reading for Developers

All developers should need to read Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.

If time prevents you from reading an entire book, then at least read this chapter: “17. Smells and Heuristics”.

One of my favourite bits of advice (that actually comes up a lot in discussions with the developers around me) is captured in this paragraph:

There is hardly anything more abominable than a dangling false argument at the end of a function call. What does it mean? What would it change if it were true? Not only is the purpose of a selector argument difficult to remember, each selector argument combines many functions into one. Selector arguments are just a lazy way to avoid splitting a large function into several smaller functions.

The book is filled with code examples, describes concepts rather than programming language idiosyncrasies, and is useful even for seasoned programmers.

Whatever language you code in (today), this book is likely to become a fixture on your desk for a very long time after you’ve finished reading it. Get the paperback version, and fill it with colourful post it notes.

segment-hero-apple-tv2-201510

TV Wishlist

I’ve owned an Apple TV for a few months now (I have a Dev Kit unit). I’ve coded for it and I’ve been enjoying it a lot more than I had anticipated. Here are some of the things I’d like to see in the upcoming iterations of the software / hardware.

Accessories for the USB-C Port

Camera

I’d buy a camera compatible with the this new Apple TV in an instant. I’d mostly use it for video chat (FaceTime, Skype, etc) but I can see how some other types of apps could use it too (Snapchat, Livestreaming a video podcast, etc).

Playroom / Kinect style games could also benefit from being able to plug in a video capture device.

Bluetooth is not an option because the camera would needs its own power source.

Game Accessories

This port could also be used for a number of game accessories. From Dance Dance Revolution mats, to Steering Wheels for your favourite driving game.

Web Browser

My reason may be different from yours. If you ever tried setting up an Apple TV in a hotel room, you probably know how annoying the whole log-in via a browser window situation can be.

Search APIs

Apps could be so much more powerful if they could tap into the Siri Remote search capabilities. Search is available to some video streaming services, but I think many more apps could benefit from such a feature. Here’s an example: “Siri, play a 10 minute summary of the new on Reuters”.

Picture-in-Picture

I’d love to be able to watch a film and then launch a Wikipedia or IMDB type app and interact with that app while the movie is still playing.

It would be great to be able to watch some live sports while shopping on Gilt, or browsing my next holiday destination on AirBnB. Anyone can get distracted during a game of cricket, surely.

New Remote

I’m one of those people who watch TV in the dark. Because of this I find myself holding the Siri remote “wrong”. I’m wishing for a less symmetrical remote that I can pick up an instantly know which way I’m holding. I also want a trackpad that is either less sensitive or is a bit smarter and doesn’t activate until I’m holding the remote with a tight grip or is able to detect accidental touches.

I’m hopeful

The reality is, that until the things above are implemented, the Apple TV will have to be shared with some other device. In my case, the couch device of choice is my iPad.

It’s likely that Apple prefers this, but they are also the one company that would be very happy to cannibalize its own product rather than wait for someone else to do it. Come on Apple TV, kick my iPad off the couch and turn it into my bed-side device.

ios9-ipad-iphone-airplay-callout

AirPlay Speakers. A SONOS Alternative for iOS Users

I have been jealous of my friends sporting SONOS setups for a while now. My reasons for not jumping on the SONOS bandwagon are not limited to just the steep prices that the SONOS speakers come with. The reality is that I prefer to use my own music / sound playing apps and because I listen to podcasts for a considerable amount of time. In this blog post I will describe a cheaper and more flexible alternative for achieving the multi-room setup that SONOS is praised for, using AirPlay enabled speakers.

Scenario

In this article, I’ll describe my actual home setup. I need at least three speakers: two for my lounge area and one for my office. I wish to be able to play music and podcasts (via my Overcast, my preferred Podcast app) to either speaker independently or to all speakers simultaneously.

The SONOS Ecosystem

Pros

play1-blk-front

SONOS PLAY:1

Part of the SONOS promise is that you can easily and painlessly play the same music in multiple locations (rooms), using speakers that “play nice” and “just work” with each other. I believe that SONOS does deliver on this promise.

Scaling the SONOS setup is trivial, all that’s required is buying another speaker and adding it to the setup.

Cons

I have three main reasons to hold back from buying into the SONOS ecosystem:

  • SONOS speakers are quite expensive (arguably they do have very good sound)
  • They require the use of the SONOS app
  • Integration limitations

Now that Apple Music is available for SONOS my third reason is all but gone, but I have to acknowledge that this may not be your case if you prefer streaming apps that are not available in the SONOS app.

Cost

The cheapest speaker is the SONOS PLAY:1. It costs for $199. A high-er end SONOS PLAY:5 speaker costs $499. The SONOS SUB Wireless Subwoofer and the SONOS PLAYBAR TV cost just under $700 each.

The AirPlay Solution

Pros

iW3S_F.jpg.450x400_q85

iHome iW3

My needs are quite specific, therefore some of these pros may not apply to everyone.

  • AirPlay is available to any app (it’s a global iOS setting). It’s also easily accessible from the iOS Control Center
  • Big choice of speakers (most are budget friendly)
  • Old Airport Express units can turn any speaker with Line-In into an Airplay Speaker
  • Very easy to use as external speakers for Apple TV
  • Can stream the sound from any of my Macs (iTunes even has support for multiple speakers)
  • Most speakers have Bluetooth too, thus making them really good travel companions (to locations where WiFi is not available)

Scaling the AirPlay setup is not too difficult, after adding another speaker to the setup, there’s an option AirFoil configuration step.

Cons

The initial setup is more complex than with SONOS. Usually it requires joining an adhoc WiFi network provided by the speaker, followed by entering the local WiFi settings which enable to speaker to join the local network and become a wireless speaker for any AirPlay device.

SONOS speakers can easily turn into a 5.1 setup when enough speakers are added to the setup. AirPlay speakers haven’t really solved this, yet.

Cost

One the the most affordable options is the iHome iW3 AirPlay Rechargeable Wireless which retails for $49.95!

The audio aficionados can splash out on a Bowers & Wilkins Zeppelin Air Wireless AirPlay Speaker Dock. Amazon sells it for $420 at the moment.

I happen to have a Mac that is always on at home, so I decided to also purchase AirFoil. This has enabled me to group my speakers into “rooms”.  The Mac version costs $29.

Alternatives

Bluetooth

Most people will probably just use Bluetooth, and that’s ok. Not everyone needs the lossless audio that SONOS and AirPlay offer.

AirPort Express

As I mentioned above, an old Airport Express can turn an existing speaker into an AirPlay enabled speaker. Check out Apple’s refurbished store for a deal on AirPort Express units or buy from Amazon for $29. You don’t need the current generation one.

Android

There are apps out there that allow Android to tap into AirPlay. I am not familiar enough with them, and I suspect the new Chromecast Audio may actually be a more suitable solution. Chomecast Audio sells for $35.

Conclusion

I implemented the AirPlay solution for myself and I’m happy with it. I’d love to hear your thoughts, especially if you prefer an alternate setup.

3D Touch vs. Long Press

Apple announced the new iPhone 6S line at their September event. One of the tent poles of their new iPhones is 3D Touch, a hardware feature that provides “depth” to touch interactions. An argument can be made that this feature can be replicated by a Long Press (a gesture that is already available).

Interestingly enough, almost all the interactions demoed during the event could be built today, using a UILongPressGestureRecognizer. Even the taptic feedback could be faked with a vibration.

Here are some of the differences between the two gestures that I can think of.

  1. Resting a finger on the screen could mis-fire a Long Press, but not a 3D Touch
  2. 3D Touch can provide instant gratification. Long Press gestures are defined by a minimum touch delay, therefore they would be laggy in comparison
  3. It would be very difficult to implement an app with multiple Long Press gestures, but it would be straight forward to mix a Long Press gesture and 3D Touch
  4. Long Press does not provide depth. Games can benefit from using this feature

Neither 3D Touch, nor Long Press gestures are discoverable. That is potentially why we have not seen many Long Press implementations this far. Looking at the Apple Music app, the Long Press gesture (on a For You playlist for example) opens the overflow action menu. It will be interesting to see if 3D Touch replaces that, or augments it in some way. Even the Instagram implementation doesn’t really “need” 3D Touch to offer a preview of the selected photo. A one second tap could provide the same functionality, albeit with a bit of a delay.

I’m thinking of an analogy with the home button. Pushing it down twice takes the user to multi-tasking. Tapping it twice invokes the “reachability” which makes the screen slide down. I often forget that the latter feature even exists… Long pressing an app’s icon will compete with the gesture that invokes “wiggle” mode. It will be interesting to see if users will be confused by the two gestures.

I have a feeling that many developers will start implementing Long Press gesture fallbacks for 3D Touch and that more and more apps will start providing Peek + Pop behaviours in their applications. This alone can be a huge win for many users out there, as long as the developers don’t start hiding essential functionality behind a gesture that I believe is not very discoverable. (Did you know that a Long Press on the back button of OmniFocus takes you to the app’s home screen?)

Notes:
I have not used an iPhone with 3D Touch yet (pre-ordered mine yesterday) so many of the things above are just guesses.

The one fear I have is that the 3D Touch edge-screen-swipe multi tasking gesture will interfere with the back navigation gesture. I sure hope I’m wrong…

Deciding on which iPhone to Buy

I bought a new iPhone today. My current one is damaged, but to be honest with you, I probably would have upgraded anyway. Here’s how I decided which iPhone to buy.

iPhone 6S

The choice was between the iPhone 6S and the iPhone 6S Plus. I have never owned a phone as large as the iPhone 6S Plus and I sometimes find even the screen size of the iPhone 6 to be too large for me.

I considered the 6S Plus because of these factors:

  • Optical Image Stabilisation for both Photos and Videos
  • Longer battery life
  • With a screen that large, it could replace my Kindle

In the end I bought an iPhone 6S because of these reasons:

  • Easier to handle single-handedly
  • More comfortable in my front pocket

The two things above I will be doing a lot of and I just don’t want to have to pay attention to how I handle the phone. The size of iPhone 6S Plus would make me be too aware of how I handle the device.

I have no doubt that the iPhone 6S Plus is a superior phone. Sometimes though, the more pragmatic choice prevails, even when it’s not a matter of cost. There are people who have to have the best, and to them I say: enjoy your iPhone 6S Plus.