Category Archives: iOS

Airplay adapter in the news

If you’re not yet aware, the guys at Panic found something recently. Check that link and read up. It won’t take too long. What’s pretty cool is the comment someone left. That’s pretty awesome if true.

Airplay is not involved in the operation of this adapter.

It is true that the kernel the adapter SoC boots is based off of XNU, but that’s where the similarities between iOS and the adapter firmware end. The firmware environment doesn’t even run launchd. There’s no shell in the image, there’s no utilities (analogous to what we used to call the “BSD Subsystem” in Mac OS X). It boots straight into a daemon designed to accept incoming data from the host device, decode that data stream, and output it through the A/V connectors. There’s a set of kernel modules that handle the low level data transfer and HDMI output, but that’s about it. I wish I could offer more details then this but I’m posting as AC for a damned good reason.

The reason why this adapter exists is because Lightning is simply not capable of streaming a “raw” HDMI signal across the cable. Lightning is a serial bus. There is no clever wire multiplexing involved. Contrary to the opinions presented in this thread, we didn’t do this to screw the customer. We did this to specifically shift the complexity of the “adapter” bit into the adapter itself, leaving the host hardware free of any concerns in regards to what was hanging off the other end of the Lightning cable. If you wanted to produce a Lightning adapter that offered something like a GPIB port (don’t laugh, I know some guys doing exactly this) on the other end, then the only support you need to implement on the iDevice is in software- not hardware. The GPIB adapter contains all the relevant Lightning -> GPIB circuitry.

It’s vastly the same thing with the HDMI adapter. Lightning doesn’t have anything to do with HDMI at all. Again, it’s just a high speed serial interface. Airplay uses a bunch of hardware h264 encoding technology that we’ve already got access to, so what happens here is that we use the same hardware to encode an output stream on the fly and fire it down the Lightning cable straight into the ARM SoC the guys at Panic discovered. Airplay itself (the network protocol) is NOT involved in this process. The encoded data is transferred as packetized data across the Lightning bus, where it is decoded by the ARM SoC and pushed out over HDMI.

This system essentially allows us to output to any device on the planet, irregardless of the endpoint bus (HDMI, DisplayPort, and any future inventions) by simply producing the relevant adapter that plugs into the Lightning port. Since the iOS device doesn’t care about the hardware hanging off the other end, you don’t need a new iPad or iPhone when a new A/V connector hits the market.

Certain people are aware that the quality could be better and others are working on it. For the time being, the quality was deemed to be suitably acceptable. Given the dynamic nature of the system (and the fact that the firmware is stored in RAM rather then ROM), updates **will** be made available as a part of future iOS updates. When this will happen I can’t say for anonymous reasons, but these concerns haven’t gone unnoticed.

Eureka! Mac & IOS Communication

fooGetting a Mac OS X application and an iOS application to communicate with one another has been the bane of my developer existence for several years now.

I have made several attempts at getting it – and I may have come extremely close in the past only to give up and toss the projects.

I’ve been able to get multiple different iOS applications to communicate over Bluetooth and it’s served me well in many instances. But that elusive iOS to OS X thing hung over me like a cloud filled with human-processed refried beans. However I am happy to report that the cloud now contains daisies (not filthy feces) and has released it’s pleasant bounty on my developer brow. Problem solved.

I finally have an OS X and iOS application that connect using Bonjour and communicate with one another over Wi-Fi. This is a big box that I can now check off my list of developer things to do outside normal projects.

Many of you might be thinking to yourself, “What’s the big deal? That should have been pretty easy!” Well, I am and continue to be a bit of a networking apprentice. It’s never been my strong suit, and I’m sure it never will be. I love being able to get things to talk with one another by various means, but when it involves networking I panic a bit. I stumble. It’s the least fun part of what I might be doing.

I do however want to understand how it works, and I dig into StackOverflow, Google, developer documentation, etc. looking for answers to certain things. And then learn from what I read and attempt to implement them – trying to understand what’s going on under the hood. I don’t like to just copy and past a bunch of code that works and not want to learn about why it works.

Anyway – I am really happy today.


Tower. A fantastic GIT client for OS X

If you’re a developer on OS X and you’ve used GIT before or plan on doing so in the future, you owe it to yourself to download and try out Tower. It’s promoted by fournova as easy, efficient, and powerful. And it is really is all of those things. $59 and worth every penny.

I’ve browsed and .zip downloaded many GIT repos but that was a pretty lazy and irresponsible way of going about things. Shut out of updates and I wasn’t sharing any repos on github either. Tower opens all of this up in a very, very nice way. Kick those tires and enjoy!

It would be nice someday to have such a client able to handle subversion as well and work with both GIT and subversion repositories. Have that bit invisible to the user unless they wanted the actual source technology exposed. For subversion I use Versions. Versions is also $59 and worth every penny.

iPad mini BT keyboards? Consider the one that might be on your desk already.

We’ve all been to meetings where people with iPad minis are laid out on the conference table, the cover rolled up to allow a typing angle. Lots of screen typing, but when an edit is required everything comes to a grinding halt as the process is quite slow.

When the use is casual, this isn’t a problem. But when in a meeting one wants to be able to enter and edit text in a timely manner so as not to become removed from the discussion while one struggles with previous points. Continue reading

Wunderlist 2 versus Things 2 with Cloud


Things 2

I purchased the iOS version of this (iPhone) and I have the trial of the new OS X version. I have read all over that this app’s UI is amazing. It’s very plain looking to me. I have seen some screenshots of the iPad version and it looks more appealing. The other apps while nice seem like fancy list item management. Almost like tutorial apps taken a little further in order to sell.

I know a lot of people became angry because the app was in beta for so long in regards to their own cloud integration and gave up on it – but that cloud integration is available and it works very well. That said, the apps must be purchased separately. $9.99 for the iPhone version, nearly $50 for the OS X version, and I imagine $9.99 for the iPad version? That’s a lot of bones for a GTD application ecosystem.

I do like the implementation of recurring tasks in Things. Nicely done. In general though I feel like the app flow scrapes the surface and doesn’t reveal enough to me quick enough. It’s a set of list items I can click into. Tagging is a very nice way to handle things – but I don’t have enough projects and categories of things going on all the time to warrant their filtered use. At least not now.

It’s an expensive foray into a very good application, but it doesn’t feel rounded out well enough for me. The default categories of Today, Next, Scheduled, etc. seem kind of artificial to me. Why should I need to categorize stuff like that?



I’ll start with this: free everywhere with cloud sync. There is a web application. iOS. Mac. Android. Windows. Collaboration. Notes. Recurring tasks. A Chrome browser extension. A beautiful design throughout the entire experience.

The detail view for tasks is what makes this superior to me in my usage. Due date, reminders, sub-tasks and that beautifully useful note. No tags, but there is a smart list feature that becomes active when required, hidden when it’s not. Less visual clutter.

On the iPhone it shines, on OS X it’s very nice and I hear it’s a very consistent experience all around. Three view modes in the desktop application which is very much appreciated. It’s very clean… without being spartan like Things. I have to say that Wunderlist is quite close to the perfect GTD application and it didn’t cost me a lot of money to implement and get everything synced. It’s a joy to use so far. Being a developer and a designer, I appreciate the smaller things they have done here and there – it’s a very well thought out application with a lot of support around it, a lot of cross-device parity, and even a web interface. Awesome.

One caveat: I got the iPad version (HD they called it?) and it is pretty awful and it’s been pulled from the App Store (not sure when – but you can’t get it anymore). There are many things wrong with that version and I suppose it was pulled to settle a lot of that and then release it again. As a back-up you can use the web interface on your iPad and it works very well there.

Wunderlist FTW!

It seems to me that the developers for Wunderlist are extremely active and are already working to fix the iPad application. They are very quick to respond to contacts (I sent an email last night and woke up to a response already) and as you can see below a comment from them too.

They are on the ball and while they have already delivered a wonderful suite of applications and cloud sync, they are pushing on and I think we can expect feature requests to be considered and worked on in a timely fashion. I love this about them too.

Nice applications.

Kaleidoscope for OS X.
A difference application for text, images, and folders. Integrates with many tools. $34.99 for OS X. Would be nice if it integrated with Xcode but I don’t really use version control within Xcode itself – I use Versions. And Kaleidoscope integrates perfectly with it. I might need to pick this up for our team.

Finish for iPhone.
Overcome the clutches of procrastination with Finish, a busy iPhone user’s best friend. Unlike other to-do apps that are “clever” for their own sake, only Finish takes advantage of how you naturally think. Finish gets in your face when you need it, stays out of the way when you don’t, and effortlessly keeps you focused the only thing that matters.

Scanner Pro for iOS.
Turn your phone or new iPad into portable scanners. Scan documents, receipts, and whiteboards. Who hasn’t needed to do this from time to time. Saved as PDF. What makes this interesting is really only the ability to combine “scans” into a single PDF.

It’s a little pricy… wondering if I should roll this out myself. Using OCR technology or something. Probably impossible for converting really terrible scribbles and hand-writing to anything useful.

UIGestureRecognizers – sometimes it’s okay to simply say no.

I’ve been working on a project that was using UIGestureRecognizers – mainly Pan but some others as well. As it turns out sometimes it’s perfectly fine to go old school and use touchesBegan, touchesMoved, and touchesEnded.

You won’t go to developer jail and you won’t be looked at unfairly by other developers during a code review. Use the tools you need without introducing any un-needed seeming simplicity that ends up complicating matters. They are nice when needed but don’t jump to the conclusion that you should always prefer them to the previous solutions.

A little bit of a rant and also a revelation.

Temple Run 2

Is it a lot of fun? Yes. More fun than the original and Brave. It’s a little more creative… A little better than the Pitfall one that is out there. Run out and get it. This post is short because this iPad mini keyboard isn’t my favorite thing in the world. The space bar is quite difficult to trigger for some reason.

Development vs. Design

We have all been there. We envision a widget or a piece of UI and how it might work. It takes all of a few moments in time. So you jump into header and implementation files, coding and stubbing. Refactoring and turning methods into Classes. You leave comments to remind you to do some less than fun things. Then the music in your headphones starts to confuse you.

You drop the cans, push back from your monitors and mutter to yourself, “what the fuck am I doing?” You feel confused, wondering if what you wrote makes sense in context of the overall problem-solution game. Have you painted yourself into a corner? Are you on the right path and really close to the end game?
Continue reading

iOS landscape mode & positioning elements

This is a documented note to myself and to others who might be pulling their hair out a little when working with a landscape orientation in iOS.

I was working in landscape mode (only) and I was positioning things around based on frame origins, and I was finding my placements were off. To get into landscape, auto resizing masking is applied to the view(s). However in viewDidLoad is too early to count on anything to base calculations upon. Use viewDidAppear instead. viewWillAppear is also too soon. I forgot about this method since I almost never seem to need it and it’s not part of the default Xcode template for a view controller. I spent nearly an hour wondering what the hell was going on – simple math right? How can it be off like that?

My doh moment for this Friday. I can’t stand when I miss things like this and just piddle coding time away chasing something so rudimentary.