It’s crap like this Huff Po

Actual Article Link: Silicon Valley Homeless Feel The Grip Of Recession’s Long Reach

Apple is mentioned once, mid-article, alongside Google, in the sentence pointing out what companies are in Silicon Valley (duh).

This is the same crap as the foxconn stuff. This story isn’t about Apple, but being the most valuable company in the world (and closing in on world History) it’s perfect link-bait. This is what’s wrong with ad-based (ie, click based) revenue.

Why we won’t Shut Up about 8″ iPads

Because such a device isn’t DOA, just competitors’ devices are, but those are also dead at 9.7″

If we think of the iPad Mini more like the 11″ MacBook Air and less like the iPod Mini we find there is, in fact, demand for something that’s exactly the same as something we already have, just smaller.

Plain and Simple: an 8″ device could fit in a coat or jacket pocket. Kindles, primarily as e-readers, excel because of this fact. You can only fit and iPad in a purse if you plan around it and for men unless you want to hold it all day you need a bag. Men’s jackets on the other hand, even the lightest windbreaker, have fairly large pockets. Over the years my pockets have had such ridiculous items as a 20oz Pepsi bottle, girl scout cookie box, enclosures for 3.5″ HDDs, portable external DVD drives, and, the Kindle Fire.

***

The new rumor that appeared while I was asleep (OK not asleep, but awake not refreshing MacRumors) has one appearing not next week but Q3-Q4ish. As a reminder, WWDC occurs Q3-Q4ish (Apple’s Fiscal Calendar ends in September). While that’s interesting in and of itself, there’s also the mention of price.

  • XGB iPad Mini $249-$299
  • 8GB iPad 2 $349-$399

This somewhat contradicts my earlier guesses of a 16GB WiFi iPad 2 at $399 and 16GB iPad Mini at $299. Being overly optimistic, I’d like to revise

  • 8GB iPad Mini WiFi $249
  • 16GB iPad Mini WiFi $949
  • 8GB iPad Mini 3G $299
  • 8GB iPad 2 WiFi $349
  • 8GB iPad 2 3G $399
  • 16GB iPad 2 WiFi $399

I expect apple won’t go both routes (2 sizes, with and without 3G) and there will only be on option, either size or 3G. My heart of hoping for 3G. An 8″ iPad would be ultra mobile, so you might as well be able to enjoy browsing on the go.

Of course, Digitimes is probably just grasping for attention. The potential problem with a cheap iPad Mini is if its low price causes it to overtake the full-sized iPads. The reason competitor’s 7″ offerings aren’t doing so is because they’re terrible. Apple won’t make something terrible, but perhaps they’ll intentionally cripple it feature-wise so people understand the tradeoff. Off the top of my head:

  • No or underwhelming 720p/VGA camera pair
  • 8GB, no other size options
  • GSM/CDMA 3G, no LTE, still a premium add on
  • Not Retina XGA, maybe not even IPS
  • Dare I suggest, a single core A4

And those are the pissing contest consumer oriented features (the ones competitors will exceed and thus claim to be better). Here’s what they might do under the hood. (I’m basing these on the iPod Touch 4 vs iPad 2 and iPhone 4)

  • iPad 2 SOC at best (2x1GHz, 512MB RAM)
  • iPad 1 SOC possible (1GHz, 256MB or 512MB RAM)
  • no 5GHz N WiFi (just 2.4GHz N)
  • no video mirroring if no A5/A5X
  • Max 720p external resolution if no A5/A5X

If we assume we get iPod Touch 4 specs (but maybe an IPS screen PLEASE) we already have a list of apps that won’t work, such as Photoshop Touch and iMovie. But that might be Apple’s method of preventing cannibalization. Introduce it as an auxiliary device like the MacBook Air so people on a budget will instead get the new cheaper iPad 2X (the 8GB budget version).

As a developer, I have no problem supporting iPad 1 specs. I know how to “progressively enhance” features based on hardware/OS version. The only reason supporting iOS 3.1.3 and first generation devices is so difficult is because Apple makes you dive into the uglier areas of Xcode to do it (projects default to requiring iOS 4 and armv7). As far as I’m concerned, the more devices means more potential users.

I wonder how iTunes rankings work

I have a script that watches my iTunes rankings for me. Auto Adjust is always in the top paid iPad photography apps and usually the top paid iPhone photography apps. While the iPhone ranking is always lower (there are way more iPhones and way more iPhone only apps) they don’t always move in the same direction. I’ve found the following bizarre trend to be true.

When Auto Adjust is top 50-100 iPad, it’s somewhere in the 300’s for iPhone.

When Auto Adjust is in the lower 200s for iPhone, it’s in the lower 100s for iPad.

I suspect this has something to do with the “rolling” nature of the rankings – they’re a function of how many times each app was purchased in the last (probably) 24hrs and each time an app is purchased they shuffle a bit. The photography category is low traffic (compared to games for example, which needs its own app store at this point) so I imagine this increases the volatility of the rankings.

The most bizarre disparity I’ve seen is iPad:87 iPhone:400+ (the rankings only go up to 400).

Stealing your Photos

Apple Loophole Gives Developers Access to Photos

Fun Fact, Photoshop Touch does this to open your camera roll. Ordinarily, the asset library APIs can only see albums.

The only other way to get at the camera roll was to use the official UIPopover from Apple. Currently my apps do this. I’ve been investigating writing my own controller because the popover is limited. Now it seems like Apple is going to fix this and there will be no possible alternative way to load photos from the camera roll. Maybe this is OK for some apps, but not for mine.

My only hope is that Apple enhances the “blessed” method of getting photos and provides more delegate methods.

Photoshop Touch

Photoshop touch has a lot of cool features and decent responsiveness, or, at least it would if not for two very suspicious limitations: Requires iPad 2 and a maximum output size of 1600×1600.

Umm… in 2002 Photoshop 7 on my 500 MHz G3 iMac with 256MB of RAM and a 1024×768 resolution did NOT have a maximum image size of 1600×1600 nor did it require a dual core 1GHz processor or 512MB of RAM. Let’s go over what might have gone wrong.

Let’s start with the fact that it’s an AIR app. That means it’s written with Adobe’s APIs rather than Apple’s. While this makes cross platform porting possible (for all 17 people that have a capable Android Tablet) it has a lot of very negative side effects.

First, since you’re not talking directly to the compiler, you can’t use pointers. Your indirect AIR objects probably use a lot of pointers but you can’t directly. When you lose this manual memory control overhead starts to add up quickly. How quickly? Well, in Auto Adjust, Normalize, and iDecorate, a 12MP image takes up 12MB x 4 colors (alpha is supported) = 48MB of RAM. A 1600×1600 image takes up 7.68MB of RAM in RGB, 10MB if alpha (transparency) data is included. That sounds small right? Why would Adobe have to make such a tradeoff?

On first and second generation iOS devices, you only have 128MB of RAM, which the system takes a lot of. You have about 40MB for you app to work with before you just segfault and crash. So 10MB for 1600×1600 plus 20MB for overhead is the artificial limit I set for Auto Adjust when running on these devices. “That’s trivializing it. Your apps just hold a single image in RAM. Photoshop Touch has layers and shit”.

That iMac of mine was also used to edit gigapixel images. WTF is a gigapixel? Back in the day, the preferred method for rotoscoping (frame by frame editing) was to export a “filmstrip” from Premiere. This would be a single image file with each individual 720×480 frame on it. This added up quickly and saving changes involved a minute (or longer) progress bar. How could this be possible? The machine didn’t have 3GB of RAM to store the image.

Back in the day, developers used to do this thing called “paging”. We knew we couldn’t be RAM hogs so we’d write routines that would look at say 8MB of a file at a time. If we needed to look at 8 more MB but the previous 8 weren’t saved yet, we’d write that to a temp file on the disk. For the Pro Video veterans, this is what the scratch disk is. A tragic irony of Adobe not using scratch space (or not well it would seem) is that the iPad’s solid state storage is faster than hard drives were back then, so wait times wouldn’t even be so bad.

Why didn’t Adobe use this technique in Photoshop Touch? Well, first let me go over why I didn’t bother. My apps can process any image the device’s camera is capable of taking. The iPhone 3G took 1600×1200 pictures so there wasn’t much need to finagle support for the edge-case scenario of something using larger images. It was almost impossible to even load them onto the device. To this day, to get a very large image onto an iOS device you have to use Mail or Mobile Safari. Synching with iTunes will down sample to some degree.

But Photoshop Touch DOES receive very large images. It’s really inexcusable to not support them, especially not supporting them in a $9.99 app. So to recap, the reason they aren’t is because of a RAM limitation, for which a solution has existed for 20 years, which they chose not to implement, possibly because writing an AIR app (rather than a real app) would make that impossible. I bet if iPad 3 continues to have 512MB of RAM Adobe won’t raise this limit and will have an app that can’t produce images as big as the display.

Building Normalize

Download Normalize

Instagram certainly isn’t new, and it’s actually an app I enjoy, but every now and again, I encounter a picture in the “real world” (AKA, any site outside of Instragram) where someone decides it’s a good idea to use it when trying to take a picture of something they’re legitimately trying to show. Something had to be done. And, as usual, simply running it through photoshop’s Auto Levels or Apple’s magic wand did nothing (or nothing of value). So, I wrote Normalize.

“Wait, isn’t that practically the same reason you wrote Auto Adjust? Because Auto Contrast doesn’t always work? Why’d you make two apps you greedy bastard!”

Originally I didn’t want to, but I don’t want to compromise either. Auto Adjust is literally an app that lets you adjust an image or let an algorithm set the adjustments for you. Everything the “Auto” algorithm does is shown to you. If the Auto algorithm screws up (or didn’t exist) Auto Adjust is still a perfectly usable app because it has all the manual controls.

The new algorithm for Normalize has four times as many variables. Adding sliders for those started to get too messy so I instead decided to go the control-less “Magic” route. The only problem with this is that it would dumb down Auto Adjust. I was burned by Apple when they did this with Final Cut Pro X. I’m not going to do it to my users.

With great power comes great complexity.

Does that mean Auto Adjust won’t gain the new algorithm or Normalize won’t ever have manual controls? No, but they are two apps with different aims. Whether they grow together or not is not being planned. Each will gain the features I think it needs. So what are the differences as of Auto Adjust 3.3 and Normalize 1.0?

Auto Adjust

  • VGA/HDMI/AirPlay Support
  • Manual levels controls
  • Manual color balancing
  • Manual saturation
  • Legacy Support (iOS 3.1.3 on Original iPhone, iPod Touch, 4.2 on iPhone 3G)
  • Optimized for very large images (5MP ,8MP, even 12MP)
  • Optimized for raw photos taken with iPhones
  • Intended for YOUR photos; typical import > adjust > export workflow

Normalize

  • Advanced Automatic Color Correction
  • Optimized for smaller (3MP) images. (All image sizes supported however)
  • Optimized for photos with filters applied or raw photos
  • Intended for others’ photos; more “disposable” feel; saving/exporting not necessarily part of workflow (although obviously implemented).

Here’s how it works:

Because I can’t put this in the iTunes description: the top “Other App” is the Magic Wand in Apple’s supplied Photos app, and the bottom is desktop photoshop’s “Auto Tone”. It’s worth noting they both do something, something different in fact, but both fail. Here’s why:

The obviously-intentionally-screwed-up-by-Instagram blue channel has some noise in it that confuses the crap out of Photoshop’s Auto Levels and Apple’s Magic Wand. Both normalize images by crawling in from the edges to the first non-zero value in the histogram. Mathematically, it’s the right thing to do, but a human would obviously ignore the noise.

It’s tempting to blame it on the black border. If we crop that we get a better histogram:

But the image still isn’t right. The whitepoint is still wrong (still too bluish – though maybe hard to see if not using a Cinema Display – look at the background shadows).

Without inadvertently open-sourcing my algorithm, I can say the secret lies with doing what a human would. Here’s the original, uncropped, pre-Instagram.

And the reconstruction

There are limitations of course. Since we don’t have floating point images without bounds, once a pixel or region is darkened beyond #000000 or whitened beyond #FFFFFF that information is essentially erased, and all the manipulation you do in Photoshop isn’t going to bring it back unless you start drawing.

You can see the original has more detail available in the shadows and on the black locomotive. The sky has also been over lightened so attempting to restore its color merely through level adjustment starts to turn other things blue. Since the original is also a little underexposed and not pre-balanced there are additional discrepancies. Still, it’s hard to argue that the reconstructed image isn’t clearer than the Instagram’d version.

Download Normalize

Mini

The “Mini” moniker carries a lot with it. Remember this? (circa 2004)

  • 20GB iPod $299
  • 4GB iPod Mini $249

Yet the mini sold phenomenally. At Apple, the term “mini” means paying for it to be smaller and dealing with the lack of specs that comes with it. So even if an 8″ iPad had iPad 2 specs, it could sell well at $399, or $299 with iPad 1 specs.

It’s impossible to discuss smaller tablets without invoking Steve Jobs’ quote that “they’d need to include sandpaper…” or whatever because UI elements would be too small (in actuality they would be exactly iPhone sized). Releasing this device would be Tim Cook’s public opportunity to say he doesn’t live by “What Would Steve Jobs Do” and Apple is HIS company now and he’s going to ruthlessly attack Amazon before they have the chance to be a threat.

$299 for essentially an iPad 1, but 8″, and cameras. Sure the Fire is $199 and dual core, but people will pay the so called “Apple Tax” for a device that doesn’t suck or require software updates out of the box.

Oh and one more thing; the iPad Mini will be as thin and “sexy” as the iPad 2. If you ever see a Kindle Fire without a case it has all the sex appeal of the PowerBook Duo.

Will developers need to support/test on a 7 or 8″ iPad

That depends on the specs, but not as simple as the screen resolution. The common techie might assume that just because the screen might be the same (although tighter) XGA as current iPads that everything will just work. Here’s why we should all test anyway:

Elements will be iPhone sized, not iPad sized. While this shouldn’t be a problem if you’re using mostly Apple’s UI widgets, you may have some problems with your own controls.

It may not be Retina, so some text may lack clarity and need a size increase.

This is of course assuming all other things are equal. If Apple really wants to eat Amazon’s lunch on price, the rest of the hardware will be iPod Touch 4 hardware (similar to iPad 1 hardware). An A4, not A5 or A6; 256MB of RAM, not 512MB; FaceTime quality cameras and no better, perhaps not even an IPS screen (the iPod Touch lacks the 180° viewing angle of the iPhone 4). It’s worth noting that the iPad 1 does behave much better than the Kindle Fire, so these specs are no slouch.

While we’re predicting things, I might as well predict price points and product lineup.

  • $199
    • iPod Touch 8GB
  • $299
    • iPad Mini WiFi 16GB
    • iPod Touch 32GB
  • $399
    • iPad 2 WiFi 16GB
    • iPod Touch 64GB
  • $499
    • iPad 3 WiFi 16GB
  • $599
    • iPad 3 WiFi 64GB
  • $699
    • iPad 3 WiFi 128GB

I do not expect 3G (even as options) on the iPad Mini or iPad 2. You also may have noticed the iPad 3 staying at 16GB for the entry level model but the other two going up in capacity. My theory is they will employ the same practice they do on the iPod Touch (which is 8, 32, 64). The additional space doesn’t cost them nearly $100 but on the other hand they need to make that entry price point.

To answer your next question: Yes, I will be buying both an iPad 3 and an iPad Mini and frantically spending the first 48 hours testing my apps. Should you buy an iPad Mini for your spouse/kids? If it hits the $299 price point, remember that’s how much iPods used to cost when Apple had 70% of that market.

Still not “porting”

USA Today app has nearly twice as many downloads on TouchPad than all Android tablets combined.

While the article doesn’t include the Kindle Fire as an Android tablet but rather a separate entry, the point to make is that these “three” platforms each have less than 10% of the share the iPad has for the same FREE app. I emphasize FREE because we’ve already seen the data that says iOS users are more likely to pay for stuff so a free app is perhaps a  more fair/level comparison.

I’ve written a few times about my adventures in supporting older iOS versions and devices. Recently I’ve been working on something that may just work on iOS 3, and in having to test everything that goes with that, I’ve had the following plugged into my Mac at once:

  • iPod 1 @ 3.1.3
  • iPod 4 @ 4.3
  • iPod 4 @ 5
  • iPhone 3G @ 4.2
  • iPhone 3GS @ 5
  • iPhone 4 @ 5

Excluding the iPod 4 with iOS 4.3, all the devices are sporting their “Maximum” OS. Why do I have to do all this? iOS versions change a lot more than they appear to sometimes. iOS 3, 4, and 5 are all quite different. One area that recently surprised me was that it’s an iOS 5 thing to be able to have a background color to a UITextField. iOS 3 and 4 bizarrely use pattern images. This might be a bug as I swear I used a clear UITextField in Auto Adjust 2 and that ran on iOS 3.0, although that was in a UIToolBar and putting elements inside those don’t always have the same rules.

The reason I have multiple devices to test the “same” OS is because they differ greatly in hardware. The 3Gs has the same RAM as the iPod 4, but the iPod has the retina display, and an A4. The iPhone 4 has the retina display and A4, but also twice the RAM. These little things matter a lot in image heavy apps like mine where it’s very easy to use up all of a device’s RAM or you want to use hardware acceleration.

So to deploy something for iOS, I’m testing on 6 handhelds and 2 iPads. Why/how could I possibly devote any time (or money buying devices) to support a platform that may get 10% of the sales I’m getting now. I, like USA Today, would have to already be selling in the millions.

No iOS 3 this time?

So I started a new app, and before I even added any functionality (just writing up all the UI animations) I found a whole mess of things that don’t exist pre iOS 4 and 5. Particularly dismissViewControllerAnimated:(BOOL) completion:^(void)completion. iOS 5 only. Blocks are so incredibly easy to work with that I’m not going back the old ways just for backwards compatibility. Yes this allegedly shortens my potential customer list, but what’s that saying that your apps should be a compelling enough reason to upgrade?

Still, there’s no denying the fun of the challenge. After all, if I succeed I have no excuse for not writing such an app 3 years ago. The only problem is that it’s the same challenge every time… can’t use blocks, can’t hold 5MP, can’t use appearance… it gets a little old. Sometimes it feels more appropriate to just take out features and tell first gen users “you’re lucky you’re getting this, go buy a new one”.