2016 MacBook PRO review

Update 2017/3/14:

I’ve been meaning to append an update to this post for a while, but have been too busy to do so. Today, I was once again reminded about it for reasons I’ll get back to shortly.

So, immediately after the original blog post, I had two major issues:

  1. It had a HW glitch in the keyboard (Hubris for being too tough on Dell, I’m sure) – basically the ‘O’ key only worked one of three times it was pressed. Apple replaced it overnight, no prob.
  2. Then I was consistently getting a black screen on start up if I had entered sleep mode with my external monitor attached. Apple tried for a short while to blame my external monitor… That stopped when they learned that it’s an Apple Thunderbolt display. There was another feeble attempt at blaming 3rd party software, so I reset the machine to factory and the problem didn’t go away. So, finally convinced, they offered to take it back, but I would then have to wait 3 months for a new one because it’s a custom build. I finally opted to just have it repaired. One more night in the shop, and everything has been fine since. So, early build, monday model, lemon, I don’t know, but I guess no matter what you pay, you can never be sure HW won’t have issues. Lesson learned.

In both cases Apple Support has been top notch (safe the external monitor thing, but that was actually kind of funny 🙂 ). When things do go bad, and they do, good customer support is all I really ask for, and Apple’s is second to none. I leave them my number, 30 seconds later they call back and walk me through the various tests and problems until there’s a solution.

HW glitches aside, there’s a couple of things that I wrote about originally that I now have a 3+ months perspective on:

Weight and size does matter. I was unsure if the modest reduction would make any difference, but it is noticeably nimbler on an every day basis. It also is way more silent than the old one and it does not have the same hotspots around the charging port, for example.

Performance, well, it’s the same story every time you upgrade. It only takes a few days to get used to it, and you then forget what it was like before. Only thing I’ve noticed consistently is that I have much less graphics issues in Unity. Before, I would get weird texture glitches every now and then (lack of GPU memory probably), and had to restart Unity. I haven’t seen that since I got the new laptop.

The USB-C port, much as I predicted, has been a non-issue. Or rather, it has turned out to be more annoying for others because they can’t borrow my charger or my lightning cable, but since that greatly reduces my risk of loosing either, I consider it an overall win 🙂

The O-led display however… Well, it’s the reason I finally decided to write this, because it’s such a ridiculous non-feature that I just had to vent. It has no practical purpose what so ever; it does nothing that I couldn’t do without it. Nothing. But if it was just that, if it was just a party trick, I could try to forget how much it probably added to the BOM and simply ignore it. But that’s exactly the problem, it’s not just useless. It is in fact incredibly annoying on a daily basis.

The bar have no tactile feedback, so even just using it as if it was a row of regular old function keys is a step down compared to a normal keyboard. But it gets worse because of how good the touch is. I usually hover my finger over the F7 and F8 keys when debugging, but now I can’t because it causes random taps when I don’t want them. And don’t get me started on how many times I’ve been asked if I want to turn Siri on. I do not plan to talk to my laptop. Ever. So you can stop asking, but the damn button is right above the backspace key, so if your finger is just a wee bit off, Siri will think you called. Same story in the other side where F1 is so easily activated that I get annoying help dialogs all over the place.

Apple, seriously, what were you thinking? Did this “feature” go straight from Ive’s skull directly into production – nobody actually tested it?

If you absolutely had to change the keyboard, how about you fix the goddamn cursor keys. Yes, I would like full size up/down keys also – I’m a grown up, I have grown-up-size fingers.

Yes, I could use an external keyboard, but at this price, I really shouldn’t have to.

Original post follows below:

Me and my laptop

It’s been 4 years since I bought my trusty MacBook PRO retina. That’s easily a year more than I’ve ever had a laptop before, and the first time ever that I was in doubt as to whether it made sense to get a new one.

All the laptops I’ve had before (Top of the line Dells and Lenovos, typically) has started getting tired after less than 2 years, making the last year of ownership a real drag. Part of that has been due to Windows bloat and build up of crud in the registry and file system in general, so in part I suspect the MacBook has lived longer not just because of its hardware but also because of OsX, but the hardware is certainly part of it.

(On a side note, the Dells have been notorious for needing hardware replacements; from keyboards loosing keys to graphics cards getting bugged colours or weird artefacts, I’ve made extensive use of the next-business-day service. In fact, my wife got a Dell not too long ago and had to replace the HDD after just a few weeks – They might be ok for home computers, but they’re anything but a professional tool and I’ve had my last Dell for sure).

Still, 4 years in with the MacBook, and I feel like it could easily have done a year or two more, but two things were nudging me towards a new laptop – the 256GB SSD was constantly kissing the 95% mark and I had to do frequent cleanups in my temp and trash folders to be able to work (not a bad thing per-se 🙂 ) and the graphics card was sometimes struggling a bit with two large displays running Unity, photoshop and Blender at the same time, causing the fan to be on more than I would have liked.

Enter the 2016 MacBook Pro.


First of all, let’s get the price of out of the way: It’s ridiculous – there is no justification for it, other than Apple charging big bucks because they know they can. For me, as for most people in my situation I would guess, it is, however, also somewhat irrelevant.

It’s my primary work horse – the only tool I own (aside from software licenses), and I buy one every 3 (now 4) years and use it 10 hours every day – saving $1000 and risk getting a Dell-esque piece-of-crap Hardware that needs a new HDD in the middle of the week, costing me a couple of days worth of work, just isn’t an option. The fact that it lasts a year or two more than the competition means I would probably pay even more if needed (Don’t tell Apple that though 😉 )

So, with that out of the way, what am I getting for all my cash?

It’s obviously lighter and thinner – I only just got it so can’t say if this is anything I’ll really notice, but since I drag it around all the time, less is definitely better. The limited testing I’ve done suggests that it also stays cooler, which was my only real concern with the reduced size. The old one could get seriously hot around the hinge when Unity was pushing polygons at 60FPS so I had a (seemingly unwarranted) suspicion that a smaller form-factor might make it harder to get rid of the heat and thus make the problem worse.

I love the keyboard. It’s a bit click-y-ti-clack where the old one was dead silent, but the feel is just phenomenal. I actually think I type faster and make less typos, though that could be a euphoria-induced illusion ;).

The touch pad is even more awesome. I loved the old one which was leaps beyond anything I’d ever had on any other laptop, yet it pales next to the new one. Everything from the sound it makes to the very subtle, yet rewardingly haptic, feedback when you press it is just best-of-class – nothing I’ve tried on any other laptop (mine or others) are in the same ballpark – hell, they are not even in the same galaxy. It’s so good that I feel a bit bad for throwing $100 at a new magic mouse 🙂

The O-led display that replaces the function keys is… Well, it’s a gimmick. A very expensive one, I presume. I really don’t see the point of it, and seriously doubt I’ll ever use it, but I’m going to try to keep an open mind. Maybe there some kind of use for it, and I just can’t see it, but this is probably the one thing I would have taken out if I could, just to save a few bucks.

USB-C… I *really* hate that I can no longer use my thunderbolt display as a charger. This, to me, is the only really annoying “feature” of the new MacBook, but I still think it was the right thing to do. My old macbook would get quite hot around the magnetic charging port, so I suspect the connection wasn’t all that fantastic, even if it was a great concept, and having a single shared port for everything just seems like the right thing to do. The world probably isn’t ready for it, but it wasn’t ready for tablets either, and that changed quick enough. Having an adapter for my other legacy peripherals is a minor moan, that I suspect will go away faster than I can possibly imagine. So thumbs up for paving the way for a world of fewer odd cables, though I wish I could have bought a mag-charger adapter.

I now have 512 GB of SSD which should keep me running for the next 4 years (my 256 GB disk has been almost full for 4 years, so it’s not like my needs are skyrocketing, but every new project I start do tend to add a handfull of GB, so it’s nice to not have to worry about it).

The new graphics card is fast. The old one was never a problem, but I can quite clearly feel the difference when working in Unity – projects that were just barely managing 60FPS in the editor are now keeping an almost constant 100FPS. I know this isn’t a cardinal point for everyone, but for me, this upgrade alone was worth the price.

It’s pretty much the same CPU I had in the old one, though the memory is faster, so I suspect that a benchmark would tell me that everything runs a tad quicker, but probably not enough to have any real-world impact on my daily use. If I consider a typical day in my life, the amount of time I spend waiting for CPU bottlenecks is probably less than the time I spend getting coffee (Yes, I drink too much coffee, but that can’t be helped). I much prefer a smaller, cooler, less battery hungry machine over one that is 15% faster in those few cases where it actually matters, so CPU was never a concern for me.

Finally, I love that I can have it in space grey 🙂

#MadeWithUnity in 7 days

7 Days

IMG_06727 days after I got up in the middle of the night and – for no particular reason – decided to add my own peculiar contribution to a very long list of color-match puzzle games for mobile devices, I finished and uploaded the release build of Qube Crush 3D.

That’s 7 days (and nights) from initial spark to a completed F2P game with 50 levels of brain bending puzzles uploaded to the App Store.

Just to prove to myself that it wasn’t a fluke or a happy accident, and since I had a week or two to burn while waiting for the AppStore review process to complete, I decided to do another game in the mean time.

This was to be a 2 player arena battle game and the result is Magic Micro Battle Arena, which I completed in just 5 days – mostly because it has no IAPs or Ads and no highscores, so less integration work and no horrible IAP testing. Ironically, it also got approved faster because Qube Crush got rejected due to an issue with my AdColony integration.

IMG_0611So two fully functional playable games completed in two weeks. These are not Gears of War or Doom 8, and their feature lists has been cut to the bones, but anyone with an idea of just how much time the crud of project setup, tool chain woes, app-store nightmares and 3rd party integration (not to mention play-testing) usually takes, should realize what an amazingly short time-to-market that is.

The rapid development probably means I missed a bug here or there, and I could certainly have polished both of these two games for another couple of weeks, or months even, but before I do, I’d like to know that there is at least someone out there who wants to play it ;).

Because my investment is so limited, I can try whatever crazy ideas I come up with, and if it fails, I can move on without bleeding to death.

Unity Rocks!

And that’s really why I’m writing this blog post. Because of how this is all possible. Obviously, I *am* a pretty awesome developer (hah! 🙂 ) but, truth be told, I owe most of my productivity to the game-dev tools we have at our disposal today, and at the heart of those is (in my case at least) Unity3d.

I can’t say enough good things about Unity – sure, it has its bugs and quirks and annoying issues, but at the end of the day it’s just so insanely productive that I hardly notice.

I run a 4-screen setup with Unity and Blender on a big cinema display, photoshop on my Cintiq and Mono on my laptop with either my phone or iPad hooked up for testing – with Unity’s rapid automatic import there is no sense of context switching, it’s as if it’s one big application build up of state-of-the-art parts (minus Mono which is anything but).

IMG_0674Testing and trying out stuff in Unity is so quick and easy that in two weeks, I have not once had to start the debugger. Mind you, if launching the debugger from Mono wasn’t such a nightmare, I’d probably been able to finish the games even without cancelling my weekends 🙂

So here’s to the guys at Unity: YOU ROCK!

(But please find a replacement for Mono. For those of us who’d rather chop off our left arm than install Windows, Mono is still (if only barely) the preferable option, but I’d really like to see a Unity/JetBrains C# IDE with bullet proof indexing, a nice coder friendly editor and proper refactoring that does not break script-to-game-object bindings).

If you have an iOS device you can get the apps on the AppStore – Qube Crush is free* and Micro Arena is $1 (if you ask nicely I may have a promo-code for you 🙂 )



If you don’t have an iOS device, wait for an Android update, or check out a video of Qube Crush here:


*) Yes, I know what I’ve previously said about “free apps”, I still think it’s a fundamentally bad idea, but the sad fact of the matter seems to be that as an unknown IP or small game developer you are left with a choice between “free” and, well, nothing else at all… So much for not being part of the problem, though.

TempusCura V1.8 Released

TempusCura V1.8.5 was released in the App Store a few hours ago, and to celebrate, all existing users has had their subscriptions extended with an additional free month 🙂

More New Features

I ended up adding quite a bit more features and changes compared to what I wrote about in my last post. During release testing I realized that some of the more “novel” UI concepts in the original app, while compact and quick to use, were not at all intuitive –  in fact, several of my test users had never understood certain aspects of the app, but had not realised it because they only had one project or a “team” of one person.

Here are some of the things that changed on that account:

Filters and Tabs


In TempusCura you can filter your work on 3 properties: Time, Projects and People. These filters were set using the calendar, project and team tabs in the main UI, respectively.

However, these tabs also changed how data was visualized so that when you selected the project filter you got a list overview of work sorted by project, the team tab gave a list of work sorted by team members and the calendar presented work over time.

In addition to this, the “tab bar” had two buttons that were not tabs at all: Settings and Export, and the project list had an additional purpose in that it provided a way to add and edit projects and tasks.

In V1.8.5 this has changed completely. Now the buttons in the top are no longer tabs, but separate views.

The work button still shows work in a calendar by default, but it now has three sub-tabs to toggle between viewing work by time, project or people. Filtering is now hidden and only appears when relevant (I.e. when you have more than one project and a team of more than one person). To change project filter, you tap the project list at the bottom, and to change person filter, you tap the list of persons in the work table header.

The project button provides a list of projects and access to team and task management.

The team button is gone since its function is now handled by the work view

Work registration

The calendar grid uses tap-and-hold to register new work items rather than just a single tap. The reason for this is that tap-and-drag is used to scroll the view and without the “hold” part, it was very easy to accidentally add a new work item. While most people eventually “got” this, the way you then dragged to size the work item caused more confusion still, only to be topped off with “surprise” when the work-item view appeared immediately on release.

In V1.8.5 this has changed so that it works more like it does in the native iOS calendar. Tap and hold creates a block of one hour. Moving around drags the whole block, releasing leaves the block at its current location, but does not open the work item view. In this state you can either tap-hold-and-drag the middle of the item to move it again, or the top or bottom to resize it.

Tapping the work item then opens the work item view and allow you to provide the final details before the item is created.


IMG_0456When I first started writing TempusCura, the center of attention was “Tasks” – planning, prioritizing and scheduling of tasks that would then be worked on. After testing this for a few months I realized that my daily business was mostly concerned with “work done”, and only rarely did I have time to sit down and create tasks, so I changed the focus of the app to be on “Work” instead.

Still, being able to plan ahead and keep track of what needs to be worked on is important, and the first version of TempusCura probably down prioritized this too far – to the point where it was only just usable. In particular, the task list, even when grouped by milestones, quickly got very long and hard to manage.

V1.8.5 takes a few steps in the right direction by automatically collapsing completed milestones and scrolling to the first relevant task. I have a few more changes coming up soon, but more of that in another post.

Calendar picker

The calendar picker has changed so that you now drag across the calendar to select the time period you wish to view instead of tapping first and last day. This is slightly embarrassing as the tap/tap method of selecting was just a temporary hack I did while implementing the date picker – it was never meant to end up in the released app, but for some reason it did. It’s not that it did not work, it was just hopelessly counter intuitive.

Also, date selection has been limited to one month since I don’t really think it makes sense to see more than a month at a time, and if you selected a long period by accident (say, 10 years) you could potentially bog down both server and client with a massive data download.

I also added buttons to quickly go to next and previous months, though this did not turn out as well as I wanted it to – it will most likely be replaced with something more sensible in a future update.

TempusCura Update

TempusCura V1.8

I’m pleased to announce that the first feature update to TempusCura is now complete and undergoing final testing prior to release on the AppStore. I’ve put together a list of the major highlights below.

If you’d like to participate in the beta test (or have found bugs in the current version you’d like to see fixed) please drop me a note.

Off-line Mode

Location tracking and off-line work registration

I originally decided that in this day and age everyone is always on-line anyway, so there was no real reason for adding the complexity of off-line synchronization with all its evil pitfalls, but for some reason I often find myself working in odd locations or have clients that seem to live in faraday cages with no access to neither 3G nor WiFi networks.

Not being able to register my work hours immediately meant I had to make notes of it elsewhere, somewhat defying the purpose of the app.

So as of V1.8 you can now use the app while off-line – registered work gets queued up until a network connection becomes available. You’ll see this in the UI as a work item with a dotted outline (See screenshot).

Note that off-line mode is currently read-only for everything but work items. Projects, tasks and user registration still requires a live connection – this is primarily because of item dependencies, but also because I have not personally had the need to modify any of these while off-line. Please let me know if your needs are different.

Location Tracking

Not being able to register work while off-line was, however, also a good thing since it made me think of ways to automatically track where I’d been and what I’d been doing.

The first step in that direction is the introduction of a location tracker. This feature uses iOS’ “significant change monitoring” to detect when the device is moved. Changes in location are marked in the calendar margin with a blue line and a little car symbol (screenshot above). These are initially gray in color to indicate an un-confirmed trip, but you can tap it to see the route and distance covered (screenshot below).

Trip details

You can associate each trip with a project (e.g. a customer) and name the start and end locations. TempusCura will remember the names of all locations you enter and automatically show the names next time you make a trip to that location. Once confirmed, the icon turns blue, and the trip will now be included in your reports. You can also delete trips that are not relevant to your bookkeeping.

Location tracking is off by default so you need to go to “Settings” and turn it on. You’ll see three options:

  1. Off
  2. Low Power
  3. Detailed

The Low power option relies exclusively on significant change monitoring and uses very little battery power. It is also not very precise. This option is mostly useful as a reminder of where you’ve been – the route is almost always too inaccurate to be of any use, and the measured distance can be quite far off (the screenshot is using the “Low Power” settings and as you can see, I’ve somehow managed to drive on water :)).

The detailed option still relies on “significant changes” in location as a trigger, but once a significant change is detected, TempusCura will turn on the GPS and use actual GPS coordinates (instead of relying on  3G triangulation and WiFi information). This is far more accurate but obviously uses more battery as well. TempusCura turns off GPS again when no major change in location has been detected for 30 seconds.

Note that because trips are device-specific rather than account-specific, I’ve so far opted to keep trip data locally on the device (in theory you could have several iOS devices making different trips at the same time on the same account which would create a mess in the UI). I will consider pushing confirmed trips to the server in a later version if there’s a desire for such a feature?

Improved Reporting

Reporting has been vastly improved over prior versions for those of you who are not really interested in importing CSV files into a spreadsheet for formatting. If you export by mail, a nice summary of all the work items is now included in the e-mail body. This includes both per-project summaries and per-person summaries. It also includes a mileage report with start and end locations.

Summaries are given in your selected currencies using the most recent exchange rates – note, however, that these are probably not the same rates you get in your local bank. Without getting into details about what I think of banks in general, I think we all know why that is.

Remembers Filter Selections

As you have undoubtedly noticed if you’ve used TempusCura with more than one project, it has an annoying ability to forget which projects you’ve checked off in the project filter. Basically, whenever the app gets shut down by iOS and has to restart, it will revert to showing only items from the first available project.

Not anymore. As of V1.8 the selected project and people filters are now stored and re-established when re-launched. (It’s one of those little annoying things that makes a big difference 🙂 )

Faster Login

Being able to work off-line prompted a change in the login procedure as well, since it now had to be optional. Revising this turned out to be a good idea as I was able to significantly reduce the number of server roundtrips and thus ended up with a much faster login procedure.

Minor UI Changes

The main view has received a minor visual update. The calendar grid now has vertical rows between days so it’s easier to tell them apart (for some reason, I missed this in the first release).

The header has changed from white to gray, so work items don’t get confused with the header when scrolling, and I’ve used the upper left corner of the table (which was previously empty) for a “now” button which scrolls the calendar view to the current time and day.

Changed work item text rendering so that it now renders special characters properly, and uses multiple lines of text if the space is available.

Bug Fixes

Fixed local timezone bug (daylight saving issue in some cases)

Fixed a bug that caused the calendar view to not center properly on the current day (it was offset by current time, and did not take the margin into account).

Fixed bug with “work by project” list sometimes not updating correctly

Tempo Tim Update

Last night I uploaded a new version of Tempo Tim with some new features that has been requested over the last couple of days since it was first launched:

  1. Ability to pause the timer without resetting it
  2. Parental lock to prevent kids from tampering with the settings
  3. Show remaining time while “parent lock” is on.

The remaining time is shown both as a time and as a “progress” bar in the form of a glass of lemonade 🙂

The new "lock" screen in Tempo Tim

The new “lock” screen in Tempo Tim

hipKey No.1 in AppleStore


The hipKey made a quick dash to the #1 spot in “app-enabled” accessories in the US Apple on-line store the other day.

Well done 🙂

On the downside, it seems a few customers are having stability issues which are almost certainly due to incomplete BT pairing – if initial pairing is not completed properly, iOS ends up in some weird limbo state where it will only stay connected for a few seconds at a time. Un-pairing and pairing again usually fixes it.

Another reported issue has been lack of iPad mini support, but an update which fixes this is due as soon as Apple approves it, so hang in there :). We were caught a bit off guard by the mini: Since there was no non-retina BLE enabled iOS devices before it came along, we only ever tested the app on retina devices, assuming it would just work on the mini. It didn’t.