How To Get To The Bakery

On what we take for granted

6 min read

Having ideas is easy. Bringing them to fruition is hard. Making the implementation match your conception is excruciating. None of this is news to anybody (unless you are literally 3 years old, in which case congratulations being such a precocious reader buddy, I can’t imagine how good you were at potty training!), but this week was a reminder of this simple truth.

It was my third week of Fractal Bootcamp for anybody keeping track, and this is the week where everything suddenly became real. Where previously we were more in the mode of learning along a carefully structured path, this week we built our own app entirely from scratch. This doesn’t sound particularly easy, but it’s harder than I ever could’ve imagined before I began coding.

In most other domains, we take things for granted. Let’s say I told you to go to the store and buy some bread from the bakery. Simple enough, right? But the simplicity of this command conceals so much. I don’t have to tell you to walk to the door, unlock it, open the door, turn around, lock the door, turn around again… you get the point. This is what programming is like.

And this isn’t even the worst of it, I am working with React, which is considered a more declarative system than Javascript. In a imperative system, I might have to tell you to stand up, take 10 steps to your closet, put your hand on the doorknob, turn it 90 degrees, pull the door, find a shirt, take it into your hands, put the wide opening over your head and arms…it’s all pretty excruciating is the long and short of it.

When you’re traversing a defined path, doing all of this isn’t a walk in the park, but it is straightforward. You have your work set out for you, you know exactly what you need to do and which steps you will be implementing. Not so when you wander off the resort. You’re no longer walking along a road ready-made for you, you’re cutting your way through a jungle, machete in hand, and dodging hungry panthers. Welcome to the real world.

When you make your own app, you have the freedom of being your own boss. It’s liberating, but being privileged enough to set the agenda means that you are the responsible party. The onus is on you to painstakingly imagine first what it is you want to do, and then consider every little thing that goes into making it.

It’s a lot of work. It’s amazing to see a seed you planted bloom into something you can be proud of, but you can’t take growing that seed for granted. In fact, there’s a very good chance you overwatered it, or left it out in the sun too long, or the panther from the jungle followed you home and tore your place up. That’s just the way the cookie crumbles.

I spent an entire week making something. It’s a language learning app called Malan[^1]. It’s something I made for myself first and foremost, although I hope others will find it as useful as me. I love studying languages, and I’m generally pretty good at learning vocabulary through SRS flashcards like Anki. But interacting with text and with speech are two different skillsets, they aren’t even happening in the same part of the brain. Because of this I was always terrible at speaking most languages.

I was always too nervous to actually go out and practice speaking languages outside of a classroom setting. My monkey brain tells me that I must avoid embarrassing myself at all costs, and even though my human faculties know this is wrong I have a hard time overriding this programming. Enter Malan. Malan is a tool I can use to practice speaking without the fear of being judged by strangers for mangling their languages.

Malan allows the user to converse in just about any language most people would want to learn. There are of course the usual ones, Spanish, French, Mandarin, Japanese, but more adventurous learners can choose to study anything from Armenian to Kannada to Vietnamese. You can speak about absolutely anything you’d like and the AI will helpfully give you pointers on what you’ve said. It will teach you new vocabulary, correct your grammar, and keep the conversation going for as long as you would like. Best of all, you can do it all without the fear of being embarrassed.

Building Malan might have been just about the most difficult thing I’ve ever done, because I am still very new to coding and I am still not entirely successful in getting myself to think the way a coder does. But it might also be among the most satisfying, well, except for all of the frustrating bits.

By the end of this week, I have something that’s a perfectly functional app. But it still doesn’t match my vision yet, not exactly. I’ve gotten the TTS to be about as snappy as I can make it given the constraints of the stack we used at Fractal, I have a full chat history, I have an interface that’s pretty nice to look at, even if it is very derivative. But there’s still so much to be done.

I still hope to integrate a built-in dictionary to name one example, every day I uncover myriad new bugs I’ll have to fix, and I think that panther is still on the prowl. My classmates and I should all be proud of ourselves for making an entire app from scratch over the course of a week, but the work is never truly done. I slept very little this week because I would code late into the night in a frenzy because I was so excited about building this thing (well that’s part of it, I was also running around with my head on fire trying to plug all the holes in a sinking boat which thankfully has been salvaged). There were times when I wanted to smash my computer to bits, but it was exhilarating all the same.

That being said, I’ve worked up an appetite while writing this blog post. I think I’ll head over to the bakery and get myself a loaf of Uzbek bread. Thankfully I won’t have to think about it imperatively, because I am beat.

[^1]: Since people have asked, Solomon Malan was a 19th century British scholar of Swiss origins who supposedly knew some 80 languages. My Malan only knows 57 for now.