Allen Pike 2014-10-17T17:55:46-07:00 Allen Pike The iPad zombie 2014-10-16T16:25:00-07:00 Allen Pike <p><img style='max-width: 100%' src="/images/2014/a5-cpu.jpg" width="200" /></p> <p>In March 2011, Apple announced the iPad 2. It was an incredible leap forward, dramatically thinner and faster than the original iPad. In many ways, the iPad 2 was when the iPad hit its stride. The next year, they launched the wonderful iPad mini, which was in every way an iPad 2, simply in a smaller form factor.</p> <p>Apple still sells the original iPad mini. Today, they announced that not only would they continue to sell it, but cut the price to $249, making it the cheapest iPad ever. If they follow their usual pattern of leaving the iPad line as-is until next fall, the iPad 2’s internals will live on for 4.5 years.</p> <h3 id="app-developers-ie-6">App developers’ IE 6</h3> <p>In 2011, the iPad 2’s 512MB of RAM, non-Retina display, and A5 CPU were impressive. Today, these specifications are frustating for app developers trying to push the boundaries of what mobile devices can do. Worse, customers replace their iPads more slowly than they do their phones, so these old iPads will be in regular use for a very long time. Maintaining support for the A5 while simultaneously trying to take advantage of the iPhone 6S’ A9 CPU is going to hurt.</p> <p>We already see this pain on the App Store, especially with games. There is no mechanism to specify on the App Store which CPU is required for your app. Instead, you get app descriptions that start like this one, from the critically acclaimed game <a href="">BioShock</a>:</p> <blockquote> <p>***NOTE: Compatible with iPad Air, iPad Mini 2, iPad 4, iPhone 5S, iPhone 5C, and iPhone 5 - WILL NOT RUN ON EARLIER DEVICES, INCLUDING: iPad 3, iPad 2, iPad 1, iPad Mini 1, iPhone 4S, iPhone 4, iPhone 3GS, iPod Touch 5, iPod Touch 4, iPod Touch 3***</p> </blockquote> <p>Here is the most recent review of this game on the Canadian App Store, one star:</p> <blockquote> <p>Not Working ★☆☆☆☆</p> <p>I was so excited when I heard that bioshock was finally available for iPod touch. But when I try to play it on my ipod 5 all that I can do is watch the first cut seen at 3 frame per second (literally) then it crashes. So please fix i really want to play bioshock.</p> </blockquote> <p>Neither of these people are having fun.</p> <p>Of course, it’s not all the iPad mini’s fault. Every iPod touch currently on sale also sports the same cutting-edge chip that shipped with the iPhone 4S. It doesn’t require non-retina assets like the iPad mini does, but otherwise it causes all the same problems.</p> <p><img style='max-width: 100%' src="/images/2014/graphics-performance.jpg" /></p> <p>The only thing we can do as developers to disavow support for these devices is require a version of iOS that won’t run on them. Unfortunately, Apple will surely continue support for the A5 in iOS 9. If they do so, we won’t have a mechanism to cut off support for these old iPads mini and iPods touch until iOS 10 has reached wide adoption, likely in early 2017.</p> <p>2017.</p> <p>The team at Apple surely thought long and hard before they made this call. They know that supporting the A5 for another iteration of iOS isn’t going to be fun, but at $249 there will be a lot of people finally getting their first iPad. Still, as a developer it’s frustrating not to be able to specifically target modern devices. For years, pundits have railed against Apple for their cycle of obsolescence. For once, we’re overdue for some.</p> Schrödinger's Shift Key 2014-09-30T03:00:00-07:00 Allen Pike <p>In iOS 7.1, Apple changed the design of the shift key. This was the worst thing to happen in the history of software.</p> <p><img style='max-width: 100%' src="/images/2014/confusing.gif" style="width:340px" /></p> <p>When the shift key is on, it blends in with the letter keys. When it’s off, it blends in with the function keys. Neither state sticks out enough to read as active, especially in a split second.</p> <p>This would only be moderately annoying, except that iOS suddenly engages the shift key in certain circumstances. It’s usually convenient, but if you need to type <em>apike is my username, I am from B.C. and live in Vancouver</em> it’s crazy-making and requires good feedback about what’s happening.</p> <p>Since 7.1, this confusing shift key has been the subject of <a href="">instructional articles</a>, <a href="">mockery</a>, and even an entire web site: <a href=""></a>. A whole OS release later, many of us boneheads still find ourselves wrestling an inscrutable toggle, trying to somehow, somehow type a lower-case letter.</p> <p>Still, I kept my mouth shut since it was clear they would fix such an obvious issue in iOS 8. Which they sort of did, if you count the ability to install custom keyboards. Indeed, all of the iOS 8 custom keyboards I’ve tried, even the dumb ones, have much clearer shift keys than Apple’s.</p> <p>Unfortunately, none of the keyboards I’ve tried so far work quite as well as the default one. Even if I did like one of the custom ones, the system still kicks you to the default keyboard in a situation where shift key state is fairly crucial: entering a masked password.</p> <h2 id="tell-me-something-anything">Tell me something, anything</h2> <p>There have been some proposals on how to fix this. For example, the proposal from Geoff Teehan to adopt Android’s approach of <a href="">changing the keyboard’s keys to lowercase when shift is off</a>. While it would work, the result is jarring and is outside the bounds of Apple’s design aesthetic.</p> <div style="float:right; width: 340px; margin-top: 1em"> <img style='max-width: 100%' src="/images/2014/darkshift.gif" style="float:none" /><br /> <img style='max-width: 100%' src="/images/2014/blue.gif" style="float:none" /><br /> <img style='max-width: 100%' src="/images/2014/jony.gif" style="float:none" /> </div> <p>There is a simpler solution to the problem, which is what they did for iOS’ dark style keyboard: make the shift key’s active state different than any other key on the keyboard. It doesn’t matter <em>how</em> it’s different - as long as the active state is unique, it will be readable.</p> <p>Now, I’m not naïve - this has surely been proposed and dismissed inside Apple. Given how much backlash there was about this issue, there were surely internal advocates of a more clear shift key state within the design team, but they were overruled. That said, with time comes new perspective.</p> <p>So, <a href="">I filed another Radar</a>. Perhaps, with time, they can find it in their hearts to make a change. A change to the shift key - the most important issue of our time.</p> Being bad at things 2014-08-17T03:00:00-07:00 Allen Pike <p>Today, I turned 30. Even at this advanced age, I recently realized something crucial: I’m not too old to learn new things.</p> <p><a href=""><img style='max-width: 100%' src="/images/2014/lessons.png" style="width:220px" /></a></p> <p>As a kid, I was bad at being bad at things. I excelled at certain specific subjects and skills, which made everything else seem like a waste of time. I wasn’t a “natural” at music, art, or sports, so I set them aside. Malcolm Gladwell claims we need 10,000 hours to master something, and nobody’s got time for that. I didn’t even have the attention span to thoughtfully practice something for twenty minutes. Programming was fun, so I programmed. <a href="">Oh, how I programmed</a>.</p> <p>By 20, I felt good at making software. I was still useless at sports, art, and music, but that didn’t concern me - others were well on their way to mastery of those things. I could never catch up to them, their natural talents having been honed since they were children, and I was now hopelessly behind. Luckily, I knew the importance of focus: spreading yourself too thinly just leads to doing many things poorly. I would instead do one thing well, and come to accept that as an adult, I am now too old to learn new things.</p> <p>In the meantime, I’ve learned various programming languages, tools, and a half dozen JavaScript frameworks. With this mindset, though, it’s always felt like work. I wasn’t “naturally” good at any of them, and the more different a new framework was from what I already knew, the more burdensome it felt to learn. I was happy enough to learn from examples and by doing, but sitting and reading pages and pages of docs felt like drudgery. Ten years in to having fun programming, I’d gotten good at learning by doing, but bad at learning intentionally. I just want to make great software exist. Can’t I just, like, type and have it be awesome?</p> <p>It seems I’m not the only programmer to <a href="">get stuck in this rut</a>. Programmers usually enjoy learning their first few tools, but if we’re not learning to learn, we can get stuck in our ways. Before long, we’re the crazy old author who still uses a typewriter, damn it. Even in my 20s, I already was falling into this mindset.</p> <h3 id="the-canadian-dream">The Canadian Dream</h3> <p>Three years ago, I was having lunch with some of my friends from Nitobi. That day, <a href="">Steve</a> was pitching an idea that was clearly crazy: he wanted to start a hockey team.</p> <p>Now, for your average group of Canadian dudes, starting a hockey team is a run of the mill thing. Hunt a moose, drink some syrup, start a hockey team. All in a day’s work. However, we were all programmers. Further, few of us had ever even played ice hockey. One of the proposed team members grew up in Algeria - which is very cool, but not the kind of cool that leads to ice rinks. The entire thing was crazy: we’re adults, and “everybody else” has been playing for years, if not decades.</p> <p>I rolled my eyes and issued a challenge. “I tell you what. If you actually start a hockey team comprised of programmers, I’ll join your supposed hockey team.”</p> <p><img style='max-width: 100%' src="/images/2014/timbits.jpg" style="width:250px" /></p> <p>Next thing you know, I’m learning how to skate. As an assistant captain of a hockey team.</p> <p>I’d never seriously played a team sport in my life, and so I was resigned to the idea that learning would be frustrating. Instead, it was damn fun. The low expectations I had for myself let me enjoy just being terrible, and building from there. As we all know, the only way to get good at something is to start out terrible and work hard, very hard, until one day you’re only kinda bad.</p> <h3 id="learning-new-tricks">Learning new tricks</h3> <p>Over time, the skills I was learning in hockey transferred to other work I was doing. I got better at team communication, ignoring temporary discomfort, and spatial awareness. My general “stick-with-it-ness” improved, helping me grind through difficult tasks that needed to get done.</p> <p>Recently I happened to go through some of my old schoolwork, and I was surprised to see how little of my learning at a young age was natural talent, as I’d thought it was, and how much was just repetition and motivation. My natural talents, it seems, were mostly illusions created by having practiced something.</p> <p><a href=""><img style='max-width: 100%' src="/images/2014/hyperbole-anything.png" style="width:250px" /></a></p> <p>With my newfound power of enjoying being bad at things, my hobbies have flourished. I jumped in to learning guitar, writing regularly, singing, and podcasting. While on the surface these hobbies seem like distractions, they’ve all had positive effects on my other work and hobbies. I’m finally learning how to practice.</p> <p>This week, inspired by the <a href="">Full Indie Summit</a>, I started to learn how to draw. And man, I’m bad. I’m so bad. But unlike 20 year old Allen, 30 year old Allen can have fun anyway. At least, as long as I’m slowly getting better. Perhaps, after a few years of hard work, I’ll be a natural.</p> <p>So, today, I’ve stopped feeling too old to learn new things. Decades from now I may actually get too old. In the meantime, I’m going to go around being bad at things. Believe it or not, it’s a lot of fun.</p>