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.
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
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.
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.
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
- 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.)
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.
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
.gitignoresince I've got the Podfile there anyway. ↩
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. ↩
No offense, Josh. I'm sure you're a nice person in real life. ↩
1 oz = 2.96 cl. ↩
This is something I'm looking to improve upon in 2.4, though. Even if it ends up being gross. ↩