This project

is the combination (or convergence - get it?) of several of my hobbies: food, cooking and software. I do this project in my free time, and as a labour of love. I'll never get rich from this, but it's fun and it keeps my skills sharp. Any money I do make from this project will probably be squandered on beer and silly t-shirts. Well one can dream.

Well actually, one can dream, and were I to be so foolish, my kind-of long-term hope/vision for this project would be to create a beautiful online community (in the cloud/s, of course) of people who love, and love to share, food. I would want it to be a good thing, and to remain genuine to that theme. I wouldn't want to make a quick buck with my buddy Google (at the expense of my users' data) so I wouldn't pollute the site with advertising. I wouldn't want to let my big brother Facebook track my users, so I'd build my own 'share' buttons and wouldn't let the F-monster run javascript on my site (to be fair, I do use Google Analytics - it's a compromise). The web hosting costs would be covered by users donating whatever they thought was fair. I would give it away for free to non-profit organisations, and it would work even in places without internet access.

And even if none of that comes true, at least the project will serve as a kind of resume (should I ever, like you know, need to get a job or something).

Carrot Cake
Here's one I prepared earlier
Pavlova
Pavlova, proudly invented in NZ

Story time....

The ConvergenceMenu idea first came to me back in 2010 at a festival in New Zealand where around 300 people gathered out in the middle of nowhere (or as far as that gets in New Zealand) and just kind of hung-out for a week running workshops, volunteering, being creative, releasing their inner butterflies, and doing basically whatever they feel. Anyway point is, the guy managing the kitchen team for this whole event (cranking out two meals per day for 7+ days for 300 people - including special diets) had been planning everything using Excel (I know! Ex-freaking-cel!), and upon hearing I was in IT approached me to ask whether there might possibly be a better way to manage it all. Well Barry gave me a copy of his spreadsheet and I started kicking around ideas about how such a system might be implemented.

Nothing much really happened for a while after that, and it wasn't until a few years later that I had the idea of trying to implement it using Scout. Why not right? I mean, it's a good learning experience, and maybe something useful can come out of it.

So I do. I start investing spare time making this recipe management system, using Scout to handle the data entry and Jasper Reports to generate the printouts. At one point I had the idea of having a central online recipe database, and being able to connect multiple clients to it, so I did. I added offline support too because a) I can, and b) the festival is in a cellphone blackspot and can't access the server. So that necessitated an offline database (Derby) and data synchronizing. I even got it running on a free Openshift server. All great learning experiences. And so, the very first version of ConvergenceMenu was completed (SVN tagged) on 18 September 2013. So what next?

Well, there was still no landing page - just the Scout server. After having been working on a Java EE project at work, I decided to use my accumulated knowhow to build a little website for my server - again, "just for fun". I used the relatively new Bootsfaces (which worked out well I think), registered the www.convergencemenu.com domain (16th November 2014), and got a web project up and running, still using Openshift's (slow, but free) hosting. By late 2014 the website was up. It worked. Technically.

Since then I've moved the website to paid hosting at gandi.net (which I recommend), rebuilt the website, fended off hackers, added lots of stuff to the back-end, and upgraded pretty much everything (alongside my regular work). Last year (2017) I returned to the same festival to see if it would fly. It really didn't; the configuration was too clumsy, the model was too strict, and there were bugs hiding everywhere like cockroaches. Damn. On the plus side I took away some really great feedback, a clear idea of what needs to be fixed, and some great experience volunteering in the kitchen. XP for the win! I got stuck right into adding the missing features, removing bugs, and updating the website once again.

And that brings us to the present, and I've just finished what I think is the most significant release yet. Geez, what a monster. It's all very exciting. Let's see how it goes. :)

Big thanks

are due to:
  • all of the awesome often-source software I used, from the Eclipse IDE to the Scout framework to the PostgreSQL database to the the CentOS server to the Bootsfaces web framework to Java itself. It's all free, and that's awesome.
  • the free service providers like OpenShift and Cloudforge, who help a guy like me get started.
  • Let's Encrypt for free SSL certification.
  • all those tolerant souls who have endured conversations about the project over the years.
  • all users of the site - especially those brave enough to put their recipes up.
  • my dear wife Nina, who for the longest time was my entire user base, and who endures much and complains only moderately.
  • Barry and Riss, who helped get me started. Cheers guys.
  • Radio Paradise, a little-known music streaming service I listen to while cooking, whose donation-based system inspired me to try.
  • anyone who slaves their asses off in hot kitchens all day every day. Chefs, line cooks, dishies, the lot of you who conspire to bring the nice edible things to my table. My respect: you haz it.

Marco
No more tears

The 'Stack'

Technology Stack
Like a big delicious pile of techno-pancakes

In IT-speak, the 'Stack' is a buzzword referring to the layers, or topography, of a web application. For the general public this is a bit tech-heavy, but for those in the field, and particularly for those wanting to get into the field, I've detailed the way the site fits together.

The pretty, reactive (multi-device) front-end website layout is generated by Bootsfaces, while Eclise Scout very cleanly handles the 'back-end' recipe management, including the desktop apps. I use the Eclipse EE development environment for developing the front-end website, and the Eclipse Scout IDE for the back-end stuff. I use a PostgreSQL database online, and the lightweight Derby database offline. I use (and recommend) liquibase to handle database versioning. Lombok is great for reducing boilerplate code, and Omnifaces plugs a few holes in JSF.

I'm all about sharing knowledge, so if you like the look of the site and you'd like to learn how to make one like it, I threw together a tutorial to document my learning process, here. If you have any questions or comments, I'm happy to receive them on marco@convergencemenu.com.

Follow me on @MarcoDorfliger or #convergencemenu for project updates via Twitter.

This project is all my own work (Marco Dörfliger). I reserve all rights.

No dinners were burned in the making of this software.