






Canary is user-centered. I knew that the interface should be intuitive, simple, and responsive. While I initially modeled my data in SQlite, the search experience was less than ideal (what? there are no ketchup cupcakes!?), and the load-time was slow.
In comes Elasticsearch like a magician and --poof-- the search flowed like a sine wave. I made friends with AngularJS along the way and we skipped into the sunset with Grunt, Bower, and Node. Everything seemed rainbows and glitter....until

Dirty data! I had to roll up my sleeves and scrub. I wrote a script to parse the html in a tidy fashion, and wrote another to process and sort. After testing, refining, and validating, the data shined like a new penny. Or at least like one from 2005.
To parse, I used the Python library, Beautiful Soup. It turns out that soup à la Bon Appétit is not so fresh. So, there was that. I wrote my processing and sorting scripts in python and blood and tears, and used javascript to seed the data to Elasticsearch.

I did my research and wrote code and rewrote it again. As I forayed into two-way data binding and beheld the wonders of dynamic loading, I ng-repeat="ateCupcakes" and ng-if="stuck", I class="stackOverflow".
Canary chirps as it does thanks to my mentors, teachers, and many patient developer evangelists who guided me along the way. Oh, and the documentation was really handy too.




Canary identifies gluten-containing ingredients, and swaps them for alternatives that optimize taste and texture. Flour is mapped to categories related to density, protein, fat, lightness, and stickiness, among other qualities. Other items are mapped to a sensible substitution.




Canary
By marswilliams
Canary
- 1,043
