Archive for April 2015

The early bird catches the worm

I'm starting to become an early-morning person.

This is a big change for me. I used to be a "late night" person. My day used to consist of 2 parts: the day(job) part and the night part. Going home after work (or whatever) meant there were at least a few hours left in the day to be (even more) productive. And so I spent countless nights behind my computer's screen (because "being productive" equals "coding", that is imperative), coding away into the wee hours of night. The morning after would prove difficult but nothing that coffee couldn't solve. And the weekend usually gave good opportunities for sleeping in to catch up on some sleep. And so I was no morning person at all, meaning that "get up at 8am" was usually a very difficult task. Also, I had no fixed schedule in my life back then. I woke up when needed, I went to sleep when I felt like it, I rarely had breakfast/lunch/dinner at relatively fixed times.


Gliding

I went gliding! And it was awesome.

My friend and co-worker Jelle Vandebeeck has been a glider pilot for (what he claims - and I have no reason to doubt it) 15 years now. Last year, just for fun, I mentioned I would like to get off the ground with him (in a glider, of course). He wasn't dismissive of it, so we went to search for a good date.

Unfortunately, due to scheduling conflicts and weather conditions I didn't get the chance to actually go flying. No worries, there would be other moments.

And so, now that flying season started again, there were no races to be flown yet, the weather looked good and I was able to free some time (there's always so much to do, but it's about setting priorities), which meant that this weekend we were on!


Scripts in your app bundle

It appears Apple changed something in the iOS bundle upload : it now requires that all executables in your app bundle are signed (this might be applicable for Mac uploads too, but I haven't tried). I hear you think: isn't this the case anyway, but there might be more executables in your bundle than you expect.

Of course, there's the binary for your app, which obviously is executable. But there could be more too: if you include shell scripts, for example, which are marked executable (chmod u+x script.sh) then iTunes Connect now considers them as actual executables and now requires them to be codesigned.


Using interfaceOrientation with iOS8 transitions

Working on an app last week, I needed a way to respond to rotation events in a view controller. Since iOS8, the rotation APIs in UIViewController are deprecated:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration NS_DEPRECATED_IOS(2_0,8_0, "Implement viewWillTransitionToSize:withTransitionCoordinator: instead");
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation NS_DEPRECATED_IOS(2_0,8_0);

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration NS_DEPRECATED_IOS(3_0,8_0, "Implement viewWillTransitionToSize:withTransitionCoordinator: instead");

As you can see, they want you to use viewWillTransitionToSize:withTransitionCoordinator: instead. So, no problem, we'll just implement that method.

Update: I'd like to stress this a little more: the reason they've changed these behaviors is for a reason. Your app mostly likely is way better off using adaptive layout using size classes, Auto Layout and manual corrections using the new transition callbacks.

Now, the only thing is: what if you need to know those "toInterfaceOrientation" or "fromInterfaceOrientation" value from the old APIs?


Nanoc

The current iteration of this blog runs on an "engine" called Nanoc. Nanoc, you say?

nanoc is a static site generator, fit for building anything from a small personal blog to a large corporate web site.

The keywords here is "static site generator". This means that I build/generate the site locally on my machine, and then push it to a server on the internets for all you to see. There's no dynamic site running, built in PHP or ruby or whatever. Just plain HTML files, some CSS, a bit of Javascript and some images or videos.