CINXE.COM
inessential: weblog
<!DOCTYPE html> <html> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("http://inessential.com:80/","20160403000629","https://web.archive.org/","web","/_static/", "1459641989"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <title>inessential: weblog</title> <meta name="MSSmartTagsPreventParsing" content="true"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width"/> <style type="text/css" media="all">@import "https://web.archive.org/web/20160403000629cs_/http://inessential.com/styles/styleSheet.css";</style> <script type="text/javascript"> </script> <!-- FOUC hack: http://www.bluerobot.com/web/css/fouc.asp --> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://web.archive.org/web/20160403000629/http://inessential.com/xml/rss.xml"/> </head> <body> <div id="banner"><div id="innerbanner"><span id="biglink"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/"><img src="https://web.archive.org/web/20160403000629im_/http://inessential.com/images/inessential_logo@2x.png" height="57" width="263" alt="inessential.com"/></a></span> <span id="bigbyline">by Brent Simmons</span></div> </div> <div id="content"> <div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/04/01/uikit_for_macs">On UIKit for Macs</a></h3> <div class="weblogPostBody"><p>Every time it comes up that <a href="https://web.archive.org/web/20160403000629/https://medium.com/swlh/macos-it-s-time-to-take-the-next-step-ee7871ccd3c7#.vdfka9e50">Macs should support some sort of extended UIKit</a> rather than AppKit, I think about all the differences between Macs and iOS devices.</p> <p>On iOS you don’t have to deal with multiple, resizable, movable windows open at the time. Or with being open but not frontmost. Or with a window moving between screens with different resolutions.</p> <p>You don’t have menus (for the most part), and I’d bet most iOS developers don’t have to think about the responder chain much, or about enabling and disabling user interface items.</p> <p>There’s no AppleScript support.</p> <p>And sandboxing is a <em>whole other thing</em> on Macs. Etc.</p> <p style="text-align:center">* * *</p> <p>There are plenty the two platforms have in common — and, indeed, we use some of the same frameworks: Foundation and Core Data, for instance. It’s already true that an app can share its under-the-hood code between Mac and iOS. You can even share some UI code via Quartz and Core Animation.</p> <p>However, there are areas where AppKit and UIKit have the same things but with slightly different APIs: tables, for instance, are similar but different between the two platforms. NSView (Mac) and UIView (iOS) are nearly the same, but aren’t actually the same.</p> <p>And there are things Macs don’t have at all — navigation controllers, for instance, since they don’t make sense in a context where you can just show the hierarchy via multiple panes.</p> <p style="text-align:center">* * *</p> <p>Were Macs to get some form of UIKit, it would have to be extended with all the things Macs need. Let’s assume we’ll still have multiple, resizable, movable windows; we’ll still have a menubar; we’ll still have AppleScript and Services and similar.</p> <p>Anybody bringing an iOS app to the Mac is going to have to learn those things and handle them. This is a much bigger deal than just getting an iPhone app working on iPads.</p> <p>I think the premise is that the porting job would be quicker if Macs supported things like UITableView — you wouldn’t have to rewrite your table view to make it work on Macs.</p> <p>But I have to wonder. Given that there’s a bunch of stuff you’d have to learn and do <em>in any case</em>, how onerous is the difference between NSTableView and UITableView? They’re extremely similar already.</p> <p>Your biggest challenge is probably just that the dimensions of a table view (or most any view) can change arbitrarily, at any time, on a Mac — and you’d have to deal with that whether you were using UIKit or AppKit.</p> <p style="text-align:center">* * *</p> <p>I have a theory on why there aren’t more Mac apps.</p> <p>One is that the additional stuff — menus, live resizing, AppleScript, etc. — is enough of a burden that people just don’t want to do it. You’d still have those things even with UIKit for Macs: they’d have to be added to UIKit, and so that particular burden is not going away.</p> <p>But I think the more important reason is that Macs aren’t exciting to most developers in the way iOS devices are exciting. Macs are where people quietly get their work done, in much the same ways they did 10 and 20 years ago. There’s your spreadsheet and your word processor. Web browser and email. Graphics editor and text editor. Chat window. You may be swiping a bit these days, but you’re also still just clicking with a mouse.</p> <p>It’s <em>boring</em>.</p> <p>(That is, until you realize that Mac users love software that helps them get their work done. They support indies and small businesses <em>passionately</em>. Doing great work for these folks is terrifically exciting — but I realize you’re not going to listen to me.)</p> <p>How do you fix that? How do you make Mac apps exciting to developers?</p> <p>I think — perhaps surprisingly — that you <em>bring UIKit to the Mac</em>. Even though I’ve spent just about this entire post explaining why it’s not needed and wouldn’t be particularly helpful, I think you do it anyway, as marketing to developers.</p> <p>There’s a risk, though — once developers realize that UIKit for Macs doesn’t get them out of dealing with all that extra stuff Mac apps need, they may complain that Mac apps are still too much work. Sure.</p> <p>But I think you do it anyway. Note to Apple: go for it.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/04/01/uikit_for_macs">01 Apr 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/30/sound_off_round_2_uikonf_">Sound Off Round 2 - UIKonf</a></h3> <div class="weblogPostBody"><p>Sound Off is raising money for <a href="https://web.archive.org/web/20160403000629/http://soundofftech.org/blog/2016/03/round-2-uikonf/">live captioning at UIKonf</a>:</p> <blockquote><p>Live captioning for UIKonf is not only going to open up the conference to the deaf community and the hard of hearing, but will be indispensable for many of the attendees for whom English is not their first language.</p></blockquote> <p><a href="https://web.archive.org/web/20160403000629/https://www.gofundme.com/sound-off-uikonf">Donate now via GoFundMe</a>.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/30/sound_off_round_2_uikonf_">30 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/28/how_it_went_at_the_caucus">How It Went at the Caucus</a></h3> <div class="weblogPostBody"><p>On Saturday morning we went to a nearby school (in my neighborhood in Seattle) and attended the caucus for our precinct. Sanders beat Clinton 94-35 — four delegates to one.</p> <p>I was nervous, since I hadn’t been to a caucus before, and since I knew I’d be voting on the losing side. I was afraid my wife and I would be the only Hillary people there! But we weren’t.</p> <p>I was also a little nervous that the proceedings might be other than completely civil. And there was one guy — Mr. Well Actually — who interrupted Hillary speakers until other people reminded him that everybody gets their turn. That was the worst of it, which means it wasn’t bad at all, and I needn’t have worried.</p> <p style="text-align:center">* * *</p> <p>On the night before we pre-registered online and printed out a form and wrote in our initial preference.</p> <p>On Saturday, just before 10 am, we took our forms and went to a gym room at the school and waited with a few other precincts for about half an hour. Then the guy running our precinct’s caucus called us together, and we walked out into the hall and found the particular hallway where we’d be caucusing. It was crowded and hard to hear, so the guy suggested we go outside.</p> <p>We went outside. It was warm enough and sunny, so it was nice.</p> <p>The people who run caucuses aren’t professional caucus-runners, obviously, so we didn’t totally stick to the script. We missed doing the initial tally. We did split physically into three camps: Sanders, Clinton, and undecided. Undecided had just a half-dozen or so people.</p> <p style="text-align:center">* * *</p> <p>Then people volunteered to speak for Sanders and Clinton, and they alternated. There were four of five speakers for each, and each spoke for about three minutes. Nobody had a practiced speech that I could tell. (I didn’t speak, though I was tempted.) (One undecided voter spoke too.)</p> <p>Only one of the speakers was at all provocative — a woman who said that Clinton supporters were “voting out of fear,” which elicited a bunch of head-shaking and audible no’s. The speakers who did best were the ones who talked about why they were <em>for</em> their candidate, rather than why they were against the other candidate.</p> <p style="text-align:center">* * *</p> <p>Very few people changed their votes. We turned in our forms to the person running the caucus, then people huddled around him and did arithmetic. It took a while.</p> <p>About half the crowd left during the math phase. But we wanted to stay for the whole thing, because that part is democracy too, and we like democracy. (It ended before noon. It’s not like it took ridiculously long.)</p> <p>Once that was done, and the tally and delegate totals were announced, then each side elected their delegates. For us (since we had just one delegate), it was easy. A person volunteered, and we all just agreed. We needed two alternates, and people volunteered and we agreed. Simple.</p> <p>Those delegates go to a local convention. There are layers of conventions before there are delegates to the national convention. So it’s no giant commitment to be a delegate — but still, it’s very cool of those people to volunteer.</p> <p style="text-align:center">* * *</p> <p>I expect to caucus again next time. It’s kind of fun.</p> <p>But I still massively prefer a secret-ballot primary system. You get way more participation that way: it’s more democratic. I’m not saying the outcome would have been any different — probably not. I just think it’s fairer. More people have a voice and feel like they have a stake when they can actually participate. It’s why we’re <em>Democrats</em>, after all.</p> <p style="text-align:center">* * *</p> <p>It was my 48th birthday. For my birthday I got to cast a vote for the person I believe will be the first woman President of the United States of America. It felt <em>great</em>.</p> <p>(No offense meant to Sanders supporters. I like Sanders too — I’ve been a fan for years. I think Hillary would be a better President, so I voted for her. Reasonable people may disagree.)</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/28/how_it_went_at_the_caucus">28 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/28/omnioutliner_4_5_1">OmniOutliner 4.5.1</a></h3> <div class="weblogPostBody"><p>The <a href="https://web.archive.org/web/20160403000629/https://www.omnigroup.com/omnioutliner">latest OmniOutliner for Mac</a> is up. (It will be in the app store once it passes review. This week is my guess.)</p> <p><a href="https://web.archive.org/web/20160403000629/https://www.omnigroup.com/releasenotes/omnioutliner-mac">Changes include</a> some printing bug fixes — and also a fix for a cosmetic bug that was driving me crazy: in the sidebar, when you collapse or expand the Styles, the Contents outline will now stay in place. (Previously it was changing position then changing back. Animatedly.)</p> <p>The fix, by the way, was just to switch to a flipped NSView, so that 0,0 is at the upper left rather than bottom left. Given that we’re using auto layout, I didn’t expect the flipped-ness of a view to matter, but it does. (I should have known better.)</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/28/omnioutliner_4_5_1">28 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/23/cocoaconf_seattle_sale">CocoaConf Seattle Sale</a></h3> <div class="weblogPostBody"><p>The <a href="https://web.archive.org/web/20160403000629/http://cocoaconf.com/seattle-2016/register">Early Bird Sale</a> for CocoaConf Seattle ends Friday night. Check out the great <a href="https://web.archive.org/web/20160403000629/http://cocoaconf.com/seattle-2016/sessions">list of speakers</a>!</p> <p><a href="https://web.archive.org/web/20160403000629/https://twitter.com/NatashaTheRobot">@natashatherobot</a> is doing <em>two</em> talks. That right there makes it worth it.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/23/cocoaconf_seattle_sale">23 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/22/notes_from_a_conditional_breakpoint">Notes from a Conditional Breakpoint</a></h3> <div class="weblogPostBody"><p>Write some good songs — that people like <em>and</em> that make them laugh — and make some slides to go with them. Create an album of those songs that appears in the iTunes charts. Then write some more songs.</p> <p>Then — just to up the ante — do a bunch of live performances every year, but <em>never with the same band</em>. And be a great singer and entertainer every single time.</p> <p><em>And</em> be an intelligent, friendly, and good person. A person anybody would be glad to call friend.</p> <p>That’s <a href="https://web.archive.org/web/20160403000629/https://twitter.com/jamesdempsey">James Dempsey</a>.</p> <p>Because the songs are nerdy and funny, because James looks like a guy who’s just having fun, it might be easy to overlook what an achievement all this is. <em>You</em> try it!</p> <p style="text-align:center">* * *</p> <p>I’ve played with James several times, which makes me a Conditional Breakpoint. (Including most recently at the <a href="https://web.archive.org/web/20160403000629/https://www.flickr.com/photos/cocoaconf/sets/72157663770400704">Yosemite Cocoaconf</a>.)</p> <p>I’ve played campfire guitar and the occasional piano-found-in-a-bar — but never, before James, have I played with other musicians with a set list and a crowd. It’s such a pleasure, and one that I never expected in life. So much fun.</p> <p>I have James to thank.</p> <p>And I’d also like to thank, from the most recent Yosemite show: <a href="https://web.archive.org/web/20160403000629/https://twitter.com/jdalrymple">Jim</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/savinola">Laura</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/apike">Allen</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/macgenie">Jean</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/settern">Serenity</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/griotspeak">TJ</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/dimsumthinking">Daniel</a>, <a href="https://web.archive.org/web/20160403000629/https://twitter.com/cpickslay">Christopher</a>, and <a href="https://web.archive.org/web/20160403000629/https://twitter.com/songadaymann">Jonathan</a>. That right there is a super-group.</p> <p>PS I remember a few spots where I messed up. The ending of a couple songs, and coming out of the bridge on “Model View Controller.” I’ll nail those at <a href="https://web.archive.org/web/20160403000629/http://cocoaconf.com/seattle-2016/home">Seattle CocoaConf</a>. :)</p> <p>PPS In case you don’t already have it, <a href="https://web.archive.org/web/20160403000629/http://jamesdempsey.org/backtrace/">you can get the album</a>.</p> <p>PPPS With Jonathan there, how could we resist doing a live performance of the <a href="https://web.archive.org/web/20160403000629/https://www.youtube.com/watch?v=iCXItGrjqrw">ATP theme song</a>? We couldn’t. I assume there will be a video at some point and I’ll link to it.</p> <p><em>Update 3:30 pm:</em> Here’s an <a href="https://web.archive.org/web/20160403000629/https://www.youtube.com/watch?v=qSZEXHnioT0&feature=youtu.be">iPhone video of the ATP theme song</a>, recorded by <a href="https://web.archive.org/web/20160403000629/https://twitter.com/amilhamdev">Andrew Milham</a>. And more of a <a href="https://web.archive.org/web/20160403000629/http://youtu.be/I57v1QxZgmI">close-up video</a> recorded by <a href="https://web.archive.org/web/20160403000629/https://twitter.com/kimahlberg">Kim Ahlberg</a>.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/22/notes_from_a_conditional_breakpoint">22 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/18/nerds_in_a_room">Nerds in a Room</a></h3> <div class="weblogPostBody"><p>At the <a href="https://web.archive.org/web/20160403000629/http://cocoaconf.com/yosemite">Yosemite conference</a> — which was wonderful, which you should attend if they do it again next year — I did the kind of talk I’ve been moving toward as I get away from technical talks.</p> <p>Technical talks are great and a needed thing, but I don’t love doing them, so I leave them to other people.</p> <p>Lately I’ve been doing what I think of as nightclub act. The idea is simple: do 15 to 20 minutes on something non-technical but, hopefully, interesting. Tell a story and throw in a few jokes. Roll with whatever happens.</p> <p>Get the audience involved. If the crowd is small enough (such as at Yosemite) I just go around and the room and have everyone introduce themselves.</p> <p>(Mic technique is key, there, and I flubbed it at Yosemite. The rest of the audience needs to hear what each person is saying, and I didn't have the mic close enough in every case. Lesson learned.)</p> <p style="text-align:center">* * *</p> <p>I’m not necessarily suggesting this for anybody else or even giving advice. And I’m not saying I’m great at this — just that I’ve gotten to where I can reasonably pull it off.</p> <p>(As <a href="https://web.archive.org/web/20160403000629/https://twitter.com/savinola?lang=en">Laura Savino said</a> in her fantastic talk: let’s not be afraid to be mediocre in public!)</p> <p>But people asked me about it, so I figured I’d write up how I approach it.</p> <h4>The Goal</h4> <p>A thing like this has to be the last talk, preferably on the first night, and my goal is to propel people toward the socializing that happens right after. I want the talk to feel intimate, relaxed, and fun — because that’s the mindset we should all be in as we stand up and start talking to other people.</p> <p>I also want people to feel as if they can talk to anybody. They’ve just heard and seen me be a big dork who goes around and does exactly that — and they can do it too. It’s as easy as asking “What’s your name?”</p> <h4>How I Prepare</h4> <p>I’m lousy at slide management, and I’ve realized I don’t really like slides. So I try to use as few as possible. This one had four, and I cut the first one (the one with the title and my contact info) at the last second, and so I had just three. And almost the entire talk was done with just one slide. (It was a giant, blurry photo of a raccoon in my back yard.)</p> <p>(I might go entirely without slides next time. For what I’m doing, slides are a crutch, and I don’t need them.)</p> <p>I wrote out my talk first. Then I spent about six hours rehearsing it over two days (and many thousands of steps as I paced), and revising it as I went.</p> <p>I do <em>not</em> try to stick too close the script when rehearsing — I let myself improvise. Sometimes those bits end up back in the written version, and sometimes not. But it makes me comfortable with improvising, which I then bring to the performance later.</p> <p>(Example: in the delivered talk, I had a made-up-on-the-spot thing about how the folks in the room were the people who wrote the targeting computer that Luke Skywalker switched off before blowing up the Death Star. We had unit tests! It would have worked! But no. Luke’s a jerk.)</p> <h4>How I Perform</h4> <p>I like to swing my arms above my head a few times right before starting. It gets a little adrenaline going and it loosens me up. It makes me feel like I can <em>move</em>. I’ll do that right off-stage — or even on-stage — because it doesn’t matter if people see me doing it. If people think, “Hmmm, that’s oddly dorky of him,” then that’s <em>fine</em>.</p> <p>I probably end up moving around during the talk more than I should, but I’d rather that than get trapped behind the podium.</p> <p>Then I keep in mind a few things:</p> <p>The audience wants it to go well. Of course they do! That’s why they’re here. They’re rooting for me and for every other speaker.</p> <p>And: time flows at a different rate for the speaker than for the audience. It feels like ten minutes for me equals one second in the audience — so I compensate and slow down more than actually feels right. Also: when my brain suddenly goes multi-threaded, I just pause, let it go back to a single track, then move on.</p> <p>My brain sometimes wants to comment on what’s happening — so while I allow for improvising, I filter out, as much as I can, the self-conscious things my brain comes up with.</p> <p>(Just as time is different for the speaker and the audience, attention-to-detail is also different. When I’m up there, I’m hyper-aware — and critical — of what I’m doing, but nobody else in the room is in that position. So I don’t sweat if I flub a sentence or lose the train for a second or whatever. If I remain cool, then it’s like we’re just a couple nerds talking. Which is totally what I’m going for.)</p> <p>So: having prepared, having rehearsed improvising, knowing that the crowd starts out on my side, having gotten ready to move, having slowed down my sense of time and turned on my self-consciousness filters, I then just hope that something happens.</p> <p>I want that particular performance to be possible only in that room, that night, that hour, with those people.</p> <p>And something always <em>does</em> happen. I went way too far stage-right and triggered some nasty feedback, and backed away slowly. (The subtext of every moment like that: we’re just nerds in a room! Total amateurs! Mediocre in public! We laugh and move on.)</p> <p>Even better, though: since it was Yosemite, I could bring a pint of Stella on stage with me. And then — unplanned, and brilliantly executed — <a href="https://web.archive.org/web/20160403000629/https://twitter.com/jdalrymple">Jim Dalrymple</a> snuck up and refilled my beer right as I was getting to the main point of the talk. I couldn’t have planned anything better. (Lesson learned: I should <em>always</em> require that Jim is in the room when I talk. We understand each other.) Sure, you had to be there — but that’s my point. It worked right there and then, and it was unplanned yet so right.</p> <p>(I don’t actually recommend drinking, even beer, while presenting. It just makes the whole thing a bit more challenging, and if you go too far then you’re not actually going to give the audience their money’s worth. So let’s just say that it worked largely okay once and leave it at that.)</p> <h4>Later</h4> <p>Then I spend a week thinking about how it went and how it could go better. Next time I’m sure I’ll have a different story to tell — or I’ll have modified the story in some important ways to make it work better.</p> <p>And I vow to spend even more hours in rehearsal next time. The more prepared I am, the looser and more comfortable I will be — and the better able to roll with the room.</p> <p>Funny thing: the more I do this, the harder I work at it. I’ve gotten to the point where it’s <em>fun</em>, and I hope it shows.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/18/nerds_in_a_room">18 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/11/chug_on_fixing_the_app_store">Chug on Fixing the App Store</a></h3> <div class="weblogPostBody"><p><a href="https://web.archive.org/web/20160403000629/http://www.chuqui.com/2016/03/fixing-the-apple-app-store/">Chuq Von Rospach writes</a>:</p> <blockquote><p>I’m a strong believer that the indie developers are where the innovation comes from, not to mention the next generation of experts on the platform, and that it makes sense to invest in supporting them beyond what the revenue their apps will return through sales on the platform, but in all honesty, the revenue numbers and analytics make that a tough sell, and Apple is likely in that place where there are 300 proposals on the project list for the next year, and resources for 50 of them, so how do you choose which ones make the cut?</p></blockquote></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/11/chug_on_fixing_the_app_store">11 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/11/indies_and_the_app_store">Indies and the App Store</a></h3> <div class="weblogPostBody"><p>Rene Ritchie, in <a href="https://web.archive.org/web/20160403000629/http://www.imore.com/app-store-disconnect">What no indie developer wants to hear about the App Store</a>, writes:</p> <blockquote><p>Big apps get all the attention these days, just like big movie, music, or book releases — or big toy releases — and indies get what little is left, when there’s even a little left. The App Store is big business, and that’s how big business works. Only our nostalgia keeps us thinking otherwise. Just like our nostalgia for the corner store in the age of online and big box.</p></blockquote> <p>On this same subject, Ben Thompson’s <a href="https://web.archive.org/web/20160403000629/https://stratechery.com/2013/why-doesnt-apple-enable-sustainable-businesses-on-the-app-store/">Why doesn't Apple enable sustainable businesses on the app store?</a> is worth a re-read.</p> <p style="text-align:center">* * *</p> <p>Obviously some companies are doing well — such as <a href="https://web.archive.org/web/20160403000629/https://www.omnigroup.com/">Omni</a>, where I work — selling productivity apps on the App Store.</p> <p>And indies would do better than they are right now — possibly much better — if the App Store had trial versions, upgrade pricing, and a faster and better review process. (And the Mac App Store should make sandboxing either less onerous or, preferably, optional.) (And — since I’m listing the ponies I want — it would help if Apple took something like 10% rather than 30%.)</p> <p>But a couple other things are true:</p> <p>There was never a golden age for indie iOS developers. It was easier earlier on, but it was never golden. (Yes, some people made money, and some are today. I don’t mean that there were zero successes.)</p> <p>And there’s a good chance that many of the people you currently think of as thriving iOS indie developers are making money in other ways: contracting, podcast ads, Mac apps, etc.</p> <p style="text-align:center">* * *</p> <p>Speaking of Mac apps: ten years ago you could make money writing and selling Mac apps. There was a small-but-awesome community of indie Mac developers. This hasn’t changed.</p> <p>The Mac has for a long time been overlooked — first because Windows was so huge, and then web apps, and now iOS. For my entire career people have said that the Mac is a bad bet, that it’s dumb to write Mac apps.</p> <p>In 2002, in <a href="https://web.archive.org/web/20160403000629/http://inessential.com/2002/09/19/why_i_develop_for_mac_os_x">Why I develop for Mac OS X</a>, I explained that I write Mac apps for emotional reasons.</p> <p>Those emotional reasons still apply, and are enough, themselves, to keep me writing Mac apps. But my experience since then tells me that writing Mac apps is the best <em>economic</em> bet for indies. (Particularly if you sell the app yourself, so you can have a trial version and upgrade pricing.)</p> <p>It’s okay that you totally don’t believe me. I know you don’t. But Mac developers have been going against the prevailing wisdom — and making great apps — for decades. We’ll keep going.</p> <p style="text-align:center">* * *</p> <p><em>Update 2:20 pm:</em> See, from 2008, <a href="https://web.archive.org/web/20160403000629/http://inessential.com/chair">Advice for indies</a>.</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/11/indies_and_the_app_store">11 Mar 2016</a></span></div> </div><div class="weblogPost"> <h3><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/07/question_for_ted_cruz">Question for Ted Cruz</a></h3> <div class="weblogPostBody"><p>In 2014 Senator Ted Cruz attempted, by use of a filibuster, to prevent Congress from raising the debt ceiling. Had he been successful, the United States would have defaulted on its debt, with unknown — but likely <a href="https://web.archive.org/web/20160403000629/http://www.cfr.org/budget-debt-and-deficits/us-debt-ceiling-costs-consequences/p24751">extremely dire</a> — consequences.</p> <p>Cruz — throughout his Senatorial career and through this campaign — has often spoken of returning America to the rule of the Constitution.</p> <p>But there’s the matter of the 14th Amendment. From Section 4:</p> <blockquote><p>The validity of the public debt of the United States, authorized by law, including debts incurred for payment of pensions and bounties for services in suppressing insurrection or rebellion, shall not be questioned.</p></blockquote> <p>This was ratified after the Civil War, hence the “suppressing insurrection or rebellion” part. But the gist remains: the validity of the public debt shall not be questioned.</p> <p>If the only way to follow the Constitution is for the President to ask Congress to raise the debt ceiling, would President Cruz do so?</p> <p>(Historical note: the <a href="https://web.archive.org/web/20160403000629/http://usgovinfo.about.com/od/moneymatters/tp/5-Presidents-Who-Raised-The-Debt-Limit.htm">debt ceiling was raised 17 times</a> during President Reagan’s time in office. It’s not a new thing.)</p></div> <div class="weblogPostDateline"><span class="weblogPostDisplayDate"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/2016/03/07/question_for_ted_cruz">07 Mar 2016</a></span></div> </div> <p><a href="https://web.archive.org/web/20160403000629/http://inessential.com/archive">Archive</a></p> </div> <!-- content --> <div id="deckad"> <div id="innerdeckad"> <span id="adsViaTheDeck"><a href="https://web.archive.org/web/20160403000629/http://decknetwork.net/">Ads via The Deck</a></span> <script type="text/javascript"> //<![CDATA[ (function(id) { document.write('<script type="text/javascript" src="' + 'https://web.archive.org/web/20160403000629/http://connect.decknetwork.net/deck' + id + '_js.php?' + (new Date().getTime()) + '"></' + 'script>'); })("IE"); //]]> </script> </div> </div> <div id="sidebar"> <!-- <p class="sidebarText"><a id="vesperlink" href="http://vesperapp.co/appstore">Vesper</a> - iOS app • <a href="http://therecord.co/">The Record</a> - podcast</p> --> <!-- <p class="sidebarText">Twitter: <a href="https://twitter.com/brentsimmons">brentsimmons</a> • <a href="https://twitter.com/inessential">inessential</a></p> --> <p class="sidebarText">What I work on at Omni<br/><a href="https://web.archive.org/web/20160403000629/http://www.omnigroup.com/omnifocus">OmniFocus for Mac</a> • <a href="https://web.archive.org/web/20160403000629/http://www.omnigroup.com/omnioutliner">OmniOutliner for Mac</a></p> <!-- <p class="sidebarText"> Open source<br /><a href="https://github.com/quartermaster/QSKit">Q Branch Standard Kit</a> • <a href="https://github.com/quartermaster/DB5">DB5</a></p> --> <p class="sidebarText"><a href="https://web.archive.org/web/20160403000629/http://inessential.com/swiftdiary">Swift Diary</a><br/> <a href="https://web.archive.org/web/20160403000629/http://inessential.com/vespersyncdiary">Vesper Sync Diary</a> • <a href="https://web.archive.org/web/20160403000629/http://inessential.com/hownottocrash">How Not to Crash</a><br/> <a href="https://web.archive.org/web/20160403000629/http://inessential.com/apps_ive_made">Apps I’ve Made</a> • <a href="https://web.archive.org/web/20160403000629/http://inessential.com/xml/rss.xml">RSS</a></p> </div> <!-- sidebar --> <div id="footer"> <p>© 1999-2016 Brent Simmons</p> <p>Made in Seattle. Go Hawks!</p> </div> </body> </html> <!-- FILE ARCHIVED ON 00:06:29 Apr 03, 2016 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 07:52:40 Dec 04, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.523 exclusion.robots: 0.027 exclusion.robots.policy: 0.016 esindex: 0.01 cdx.remote: 24.952 LoadShardBlock: 201.407 (3) PetaboxLoader3.datanode: 184.378 (4) PetaboxLoader3.resolve: 95.772 (2) load_resource: 116.685 -->