instead of Taller iPhones

the internet seems to have gotten itself excited over an iPhone with a 640×1152 (320 x 576 logical) screen, citing that they could just make it taller and chip away at the “wasted space” above and below the screen.

Does anyone who makes these mockups actually print and try to hold their abominations? The reason the iPhone has so much “wasted space” (and the iPad for that matter) in the bezel isn’t because of any technical limitation they’ve only recently been able to solve. It’s because you need somewhere not-on-the-screen to put your thumbs when you two-hand the thing. So while a wider screen would make the iPhone more “cinematic” in widescreen (who watches full length video on their iPhone?) you’d need to bundle a kickstand/a-frame with it in oder to watch it without your thumb covering it. It’s not going to happen.

Practical points aside, let’s talk about those numbers. 1152. 1152? Do you know where that number was arbitrated from? It’s how much more screen it needed for Apple PR to round to 4″. It’s wider than 16:9 (1137.78 – no it’s not even) and the nice round 1024 for 16:10. Now 1024 isn’t tall enough for the alleged one-more-row of apps on the home screen. If we use the exact same icon size and spacing the bottom most pixel is 1136, exactly the estimated 16:9 dimensions. If we’re going to pull numbers out of our asses, let’s at least go with this one, but I don’t think Apple needs to embiggen a screen to advertise as “Still not 720p!”

In other new-device news…

If Apple were to make a 7.8″ iPad, they would using a larger XGA sized cut of the 3Gs screen. Might we also see a 960×640 cut of an iPad 3 screen for a 4″ iPad Touch as our new $199 iOS device, dropping the 3.5″ Touch to an impulse buying $99? Might all three of these include the half-broken “dual” A5 found in the A5 Apple TV? Remember, Apple had 12″ and 14″ iBooks that were BOTH 1024×768, unlike the PowerBooks where more inches also got you more pixels. I actually miss the days where Apple had lower dpi models I could recommend to my friends with heavier prescriptions.

A “Full” product line from $99 to $499 (and then some) would really hurt whatever Google thinks it has planned for the Nexus Tablet (or whatever it debuts as). Sure with a “proper” 720p or 1080p they’ll be better for watching video but if you think that’s what iOS devices (Apple TV included) are all about you’re sadly mistaken and you have been since 2007.

DRM

With no controversies currently going on, it may seem odd to talk about DRM, but I thought of something after I walked by a poster for the Steve Jobs biography with a QR Code on it. Like 100% of the population, I don’t read QR codes. But let’s pretend people actually did take out their smartphones and checked them out. Where should this one take you? The generic press page for the book? A mobile optimized version? Directly to iBooks if it detects iOS?

While apps have their platforms, content doesn’t. You have to pick a store and then get locked into whatever the DRM demands of you.

While getting annoyed by this, I thought of something. If these stores didn’t have DRM, we probably would never have gotten the ability to redownload purchases. Before we gained redownload for TV shows and Movies on iTunes, I was considering getting a RAID 5 array or some sort to hold/back up my content. Now I don’t have to and I recently got back a few hundred gigs. Streaming HD doesn’t always work in realtime (I have 25Mbit down from FiOS) so I pre-download content before watching (like when you “Rent”) and manually clean the drive when I’m done.

If those m4v’s were DRM free but couldn’t be redownloaded, I would have to have had to buy that array by now.

The Ballmer Peak

It’s definitely real and a very fine art. I’m not sure it can be mapped to exact BAC but the shape of graph is certainly true. A percentage of my code is written under the Ballmer peak and it usually doesn’t suck. Although, while the Ballmer Peak gives you skills through concentration, it should only be executed once the creative process is complete and all you have to do is implement.

Side Note: Drinking with other programmers yields some interesting conversations

Remembering to Reboot

After a long time of using OS X (all versions) and Windows 7, you start to think that problems require solutions. If Apache isn’t processing PHP it’s because you didn’t turn it on. If you’re getting mysql access errors it’s because you have to fix permissions. That kind of stuff. So when my XP Virtual Machine told me my credentials for the SMB share from my Mac were wrong I started investigating. I double checked permissions. I changed the password. Nothing. So I restarted the Virtual Machine and the file sharing service and they worked.

From a developers point of view, needing to restart anything means something got into an invalid state somehow and it’s probably worth investigating. What’s nice about the way Unix in general works is that everything is a restartable service. So when something breaks you only need to restart that and the machine stays up. When I restarted the file sharing service on that Mac it didn’t stop the iTunes episode I was watching or my Safari downloads or SFTP uploads.

The heavily sandboxed way in which iOS works means users probably NEVER restart their devices. I’ve never had any problem that could be fixed by rebooting. These solid unix based devices lead me to do silly things like not reboot Windows XP before continuing to troubleshoot.

‘Dinosaur’ as an Insult

As my research into these creatures continues I’ve been learning a lot. As I do, I’m increasingly bothered by people calling outdated individuals or devices “Dinosaurs”, insisting that given the choice of evolve or perish the dinosaurs chose the latter. This simply is not the case.

First; dinosaurs lasted for 150 million years. We’re not even close to that. During those 150 million years the dinosaurs evolved from a single small bipedal carnivore into giant four-legged sauropods, tyrannosaurus, and raptors. Dinosaurs knew plenty about evolving.

Second, their extinction is still actually a mystery. While the K-T impact definitely did occur and have a worldwide effect, there are no Pompeii-esque finds or any finds at all for that matter that coincide with the timing of the impact.

Third, whatever “killed the dinosaurs” didn’t exclusively kill dinosaurs or all of the dinosaurs. It killed all the large creatures. Descendants of velociraptor survived to become birds.

Although not as catchy, I’d like to point out that sharks, scorpions, turtles and alligator-like creatures are indeed “living fossils” that didn’t evolve any adaptations except to the atmosphere. They didn’t evolve but they didn’t go extinct either. If it ain’t broke, don’t fix it?

In light of today’s tragic announcements from RIM, I’m sure a lot of people are calling them Dinosaurs who didn’t evolve after being dealt an asteroid by Apple and Google. It’s not like that at all. RIM is more like neanderthals being wiped out by the much smarter homo sapiens (neanderthals are not our cousins and are in fact evolutionary dead ends).

***

My belief regarding dinosaur extinction is that biodiversity in the late cretaceous was simply too low with too many large animals.

UIRange

So I spent the afternoon writing this (obviously the final should be much prettier). It feels like a control that should exist by default. I’d like to suggest the following enhancements to UISlider:

  • Int Number of Values (“Thumbs”)
  • Array Values
  • Float Padding between values
  • BOOL popup value

As you can probably guess, it’s going to be used for adjusting image levels. Now off to drawing the histograms…

Whining about Deprecations

My title probably expresses my opinion here. Since day one I’ve always been against using third-party anything; this includes JQueery and everything else that’s supposed to make your development “easier”. Historically, when working with Apple’s platforms, using in-between tools just means that something will break. It’s a matter of when, not a matter of if. Steve Jobs said it best when describing cross-platform app development tools. I don’t have the quote but I’ll paraphrase: when you use these things, you have to wait for them to implement new features. Case and point, anyone using Adobe Tools has to wait for Adobe to support the retina iPad. The private developer forums on Apple’s website have countless threads asking if they can use iAd if they’re developing with Adobe’s Flash tools.

If you’re a second-hand developer (you write apps for fees rather than selling yourself) your customer doesn’t know about UDIDs or how Flurry works, and that’s their problem if they insist you use Flurry analytics. (Not to pick on Flurry because they did make an update). If your client gets updates from you then you should’ve been proactive about getting them a binary without UDID references 6 months ago when Apple announced the deprecation. Don’t claim you expected to have until iOS 6 came out. UDID’s have always been controversial. None of this is surprising. If anything, the 6 months you had was a blessing.

It’s not like you have to dig through release notes for these deprecations. When you compile and run the compiler or console will tell you when you’ve used something deprecated. iOS 5 was seeded in June. If 9 months is long enough to make a baby it’s long enough to fix deprecations. I feel guilty when I don’t have quarterly updates. If your apps aren’t that nimble they’re probably app store clutter.

Stop whining.

The Blood Problem

How do I let you make dinosaurs devouring each other and keep my 4+ rating?

One thing that lets me get away with a lot is that you have to assemble the parts of the violence.

The Gallimimus’ getting eaten are separate bloodless stamps. In fact, if not for this image, I wouldn’t be surprised if you didn’t know what to do with that weird sideways gallimimus stamp. Although this particular T-Rex stamp is obviously bent over for eating, most aggressive stamps just look like an angry dinosaur standing its ground when not placed in contact with one another. That Spinosaurus could just be walking and roaring. Even the raptor stamps (not pictured) just look angry if you don’t place their claws in anyone.

The only rub is that Apple require all screenshots to be 4+, and although there is everything right with two dinosaurs eating each other, my App Store screen shots will probably just have to be dinosaurs grazing and yelling at each other.

I know we need stamps of the partially eaten vanquished, but even Walking with Dinosaurs had to make a “kid friendly” version. I’ve been walking a lot of CGI dinosaurs lately. Like the makers of Jurassic Park III I have to find that balance of fact and public perception necessary to make the app work. No one wants a 2 hour movie about a T-Rex that’s a scavenger and a good mother.

Bad Tablet Apps

Cocoa Touch has a beautiful built-in function.

UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad

It’s the reason Universal apps behave so well and similar but different on different devices. If you use Apple’s default Universal template it’s the first thing your app does, then it picks which view controller to load and display and your whole development process involves two completely distinct and disjoint view controllers: one for iPhones and one for iPads. If you’ve been developing Universal apps since that beta back in early 2010 then you might do it my way: a single master view controller (based off of the iPhone template) and iPad vs iPhone code when applicable. This is OK for apps craving the extra real estate. iDecorate is just a big canvas. Its only if_iPad code is for governing the popovers that are instead displayed fullscreen on iPhone. This is great for canvas based apps, but it doesn’t work for list based apps.

The official Twitter, FaceBook, Photos, and Mail applications for iOS are examples of the first approach, where a single binary makes a huge switching decision up front and displays one of two very different user interfaces. Android is full of list based apps (including FaceBook and Twitter) that just get wider and longer on Android tablets. They look quite laughable in landscape mode but suck in portrait too.

Now, the point of my post: if you use the metro templates in Visual Studio your apps are supposed to “write once, run anywhere” where anywhere is Windows Phone, Windows 8 Arm tablets, and Windows 8 x64 on a 80″ Touch Wall. Yes you have control over which elements stretch and which elements lock, like you do on Android and iOS, but the variety of screen sizes (and DPIs) is so different I imagine the same pundits (including Cook himself) will again point out how much better iPad apps work, and they’ll be right.

That being said, my app interfaces are diverging more and more everyday. I’m having trouble fitting my vision for Auto Adjust 4 to the iPhone screen and won’t ship until I love it. iDecorate is also due for a 4.0 overhaul that needs to make better use of holding the device in the orientation that your canvas isn’t.

iDecorate Progress

Click on that to see it at 3840 x 2560.

The Rex and Spinosaurus in the foreground are unscaled 2048×2048 renders and it looks like I should use that resolution rather than 1024×1024 like I had intended (iDecorate’s classic stamps are 512×512). Remember, I started this project for iPad 1 and iPhone 3G. That was a lot of pixels for things to drive, and 512×512 was bigger than non-retina iPhones. In fact, I may need to still use that resolution on iPad 1, 3Gs, and iPod Touch. I still have a lot more testing ahead of me. The above wasn’t even done on a device I just layered everything in Photoshop (which had to be done at 50% because my cinema displays are only 1920 x 1200).

You may be wondering why I chose 1920×1280 (3840×2560 is just double) rather than something based off of XGA. iDecorate was always intended to produce USABLE images. 1920×1280 is 1080p expanded vertically to fit just right on a 3:2 iPhone in landscape. It also fits on a 24″ Cinema Display without scaling. The minor scaling from 1920 x 1280 to 2304 x 1536 on an iPad 3 is actually indistinguishable (go ahead, open the current iDecorate and tell me it looks blurry) so I could just leave things alone, and I will for the most part. I don’t intend to re-render any of the old backgrounds. Some of them took several hours at the old resolution I know you’d rather have new content.

iDecorate has been free since just after the holidays and that’s how it’s going to stay. The Dinosaur expansion (more accurately, the ‘late cretaceous’ expansion) will be $0.99 until late this summer when it doubles in size and price. The first release has over 100 stamps across 10 species all from the late cretaceous. This was intentional, not just because cretaceous dinosaurs are more awesome or well known but for the sake of consistency with such a small number of species to play with. All drawings made with this collection would make enough sense and should prevent Tyrannosaurs dining on Stegosaurides. Incidentally, your Jurassic favorites like Stegosaurus and the giant Sauropods will be in the second half of the expansion.

Oh, and sorry about the low fidelity Gallimimus texture, but he’s mostly a prop (food). I mean seriously, this thing’s defense against predators is run. I doubt you’re going to build a scene based on a live one that isn’t in peril.