Sanho HyperDrive USB-C Hub for iPad Pro 2018

Back in December there was this Kickstarter campaign from a company called Sanho – they’ve presented a USB-C hub which will fit the new iPad Pro perfectly and offered a 50% discount for early backers (was about 60€ with taxes). Not having a new iPad back then I already knew that I’ll need a proper hub for my work.

I finally received my unit now and want to give a feedback of my first impressions. As a general note, I use the 12.9″ iPad Pro 2018 with 512GB. The hub comes in a case with different adapter plates for the different options of iPad cases. I am using a third party smart folio case which is like the Apple one but without the ridiculous pricing…

The build quality of the hub is very high, it feels like it comes from Apple itself. The space gray finish matches the iPad perfectly, once it is plugged in, it almost melts with the iPad to one unit. Most of the hubs I’ve found have a short USB-C cable before the hub itself. This isn’t nice on iPad, the hub dangles around while plugged in and I am not sure how long this works without breaking the USB-C port. I also use a different hub since day one which has one of the cables and it always feels kind of “naaah” when plugged in. The HyperDrive on the other side fits perfectly on the iPad and feels safe. On the hub itself are plenty of ports:

  • 1x HDMI for video output up to 4K30Hz
  • 1x Micro SD
  • 1x SD
  • 1x USB-A
  • 1x 3.5mm headphone jack
  • 1x USB-C for charging

The headphone jack is one of the most important ports for me. Apple chose to remove it on the iPad itself (I really don’t understand this decision) so if you want to plug in your high quality headphones so either need a 3.5mm jack to USB-C adapter or a hub which comes with a jack. Hubs with a headphone jack are kind of rare, I did not find any without making a big compromise. I make a lot of music with iPad, so the flawless use of high quality audio gear is very important for me.

iPad with MIDI controller overview

I’ve used the hub for about a week now for photo editing (SD file import) and music production (headphone jack and USB-A for my audio interface and MIDI controller) and don’t have any complaints. Even at the full price this hub is highly recommended if you are looking for a high quality accessory that matches your iPad Pro. I don’t call it a minus but when I am using an audio interface and MIDI controller at the same time I could need a second USB-A port. For this scenario I use my other hub (the one with this annoying short cable). Another USB-A port on the HyperDrive would make it bigger so it would cover the speakers, so it is completely reasonable why Sanho went with one.

If it comes to a rating I would give it a 9.75 of 10! If you want to know more about check out the kickstarter page or Sanho itself!

Dead Bird is open source!

I pushed my (fairly old) game DeadBird, a very simple Flappy Bird clone, to GitHub today! It is made for iOS and uses SpriteKit, so if you are interested feel free to have some fun with it! GitHub opened up private repositories, so in the next I will add some more stuff on my repository.

Grab it here: https://github.com/hacku/DeadBird

First test of my new Steadicam Volt

After a long wait I’ve finally got my Steadicam Volt which I’ve backed on Kickstarter a while ago and I am very impressed so far. It needs some practising to get very smooth results but the firsts shots with it are very satisfying!

Shot in 4k / 24fps @ 100mbps in FiLMiC Pro on iPhone SE. Song: Happy Piano by STUDIO WANTED

 

Stepr 1.7.1 – Pedometer for iPhone is available now!

stepr iphone image

A new version of my iOS app for iPhone “Stepr” is out in the wild. The update focuses on iOS 10 compatibility and an improved ui layout for bigger iPhone screens. There are also some bug fixes in the multithreaded engine and speed improvements. Some users had complaints that there data was lost at some point so I hope this issue will be fixed now!

As soon as I have more time there will be some new features in coming versions like Apple Health integration and elevation changes but more on this later. Oh and here’s a secret: soon there will be a special promotion of Stepr but we’re still negotiating the conditions so this still needs some time before it goes live…until then Stepr is available at the App Store for all iPhones (5s and newer):

app store iphone link

 

Stepr – Pedometer for iPhone 1.6 is released

10653798_837878556277435_5774316452943907361_nWe’ve send Stepr back to school and it came back even smarter! Now Stepr estimates your stride length automatically and will be more precise every day.

With MagicGoal Stepr will adjust your daily goal every week according to your own habits! Activate Stepr and it will motivate you to do a few steps more a week. But don’t worry – Stepr is goodhearted and will be nice to you!

Stepr is free at the moment, so grab your copy at the App Store!

WWDC 15 – The Aftermath

wwdc15

WWDC 15 is over for some days now and I think it’s a good time to write down some thoughts about the things Apple showed to developers. I couldn’t attend at Moscone but watched the Keynote and will have a good time with a lot of the session videos. As regularly, at WWDC Apple shows all the new stuff for their operating systems as there are OS X, iOS and new for this year: watchOS. I’ve got my first Mac almost 10 years ago (when Tiger [10.4] was the current version of OS X) and always have a critical view on new features, technologies and so on. The experience I had when using the Mac for the first time after so many years on Windows and some years on Ubuntu Linux was overwhelming. Finally somebody did everything right – a clean, simple and well thought user interface standing on a robust foundation, intuitive applications and a lot more… With growing so rapidly the last years I’ve always had a bit of a “fear” that Apple could lose it’s path and become the next Microsoft – I was wrong!

For me one of the most important things of WWDC is that iOS 9 and OS X 10.11 will be all about stability – even if I don’t have any problems on 10.10 I can spot a few things where the overall consistency lacks a bit. On iOS there are some bugs that aren’t often but dampen the experience on iOS in some way – as an example I have to restart Mail.app after some days of usage because it will not receive any new mail. I do not have crashes of the system at all or any serious bugs so I think this is complaining on a very high level. But that’s exactly where Apple was when I switched to the Mac and I believe that’s exactly there where Apple should try to stay. Focusing on rock stable systems is key to succeed with further development and the rise of new technologies. But there was more to show, so let’s dive right in. Here are my personal favorites of WWDC15:

 

Metal

When I saw the introduction of metal and the first demos last year I really was blown away – console like quality on an iPad? Awesome!! It’s great to see that Metal is coming to OS X too and even better to see that it will power the graphical effects of both iOS and OS X. I think this will be a huge improvement on speed for a lot of systems and applications. Even the fact that companies like Adobe will implement it into their applications is big news – relying on CUDA was only nice on Windows as we know today. I think it’s a kind of paradigm shift in general to design graphical applications like game engines platform independent and let them choose the “right” framework on the system they will run. Unity 3D is a good example for this – you can write your shader as you like and Unity will compile them for the targeted system – Mac / Windows / Linux / iOS / …so you do not have to struggle with this. The API which is used on the target platform can then be optimized for the hardware it is running on like on consoles. This leads to a big improvements in both performance and features! Shame on me – I did not found the time to play around with Metal since last year but I promise this will change soon!

 

Swift 2.0

Swift seems to become the major programming language on OS X and iOS (and watchOS). I grew up learning C and C++, do a lot of C# at work and always struggle when I am on Objective-C. I do not really know why – maybe it’s because of the different syntax on methods – but I’ve never became a good friend of it so I was positive about Swift since the introduction last year. Seeing a new star on the horizon with a lot more comfort on the programmer side is really good but I didn’t do anything productive with it because I felt that the development of Swift will change a lot and I am too lazy to update my code after every new release of Swift. With version 2.0 this feeling is gone, I think it’s a good time to switch since a lot of frameworks offer Swift compatibility now and the language itself seems more mature. The last new language I learned was processing and it fascinated me by being so simple and fast for prototyping – I just write your code and you instantly see a result – no need for a lot of writing for simple tasks as it is in C++. Combining this with the speed of C and a lot of well developed frameworks and voíla – there you have Swift! Oh and the argument that it is only platform specific for Apple was no argument for me because it’s nearly the same with Objective-C! Swift will be OpenSource so I believe it will be available on every other big platform too soon.

 

watchOS 2

I preordered an Apple Watch on day one and I was sceptical since I received mine but I don’t regret it for a single moment. Since I’ve got the watch my iPhone stays in may bag almost the whole day. It’s a new category of devices which will bring up new ways to communicate and get work done that we can’t think of today. Also the features for health tracking are great – it keeps me motivated to move more throughout the day and do some workout after a long day in the office. With the introduction of watchOS 2 and the ability to access more features of the watch for third party applications like the Taptic Engine and also bringing new frameworks like CoreMotion let us developers do exactly the things we thought of initially when Apple introduced the Watch last year. At the moment I am planning two or three completely different apps that I think will be great on the watch – at least for me and maybe for some other people too. To introduce new abilities for developers with time and to not open the whole system from day one is a good move as I believe – it gives developers time to get in touch with the device and also let the users become familiar with the Watch before getting flooded by a lot of apps that aren’t working as they expect. With the introduction of watchOS 2 the Watch will be an even more powerful tool as it is already today!

 

There are a lot more things I am excited about but I think these are my three favorites of this years WWDC. I can’t wait to get my hands on all the new stuff and to watch the session videos but as always time is to short! Apart from this I think iOS 9 and OS X 10.11 will bring a very strong foundation to keep the platform up to date and to rely on in the next years. As is mentioned earlier I think that slowing down the “feature after feature” cycle and big changes from the last years will pay out great!

 

Tutorial – Get the day of the week with NSCalendar for any NSDate

NSCalendar is a mighty class which let you do a lot of different things with NSDate. At first it might look a bit complicated but with some time it gets very useful when working with dates (especially with NSDateFormatter). As language I will use Objective-C but translating it to Swift shouldn’t be too hard.

So if you want to know which day of a week a particular NSDate is you have to create a NSCalendar to work with. To do all the date related stuff you also need a NSDateComponents object where you define how to work with the calendar. With them we create dates for a particular week in were our date is and loop through them. In every iteration we check if the created date is the same as our original date. I’ve created a function for date comparisons since I need them regularly often in my app. You basically just compare the single components like day, month, year, hour, minute,…

//Create our NSCalendar to work with
NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

    //Week starts on Monday in Europe! People in the US can comment the following line out.
    [gregorian setFirstWeekday:2];
    
    //get today
    NSDate* today = [NSDate date];
    
    //We need the dateComponents to do work with our NSCalendar
    NSDateComponents *dateComponents = [gregorian components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekday ) fromDate:today];
    
    // Loop through week
    for (int i = 2; i < 9; i++) {
        //Set the weekday and create a new date from it
        [dateComponents setWeekday:i];
        NSDate *weekDay = [gregorian dateFromComponents:dateComponents];
    
        //Compare the new date with our "today"
        if ([DateFunctions isDate:weekDay equalWith:today]) 
        {
           //Do your stuff here, day of the week is i
        }
    }


So with this little piece of code you are able to determine which day of the week your NSDate object is. I hope this will be helpful for you, if you have any questions feel free to use the comments below!

Cheat sheet for Paper by Fifty Three 

If you’re using the amazing app “Paper” on your iPad, then this is a must read. Bas van den Broek gives a ton of good tips on how to achieve the most while using Paper. You can grab your free copy right here!

Thoughts on prototyping iOS user interfaces

I recently watched a WWDC 2014 session called “fake it till you make it” which gives insights in Apples process of interface development for iOS apps. In a nutshell the talk was about time saving and fast response ways to develop the right interface for an app from the start.

As I began on developing Stepr I’ve had a certain idea of the general look of the app but wasn’t sure about certain details. This led to decisions which weren’t the best. I didn’t know how and did not make many thoughts on how to use the given screen space so I tried to fit my “idea” of the interface into the screen of the iPhone. In the result the progress bar of the steps the user did on the day was way too big and the text which tells the exact number of steps filled a enormous amount of space too. The result was a user interface which was far away from looking gorgeous.

So where did I fail? The answer is relatively simple: Just in developing the interface in different iterations! I’ve tried to fix certain mistakes like color choice in previously releases but the interface is still not where I want it to be. For the upcoming release the UI will be completely updated. In the WWDC talk it is recommended to start on paper and try to get a rough idea on how it should look. Drawing on a piece of paper is fast and will give an immediate idea of the general look of the app. So I tried slightly different variations of the interface on paper first and voilá – while drawing I found things that would not make it look right.

some sketches of the new user interface
some sketches of the new user interface

After completing the sketches I moved on to Keynote. Keynote??? Yeah exactly, that was what I thought when I watched the talk. The guys recommended Keynote for UI prototyping for a good reason – it is fast and easy to design a interface from from a combination of screenshots of existing apps, shapes and text. And the killer feature is definitely the animation toolset. It is very fast to try different UI animations by using the magic move feature for transitioning between frames.

evolution of the ui
evolution of the ui

I’ve tried it today and have to say that I feel faster than working with photoshop, maybe because of the limited toolset (which isn’t a bad thing). After completing a design I exported it as an image and sent it to my iPhone. To see a design directly on the targeted device is priceless because you get an instant response on how it “feels” on the device itself…something very different as only evaluate it on a computer screen as I find. This method gave me the ability to quickly recognize flaws in the design because I could see which elements didn’t work well instantly. Another plus is to send the screenshots to other people and ask them several questions like “how do you like the interface and what do you do not like?”, “do you know how to use the app?” and so on. This step is still ahead of me but I will give it a try since the response of [potential] users is very important.

In conclusion I have to say that I really enjoyed to try out the tips from the WWDC talk and I think that these steps will help to design way better interfaces from the start up! Maybe it looks like wasted time at first but you will definitely find stuff that does not work so well in your design before writing any line of code which saves much more time in the end. If you do not already use this or a similar way to design your interfaces you should give it a try as soon as you can!