Hey there,
TLDR; just wanted to share that I made an Android app which can read Cooklang recipes.
Longer version...
Cooklang is a markup language for recipes—a kind of Markdown for cooking. You write recipes in plain text, and suddenly they’re infinitely flexible. Need a shopping list? Generate it automatically. Want to scale a recipe? Just tweak the numbers. For someone like me, who’s obsessed with both programming and cooking, this was like discovering a hidden superpower.
But there was a problem. Cooklang was fantastic on a desktop with CLI server, but cooking doesn’t happen at your desk. It happens in the kitchen, in the grocery store, in the chaos of real life. That’s when I realized: this thing needed an app. Specifically, an Android app.
In my head, it seemed straightforward: code for a few months, integrate it with existing Cooklang tools, and voilà. But, of course, reality had other plans.
Turns out, no such library existed that fit the bill. I had to roll my own. Writing a file sync library from scratch isn’t glamorous. It’s the kind of grind where you spend hours debugging edge cases like "What happens if someone edits a file on their phone while another version is updated on their laptop?" It’s messy. It’s thankless. And yet, there’s something deeply satisfying about solving those problems—eventually.
I’d never planned on becoming an expert in cross-platform bindings, but necessity is a persuasive teacher.
The more I used the app, the more I realized: software doesn’t just happen. It’s a million little decisions, each one slightly better than the last.
If you’re into Cooklang, I hope the app makes your life easier. And if you’re not, maybe it’s time to start treating your recipes like code.
The process of building this wasn’t glamorous—it was messy, it was tedious, and it took way longer than I thought it would. But sometimes, the best work comes out of those unexpected detours.
If you want to dive deeper into Cooklang or the app, it’s all open-source. Feel free to ask me anything.
Edit: added screenshots.
TLDR; just wanted to share that I made an Android app which can read Cooklang recipes.
Longer version...
Cooklang is a markup language for recipes—a kind of Markdown for cooking. You write recipes in plain text, and suddenly they’re infinitely flexible. Need a shopping list? Generate it automatically. Want to scale a recipe? Just tweak the numbers. For someone like me, who’s obsessed with both programming and cooking, this was like discovering a hidden superpower.
But there was a problem. Cooklang was fantastic on a desktop with CLI server, but cooking doesn’t happen at your desk. It happens in the kitchen, in the grocery store, in the chaos of real life. That’s when I realized: this thing needed an app. Specifically, an Android app.
In my head, it seemed straightforward: code for a few months, integrate it with existing Cooklang tools, and voilà. But, of course, reality had other plans.
The First Hurdle: File Sync
Recipes in Cooklang are just plain text. Simple, right? Except syncing these files between devices is anything but simple. I naively assumed there’d be libraries out there I could use—ready-made solutions that would handle offline changes, merge conflicts, and everything in between.Turns out, no such library existed that fit the bill. I had to roll my own. Writing a file sync library from scratch isn’t glamorous. It’s the kind of grind where you spend hours debugging edge cases like "What happens if someone edits a file on their phone while another version is updated on their laptop?" It’s messy. It’s thankless. And yet, there’s something deeply satisfying about solving those problems—eventually.
The Rust Adventure
Cooklang’s parser is written in Rust, which was great on the backend. But integrating Rust into an Android app? Let’s just say it wasn’t plug-and-play. I had to wrap the parser into WebAssembly to make it compatible with Android. It was like learning a whole new language on top of the one I already thought I knew.I’d never planned on becoming an expert in cross-platform bindings, but necessity is a persuasive teacher.
The Grind
The app wasn’t just about getting code to work—it was about making it delightful. I tested it obsessively. In the kitchen, I’d pull up a recipe mid-simmer and realize, "This button is in the wrong place." At the grocery store, I’d find myself fumbling through the interface, thinking, "This could be faster."The more I used the app, the more I realized: software doesn’t just happen. It’s a million little decisions, each one slightly better than the last.
Why It Was Worth It
Today, the app is out there, and people will be using it. They’ll be checking off ingredients in the store, cooking step-by-step with their phones propped up on countertops. It’s the tool I wished existed when I started.If you’re into Cooklang, I hope the app makes your life easier. And if you’re not, maybe it’s time to start treating your recipes like code.
The process of building this wasn’t glamorous—it was messy, it was tedious, and it took way longer than I thought it would. But sometimes, the best work comes out of those unexpected detours.
If you want to dive deeper into Cooklang or the app, it’s all open-source. Feel free to ask me anything.
Edit: added screenshots.
Last edited: