Archive for July, 2007
A Java Guy’s Take On Ruby
After years of Java programming, I thought it was a time for a change. Doing Web 2.0ish things in Java was just simply a pain in the a**.
I researched Python and decided it was not for me because of its philosophy that there is only one way to do something right. I am a firm believer in there is more than one way to skin a cat. And besides, I liked what they were doing over at 37signals so I gave Ruby a shot.
Now dont get me wrong, Ruby is soooo much more enjoyable than Java. But there are a few things that make me wonder what the heck they are smoking over there. Here are my gripes.
But thats about it so far so it’s not all that bad, although I sometimes feel as if the object orientation wasn’t setup as cleanly as it could have been. But I will say this: compared to programming in Java, Ruby is awesome.
I did cheat on Ruby for a day with Smalltalk. I love the concept of Smalltalk but its just not cutting the mustard. I dont like the idea of having a GUI that I have to work from – I work from the shell. When I code I want to use the mouse as little as possible. IntelliJ IDEA really spoils you because its so beneficial to use yet you can switch to the shell easily. With Smalltalk you are stuck in this virtual environment and its really cool, but its almost too graphical. You have to add your Smalltalk “classes” through the class browser and that gets old really quick. And everytime I did something I got a grip of messages giving me tons of options and each option is twice as cryptic as the one before it. Not to mention that the GUI is horrific, and they color code their buttons, and there are cheesy graphics that popup around the windows, and the whole thing feels like you cant just grab it and go code, but that you have to change your entire life to subscribe to this crazy but incredibly tempting cult. Simply too much change for a chef.
So I ended up going back to Ruby and if the method names continue to drive me insane then I’ll write an include that will overload them. But as of now, I’ll just bury my nose in their documentation and spin a few brian cycles trying to figure out if I could use some of these cryptic methods in my project.
89.1% Success Rate
After reviewing the last 17 recipes that users have added to meChef.com, it appears that my ingredient matching algorithm has successfully matched 89.1% of the ingredients. I’ll be an honest guy and not round up until its over 89.5% 🙂
Those 17 recipes had a grand total of 156 ingredients, and 139 were automatically identified. That means that when a user adds the recipe to their grocery list, those identified ingredients will automatically be combined together with other recipes that have the same ingredients.
And that is the whole point of the site – when you create your grocery lists it takes the ingredients that recipes have in common and automatically adds them together so you dont have to. Anything in your pantry is also automatically deducted so – you guessed it – you dont have to.
Cooking, not algebra
Its tedious planning a good meal. You have to:
I would much rather:
So naturally I made a website with recipes on it and had it do the adding and subtracting of ingredients for me. Now, this little project has turned into an ingredient combination algorithm obsession with no signs of letting me out of its grip.
The site is functional, definitly not pretty in the VC funded web 2.0 sense of the word, and easy to use. I know for a fact that its easy to use because my own mother told me so. And mom’s never lie.
The whole idea is to copy and paste your recipe in, save it, then when you add it to a grocery list it combines any common ingredients together for you. You dont have to pick out the ingredients from a list – it figures out what the ingredient is automatically. When you add recipes together the ingredients are summed up for you, and your life begins its sweet ascent.
So now I click on recipes, print a list, shop, cook. And the food tastes better because of it.
Announcement: My Website Combine Recipes
Make grocery lists from your recipes; the ingredients are added up and pantry items are removed – automatically!
Although the current version is functional, we will post updates here as the meChef ingredient combination algorithm is refined and our ingredient database is expanded.