Tag Archives: Apple

On Writing Successful Fart Apps


Last Thursday, Apple held an event where they announced a few things, including a refresh of the Macbook Pro line that killed all of the good ports and added a touch bar to replace the function key row. I was actually in a meeting during the announcement but I had heard of the touch bar through a story about a leak. Someone on Twitter put a bounty of $5 on the first fart app for the touch bar and a friend retweeted it to me.

If you know me, you know that I like writing stupid apps and basically making a mockery of the Silicon Valley trope of “making the world a better place.” Specifically, the fart app genre appeals to me as a way to subvert the app ecosystem and make it a little more dumb and weird. The tech industry in particular takes itself way too seriously. In a way, I’m emulating my Computer Science hero Monzy, who created projects like “Pantscam” and  a program that morphed people’s faces into butts (which I can’t find the archive of at the moment), all while being a successful nerdcore rapper. While the things he made were somewhat stupid, you can’t deny that the technology was actually pretty cool.

Writing fart apps is also a great way to learn about a particular platform. If “hello world” is the simplest app that you can write in a language, a fart app is the simplest non-trivial app you can write, since it touches the UI, the file system and whatever mechanism there is for playing an audio file. In the past I wrote some fart apps for Google Glass and the Apple Watch, which were small enough projects that I didn’t get bored and abandon them, plus I learned something in the process.

So anyway, on Thursday I got home from work and installed Xcode 8.1 on my computer. I ended up needing to get another update for macOS Sierra to get the simulated Touch Bar to show up as well. I looked at some sample code, figured out what I needed to do to write the app and finished in maybe an hour or two. It was a good exercise to get reacquainted with macOS development after I stalled on a project I started a few years ago. I pushed the repo to Github, made a demo video and took a screenshot and sent some tweets to the Twitter user who requested the app. I also sent it to some other Twitter users who made similar requests, not expecting anyone to write a fart app less than 12 hours after the hardware for it was announced.

On Friday, I posted the Github repo to an iOS developer community on Slack. That’s pretty much all the “promotion” I did. At some point that day, someone posted the project on Product Hunt (good call!) and it kinda just sat there. I went out of town during the weekend but I noticed someone had written a story about the project on Cult of Mac. I figured that would be the apex of my touch bar fart app’s story. At some point during the weekend though, I got a tweet that the Product Hunt entry hit 100 upvotes. Then a few more stories were written today and my project was even mentioned in NatashaTheRobot’s Swift newsletter. I’m guessing that today will be the real apex of this fart app and it’ll slowly be forgotten like my other fart apps before it.

So what have I learned from this and previous fart apps? One is that some people take themselves way too seriously to enjoy a good fart app. For example, this person:

First, I’m not a kid. My job title has senior in it which must mean something! Also, I have a day job and writing fart apps (a.k.a. learning stuff) is my hobby. Finally, thanks to this hard-hitting piece of journalism, we see that even fart app writers can eventually move on to greater ambitions.

There’s also this killjoy from Product Hunt:

While I can understand the sentiment that there could be better tech things happening, I also don’t think it’s realistic to see a new Snapchat or Twitter released every single day. Friday was a slow day, so a fart app won! And is it just the subject matter that makes the project immature and pathetic? Like, would a British PM Soundboard be any more appropriate?

Bottom line is that this project only took a couple hours out of my free time, which I would’ve probably spent playing a JSRPG anyway. I suppose you could argue that the nonexistence of my app would’ve caused fewer people to waste time discussing it, but I can’t really control how other people spend their time.

One cool thing that’s come out of this project is that someone has already forked it and made a soundboard project out of it. This is sort of the whole point of writing an open source fart app: establish a codebase that people can check out, learn from, and maybe even extend into their own thing. I knew from the start that my app wasn’t going to make it into an App Store. I do believe that the Github repo was the first (public at least) to reference the NSTouchBar class.

Finally, if you are reading this blog post thinking: “hey, I’d like to be known for making a fart app instead of one of many other useful contributions I’ve made to this planet!” then here are some tips! First off, you need to actually be the first to market on the fart app scene as interest will surely wane as the second, third, fourth, etc fart apps written for the technology are released. Unless you add something really cool, like actual fart smells in addition to sounds, then you probably wanna rush your fart app to market. Second, you’ll need to market your app with some kind of video. When building for cutting edge hardware like the touch bar (which no one has yet) or Google Glass (which literally no one bought),  you can assume that no one will have the hardware or be interested in installing your app, so just make a video! In my experience it helps if you mumble a lot. Finally, share your code by making it available on Github and attach a generous license to it. I used the MIT license but put the wrong year because I copy-pasted it from another app. But I guess my mistake was relatable because more than one person commented on that commit! Your app won’t be worth anything anyway, so you might as well share it.

I hope this post has helped explain my motivations for making a touch bar fart app. Partly it’s to prove that I could, and partly make a cool $0.03 on the video ads.

P.S. Apple, if you are reading this, please do not ban me from WWDC over this. I promise to write some software using one of your new frameworks for non-fart applications!

WWDC 2016 Recap

wwdc badge

As a beginning iOS developer, I remember learning a lot of the craft by trial and error, paired with many of the WWDC videos of years’ past. I was very lucky this year to 1) get chosen for the WWDC lottery and 2) work for a company that would support my trip to San Francisco. The week flew by and I went to some really interesting sessions. Here’s the things I found most interesting.


I’ve been developing some accessibility features since starting at Starbucks, and so I went to the What’s New in Accessibility session. The most interesting developer facing features are the improved Accessibility Inspector (which lets you quickly run accessibility audits, even in the simulator) and custom rotors for secondary actions. I’m still pretty new to accessibility but I imagine enabling custom rotors will be nice since I just used a hack with the headers rotor to enable skipping between content.

Swift APIs

Although I haven’t been writing much Swift at work (we’re just starting to adopt it), I went to the Swift API Design Guidelines session. It was interesting to note the conscious decisions to make Swift read grammatically, and how developers are reconciling that with the ways that Swift needs to be compatible with Objective-c APIs. The talk itself was really interesting and worth watching in full, because I’m not going to try to summarize it here!

WatchOS 3


As a person who actually bought an Apple Watch and still wears it every day, I would really like developers to take advantage of the performance gains in WatchOS 3, least of which is leaving apps in memory so they can load much faster! I was also really mesmerized by the power of rich notifications on the watch using SpriteKit and/or SceneKit. I’m worried that the watch is in a catch-22 right now where it’s not really worth the work to develop for it because there aren’t enough users, which aren’t using the watch because of the lack of good apps. Or it could be that the watch really just needs a good weather app and that’s it. Oh well.

Search APIs

I also went to a session about using search APIs like NSUserActivity and CoreSpotlight. I largely ignored these features in the past, but it would be pretty interesting to hook into the system in order to provide phone numbers or addresses to hand off to maps or some other apps that the user is switching to.

Other Stuff

I went to quite a few other sessions on things like iOS Photography (which I sort of just went to accidentally and stayed for) and iMessage integration and On-Demand Resources. Overall, the sessions were really great and I found it really nice to be able to attend a talk in person and absorb the knowledge without distractions. It’s true that the sessions are all available either streaming or online shortly after happening, but too often I’m watching a video while also working against some work deadline or only paying half attention. It’s also pretty neat to be among other iOS developers, and it’s kind of hard to believe that companies have a hard time hiring when you can see so many developers in one room!

Hair Force One

hair force one

Craig Federighi has become one of the best parts of Apple Keynotes as he’s equal parts funny and informative. Whenever he showed up in the conference center, huge lines of people would gather to take a photo with him. He’s a really tall dude and it’s really nice of him to put up with random iOS developer who want to take a photo with him.

The Jacket

wwdc jacket

I received what is apparently a tradition at WWDC; a jacket with the year on it. I immediately felt weird about getting a nice jacket that basically screams “I am the most elite of the elite, because either I or my company can pay $1600 for me to go to a developer conference!” I spotted a few jackets from earlier years in the conference center, as though it’s a way to show that you’ve been in this game for longer and you’re much cooler than people who just got their first jacket this year. I am in the process of de-labeling my jacket with nail polish remover (ask me about it if you’re interested!) and I’ll hopefully get to wear the jacket embarrassment free once the weather gets cooler (it’s a really nice jacket!). I am hoping that Apple stops giving these jackets out at some point and does something like, I dunno, plants a tree for each attendee? Then again, we are talking about a company that makes objects that people literally worship.

The Company Store

the company store

Speaking of products, there’s a company store set up in the conference center where you can buy shirts and baby stuff and hats with Apple logos on them. I was going to buy something but I realized that you’re literally paying $40 for the logo as the shirt itself is a fairly standard bella canvas tee. Plus I already have a WWDC jacket that asserts my dominance as an iOS developer!

In Closing

Again, I feel incredibly lucky to have been able to go to WWDC this year, for the first time ever. The keynote and sessions were really great and I got at least 3 ideas for future apps, which is a lot more than I’ve had in the past year or two. Hopefully I can go next year do it all over again.

List of Possible Apple Watch “Gates”

Everyone I know loves a good Apple product-based trivial controversy. There was Antenna-gate, and Bend-gate which happened just last year. Back when the first iPhone came out, Apple dropped the price a few months after release and early adopters were pissed. No one can say if there will be a real issue with the watch, butI figure it would be fun to make a list of potential ones.

  • Battery-gate (the battery doesn’t last long enough! I can’t wear it to bed!)
  • Bend-gate 2 (the wristband bends too much! It doesn’t bend enough!)
  • Snap-gate (the wristband cracks and snaps! WTF is fluoroelastomer anyway?)
  • Crown-gate (the digital crown breaks off! It spins too fast!)
  • Siri-gate (random people shouting “Hey Siri!” can control my watch!)
  • Shave-gate (The Milanese Loop is shaving my wrist hair off!)

Edit: Thought of a couple more this morning:

  • Left-handed-gate (can’t wear watch on right hand, digital crown doesn’t spin right!)
  • Sunglass-gate (can’t see the screen while wearing polarized sunglasses at a certain angle!)
  • White-band-gate (white sport band gets dirty too easily!)

I doubt any of these will happen, though Battery-gate seems most likely. Maybe something completely trivial and impossible to predict will ruin the watch launch. What sort of non-issue do you think will fill up the news cycles?

Google Play Vs. iTunes Match

I signed up for the Google Music beta a while ago and promptly forgot about it. I was either too busy to check it out or unimpressed with the feature set. I recently took another look at it after it was renamed to “Google Play.” It’s suddenly making a bit more sense now that I’m trying it out again.

Google Play (I’m really just talking about the music part) lets you upload all of your music to Google’s servers. This step seems kind of dumb but I guess for legal reasons they can’t just recognize your music and use their own copies of songs. I’m sure they’ve got the technology to do it. Anyway, once your music is uploaded you can play it from “the cloud.” While this seems like something so simple that Dropbox could do it, it’s the details that matter. In this case, Google offers a pretty neat interface to listen to your music (and buy more, if desired).

I haven’t used iTunes Match personally, but from what I’ve read, it seems to do something similar. iTunes Match will scan your music library and “match” them up with songs in their database. If a song isn’t on your iPhone but is in your library, you can download and listen to it from your device. So far, it doesn’t seem like there’s a desktop component of iTunes Match besides iTunes (meaning you can’t listen from a website). Also, iTunes Match costs money.

What I like about Google Play is that there is a web interface, so I can listen to all of my music at work without having to download iTunes. I complained earlier on Twitter about how there isn’t a native app for iOS that lets you listen to your Google Play stuff, but there does happen to be a web based player that seems okay. iTunes integrates more easily with your library (no need to actually upload stuff) but seems more rigid about re-downloading music.

Overall, it seems like Google Play is the better service. If it had a native app for iOS it would be the clear winner. Eventually I would like to lower the amount of space on my phone that I’m using for music, which would allow me to have more apps, photos and videos. Hopefully the two services continue to develop and compete with each other to the point where they’re both improving.

Thoughts on Textbooks on iBooks

I was thinking about the latest news from Apple, that they were partnering with textbook publishers to bring cheaper textbooks directly to the iPad while at the same time releasing an application for anyone to publish iBooks for the Apple Bookstore.

Perhaps I am being cynical, but it’s always appeared to me that the main business model of a textbook publisher is to slightly tweak versions of a textbook, altering page numbers and quiz questions in order to force students to buy newer editions instead of used ones. Perhaps the industry is thinking that iBooks will eliminate the used book market, and they’re probably right. But this could also have some negative (for publishers) side effects as well.

Apple is lowering the distribution costs of textbooks dramatically. Assuming that schools actually pay for a set of iPads for each student, it becomes trivially easy (with the iBook publishing software) to create free textbooks for schools. Who would want to give textbooks away for free? Teachers. There are cases of teachers self-publishing for their own schools, but for this idea to really work, I think teachers would need to collaboratively create a textbook that meets either regional or national standards and release it for free on iBooks. If you don’t believe this will happen, take a look at Khan Academy.

Previous attempts to create free textbooks have been hit or miss. I am not quite sure how popular Wikibooks are in the classroom. The problem is probably that of traction and scale. Previously, no one has created a standard for e-textbook distribution. Apple is doing that with iBooks. The beautiful part is that they’re bootstrapping it with traditional publishers who are probably digging their own grave.

Of course, this could play out in a number of ways. Maybe iBooks will prove to be too costly for most public schools to adopt (I’m guessing this is very likely). If only private schools or schools with a lot of funding can support them, it may not become worthwhile to create free textbooks for all.

What I’d hope to see is a slow adoption of iPads in the classroom using iBooks as textbooks. Once a critical mass of schools is using iBooks, free textbooks will be developed and adopted by certain school districts and spread to others.

I’m glad to see that Apple is trying to “disrupt” (I lose some points here by using a word I hate) the textbook industry, and it’s awesome that they’re partnering with that industry to do it. I’m really looking forward to seeing how this plays out, hopefully for the benefit of our education system.