Hacker News new | ask | show | jobs
by EmanuelB 63 days ago
Solo project since 4+ years: https://kastanj.ch/en?mid=hn47741527

The goal is to make every recipe foolproof on the first try, similar to when you walk into a restaurant and just pick what you want to eat without thinking about the details. The goal is to have the same experience, just pick what you want to eat, with recipes that tells you exactly what to do with no magic involved.

Technically it is probably very different from other recipe apps. The database is a huge graph that captures the relations between ingredients and processes. Imagine 'raw potato'->'peeled potato'->'boiled potato'->'mashed potato'. It is all the same ingredients but different processing. The lines between the nodes define the process and the nodes are physical things. Recipes are defined as subsets of the graph. The graph can also wrap around into itself, which is apparently needed to properly define some European dishes in this system. The graph also has multiple layers to capture different relationships that are not process related.

Why was it designed it in this way? Because food/cooking is complex to define. This design is the only way I have found that can capture enough of these complex relationships that the computer can also 'understand' what is going on.

My favourite thing about this is that each recipe is strictly defined in the graph. If the recipe skips a step, or something is undefined, the computer knows that the recipe is incomplete. It won't ask you to do 10 things at the same time and then have something magically appear out of nowhere. It is like compile time checking but for recipes.

It also enables some other superpowers, for example: • Exclude meat part of the graph = vegetarian. Same thing works with allergies. • Include meat part of graph = only show me recipes that contain meat. • Recursive search: search for 'potato' and the computer will know that french fries are made from potato. It can therefore tell you that you could make the hamburger meal, but you will need to complete the french fries recipe first, which should take 60 minutes. • Adjustable recipe difficulty (experimental): It knows which steps can be done in parallell, and which can't based on how the nodes connect. A beginner can get a slower paced recipe with breathing room between steps, while someone more experienced can do a faster pace and do more things in parallell.

If I knew what it would take to build this, I would never have gotten started. I completely underestimated the complexity of the problem I was trying to solve. But here we are, and now it is basically done and working.

The website captures the key points from a non-technical point of view, and you can enter your email and get notified when it will launch in your country.

1 comments

Sounds interesting, but if I may: the website is exceedingly sluggish, something like 1-2s interval between re-renders when trying to scroll the page (Firefox Linux). Not seeing any reason to explain this based on the page content but it's not happening with anything else on my system atm

edit: maybe `WARNING: Falling back to CPU-only rendering. Reason: webGLVersion is -1` from the console explains why, although I don't get why the page would need webGL

I took another look at this and it seem like the issue is a bug where firefox on linux for some reason fails to enable hardware acceleration when using WebGL. The landing page requires WebGL to function properly and will fall back to non accelerated rendering if it fails. I could not reproduce this on arch Linux with latest firefox build, plain default install. So it could be that some setting or extension in your browser triggers this issue. But thank you for letting me know about this :)
Probably explains it, but one wonders why this page would need WebGL at all. It's not like it's a rich graphical application... is it? :)
I can't reproduce this on stock firefox on linux. Will have to take a deeper look into this. Thank you for letting me know about it!