What chocolatiering taught me about programming
And also a new blog post (and also a Patreon announcement)
Sorry this one's late! Between the holiday, working on a bunch of longform pieces, and AI War 2 I've been behind on writing. First up, new blogpost! It's about the "four document model" that Divio and many others use for writing about their tools and my problems with it, specifically its limitations. Still a good model, just has drawbacks.
I've also been doing a few upkeep things. One is going through and replacing all the Twitter embeds on my website with images. Another is to going through all my Twitter dump to see if there's any ideas I should rescue for the blog or newsletter. There's some stuff I really liked there and I don't want it to die with the hellsite.
One of my favorite tweetstorms was about the intersection of my work and my biggest hobby. As some of you may know, I'm an avid chocolatier. I got into it in college but only really picked it up in 2015. If you run into me at a US conferences odds are I'll have some to hand out.
Chocolatiering is considered an advanced cooking subject because chocolate is a bastard of an ingredient. Cocoa butter is a polymorphic crystal, meaning it forms different types of crystals at different temperatures. When chocolate only has type V crystals, it's smooth and shiny and snaps cleanly. When you have other crystals, it looks like this:
If you want just type V crystals, you need to temper the chocolate. First you get the pot to 50 °C1 to melt out all the crystals, then you let it cool to about 32 °C2, then you agitate it or add seed crystals, and then finally you can work with it until it hits about 27 or so °C3, when it starts to harden.
That's... not a big window. Especially when doing molded chocolates, the entire process gets really messy:
- Make a filling.
- Temper the chocolate.
- Before the chocolate finishes cooling, fill a mold with chocolate, pour out all the chocolate (so a small amount sticks to the edges, forming a shell), fill the shells, cap the shells with more chocolate.
- Discard any shells that you didn't fill in time, because even if you retemper, melted chocolate won't form a good seal against solid chocolate.
It's pretty stressful.
A few years ago I saw a tip in the CIA book:
Soften the top edge of the chocolate shells: Use a hair dryer or heat gun to slightly soften the edges of the chocolate shells. This helps the cap to bond to each shell.
I found this works on hardened chocolate, too. So if I run out of time during step (3), it's not as big of a deal, since I can retemper a new batch of chocolate, soften the old shells, and cap them properly.
And that completely changes my process. Why even try do everything in one step? Why even in the same day? I can shell a bunch of molds on day one, and then fill and cap them on the second day. Suddenly I'm a ton more efficient and less stressed.
And even better, I can take my time with the filling process, which means I can do much more elaborate chocolates. I occasionally get the itch to do something like a PB&J:
This uses a mulberry-agar gel. It takes a while to make the filling, and you have to deposit it immediately after you make it, and then you have to wait a day for it to fully harden. So at a bare minimum you have to make the chocolate over two days, and for convenience it's usually 3-4. That's not something I could do without the hair drier technique.
wtf does this have to do with software
Efficiency and process improvements can open up entirely new approaches to tasks, often in unanticipated ways.
A while back I got fed up with accidentally overwriting my clipboard, so I installed a clipboard manager. But now I've found a bunch of other ways to use it. Like if I need to copy five things from a website into a file, I don't need to tab between them five times, I can just copy all five things once and then pull them sequentially from the manager. And I can use the clipboard as a very short-term cache for drafts.
More recently I installed a fuzzy finder for Neovim. This was just to help me navigate around in a project faster, but then I learned I could make custom navigators for things like my vimconfig directory. So now there's a much lower barrier to making customizations, which I really like.
vim.keymap.set('n', [[\v]], function()
local vim_folder = vim.fn.fnamemodify(vim.fn.expand("$MYVIMRC"), ":h")
telescope.find_files {
cwd = vim_folder,
search_dirs = {"lua", "after", "."}
}
end)
This is why I spend so much time learning new tools and techniques. Sometimes it's a dead-end or just a marginal improvement, but often enough it lets me do something new I couldn't do before.
Also I just like how people can pull ideas from different fields. Inspiration comes from the strangest places!
Experimental Patreon?
Not fully committed to it yet, but testing the waters on making a Patreon. My hope is that this could replace some consulting revenue and leave more time for writing. Just planning on making the content 1) writers commentary on blog posts, and 2) old writing projects that I've totally abandoned. Right now it's two graveyards and a commentary on the 4doc essay.
I have no plans to charge for "proper" content. The newsletter and blog will always be free, and there will not be software content that's exclusively made for Patreon. You will not get your "money's worth" by subscribing; this is just for people who've liked my work and want an easy way to throw money my way.
Link is here.
If you're reading this on the web, you can subscribe here. Updates are once a week. My main website is here.
My new book, Logic for Programmers, is now in early access! Get it here.