As I write this post, Barback v2.3 has been marked as Waiting for Review in the App Store. This means that it's gonna take around a week for it to actually get ready for sale: just like last time, I'm whittling some of the time away by writing up some patch notes.

The Stats

As pulled from GitHub:

  • 94 commits to 221 files
  • 14,637 additions and 4,390 deletions 1
  • 12 new recipes
  • Three attempts at getting Core Data sync to work in the background before calling it off

What's new


This was a pretty trivial feature to include from a technical perspective, and not something that really crossed my mind before checking out some competing apps that all seemed to have it. 2 But hey: it's definitely an important step in my longer-term effort to work on a data-centric approach to this, so recipes and individual ingredients have associated ABVs.

Recipe details

Again with the 'first steps towards a data-centric approach': similar to how ingredients have UIDescriptionViews with detailed information, cocktails will have little blurbs. These are fairly amorphous in purpose: they can range from etymology to fun facts to, in the case of Planter's Punch, a relevant limerick.

Revamped buttons

Continuing the theme of revisiting recipe details: the bespoke Facebook and Twitter buttons are gone, replaced with the standard UIActivityViewController (and the favorite button has relocated to a new home, in-line with the recipe title itself). I think this is a small, but subtantial win:

  • Barback no longer contains images. Everything's a dynamically drawn SVG, thanks to the incredible PaintCode.

  • It just looks better.

  • A more standard and extensible sharing mechanism, in my Sisyphean efforts to emulate first-party apps.

Less gross imperial units

In a relatively fun interaction for me, I got a customer email that wasn't in all caps 3 politely requesting some better conversions from centiliters to ounces. The current mechanism was a pretty simple "divide by three" type of situation: while accurate 4, it was pretty subpar, since it resulted in lots of recipes calling for ⅓ and ⅔ of various spirits depsite a standard jigger only having half-ounce and full-ounce measures.

My solution ended up being a boring one: I basically upped the volume of every American drink by 50%, turning those thirds into halves and so on. Still, I think is an improvement: besides, who complains about their drink being too big?


And, of course, I saved the most time-intensive and least customer-facing part of 2.3 for last: migrating everything to Parse. Your cocktails are now in the cloud!

I can't really undersell how much of a hassle this was: dealing with network connections was something I was putting off for as long as possible, and my fears were pretty well confirmed. Even the shipped result is something I'm not 100% proud of: the sync engine takes way too long at the initial startup 5, there's hella weird consistency issues, and it's just overall a level of complexity that demands too much of my time.

That's not to speak ill of Parse, which has been a pretty incredible and flexible tool. I've heard it described as 'Heroku for mobile', which I thought was a strange moniker until I understood the implication: basically abstracting as many annoying parts of application development as it can. Seriously, the number of things alone it can handle is kinda staggering:

  • User management
  • Data store
  • Configuration management
  • Analytics
  • A/B testing
  • Push notifications

And that's just scratching the surface. It's a super-powerful tool, albeit a little unwieldy.

Still, I can push recipes and corrections remotely now, which is something that I've wanted to do from day one. And, just like the rest of the stuff in this version, it's a big stepping stone to do much more interesting things. (Plus, it was didactic -- which is a mantra I mutter to myself every time the simulator crashes.)

What's next

I've got one more release planned for 2.5, and it's probably going to be a relatively lightweight one (holidays and December being what they are.) Still, the general list (which will be more accurate on GitHub):

  • Support for iPad! This shouldn't actually be too bad, since I use AutoLayout for everything already, but will give me a good chance to revisit some of my UI paradigms and try and generalize some stuff.

  • Push notifications via Parse. Mwhahahahaha (I won't be annoying with these, I promise.)

  • An actual webfront, again via Parse. Right now the sharing feature is sort of inert: you can share the name of the cocktail, and that's it -- my goal is to actually expose each recipe and ingredient as a little div, to actually incentivize people sharing information.

  • Better ingredient descriptions. Not to besmirch my current tactic of grabbing the first three paragraphs from Wikipedia and making some changes, but I can do a lot better.

  1. A lot of that is the fact that I'm pulling in Pods. Haven't decided if this is really best practice or not yet -- I'm leaning towards adding them to the .gitignore since I've got the Podfile there anyway. 

  2. Don't know if that's embarassing or liberating to admit, but still. I've got a folder on my iPhone of like two dozen recipe apps that I go through whenever I'm at an impasse. 

  3. No offense, Josh. I'm sure you're a nice person in real life. 

  4. 1 oz = 2.96 cl. 

  5. This is something I'm looking to improve upon in 2.4, though. Even if it ends up being gross. 

If you enjoyed this article, you should , share it on facebook, or save it on pocket. Thanks!