Skip to main content

Make the World a Better Place: e/acc for the Rest of Us

The Future Is Now Old Man

One cannot go anywhere on tech-X(f/k/a Twitter) without seeing some variant of "e/acc" in people's bios. For those outside the loop, it stands for "effective accelerationism" and more or less means "let's build huge AI and rockets and get to the 'future' asap"[1].

Those e/acc guys are a fun bunch. I wish everyone was as forward looking as them. But they are a vanguard and it shows. Take these "vignettes of many worlds"[2] for example: Cocaine Capitalism

Does that make any sense to you? Yeah, me neither.

We need their energy, but it sorely needs some context within the real world. There's a now-unfashionable phrase that fits the bill.

Make the world a better place

For too long cynical grifters co-opted this phrase to peddle nonsense to fools[3]. But now more than ever it's time to take it back. It is both imperative and possible that we make the world a better place.

Perspective

Our civilization faces many challenges. Today people fear nuclear war, population collapse, and global warming (among many other things). These problems appear insurmountable and existential in a way never before experienced by humans. But then again, have not all historical problems been existential on a local scale? To a hunter gatherer, our modern threats are no different than the threat that a lion, a flood, or a much larger tribe will suddenly wipe them out. Our world is large and the hunter gatherer's small. We fear losing our world, and so too the hunter gatherer. The hunter gatherer took no solace in the fact that other tribes would live on after the extinction of his own tribe. Similarly we wouldn't be comforted by the knowledge of alien civilizations living on if we were to wipe ourselves out. When the stakes are life and death, scale has no meaning. How did the hunter gatherer avoid the loss of everything? He made himself better. He made his tribe better. And he made his world a better place.

Scale

You don't have to be Steve Jobs to make the world a better place. Regardless of scale, making the world a better place starts with you. You are a part of the world. By improving yourself you are improving the world. Once you have handled yourself, work to make your friends and family better off. Be a good friend, spouse, parent, and sibling. And then finally, work to improve the lives of your coworkers and customers in your profession. Be a good collaborator. Listen to users. Use your talents to put smiles on peoples faces.

Most people don't think about making the world better through the "small" aspects of their life. Even worse, most people believe it is impossible to change the world through their work. We have become disillusioned with the idea of improving the world through our work. It is entirely understandable when we've seen countless cynical examples of technological grift and financial manipulation. We've let these examples discourage us from trying. We don't want to end up being a part of the next FTX, Theranos, or Atlassian[4] for that matter. We have developed learned helplessness. And so we hopelessly trudge through our day jobs; not hurting anything, but not really helping either.

But it's our job to shape the future. Our children will inhabit our vision and implementation of the future. Pessimism about the future shows no creativity, strength, or integrity. You're implicitly saying that tomorrow looks like today. Have you no imagination?

Timescale

Assuming the future won't be better leads to some odd conclusions. It implies there was some point in our history which is and always will be the peak of human civilization. For any year in our three-hundred-thousand year history there is no metric for which life was better then than now.

For all of the great years in human history: they were not perfect. The true value of a time is only seen with hindsight. There was no need for the car when horses worked just fine. There was no need for the internet when we had phones and fax machines. There was no need for printing presses when we had perfectly good monks working as scribes. Most improvements were initially unnecessary. The fruits of the harvest must take time to grow.

For all of the horrible years in human history: life is obviously better now. Consider the reverse. For any low point in human history, we can say there exists a time which was better. When times are bad, it's easy to despair and reminisce upon a passed golden era. Nearly a millenium separated the fall of the western Roman empire and the beginning of the Renaissance and subsequent Age of Enlightenment. Naturally those living in medieval western Europe could be forgiven for thinking progress was futile. But we have the benefit of hindsight on this "dark" period of history and know there is an upper bound on the stalling of progress.

In good times and bad we must open up our horizons. In good times we must break through the local maxima of previous discoveries. In bad times we must stubbornly refuse acceptance of the status quo and trust that our work will be rewarded. One should be distrustful of those prophesying the disintegration of civilization because of a few decades of socio-economic turbulence.

In Closing

Why should we strive to make the world a better place?

Firstly: we need to. We need to have the right attitude about solving the problems we face. The consequences are death. But the consequences were always death. C'est la vie.

Secondly: making the world a better place includes but is not limited to rockets. It includes relatively minor actions such as returning the shopping cart to the corral[5].

And finally: making the world a better place takes into account the tides of progress. Setbacks are acceptable as long as we always strive for better.

Make the world a better place.

Footnotes

  1. Forgive me for this crude interpretation of it. It's always tough describing a meme, both in the sociological and the colloquial sense.
  2. AGI Futures
  3. The first thing that popped in your head was either Erlich Bachmann or "Mega-Corporate Platitudes".
  4. While not fraudulent, I implore the reader to ask themselves: is Atlassian a net positive?
  5. The Shopping Cart Theory

Malone's Maxim

There's an episode of The Office where Kevin Malone says:

Why waste time say lot word when few word do trick?

Kevin's simple nature hides the true depth of the question. I, like most people, didn’t think much about this statement until I read Daniel Kahneman's Thinking Fast and Slow. In the book he states we perceive those using a wider vocabulary as less intelligent than those using a narrow vocabulary. The reason behind this is our brains associate understanding a speaker with intelligence itself. In other words, our brains tend to think subconsciously:

If me understand all word they say, me understand what they say. And if me understand them, they smart.

After learning about the effect word choice has on listener, I saw a connection with my day job as a software engineer. Having a wide vocabulary simply for its own sake is like building a software solution with flashy technologies simply because they’re “cool”. Engineering is not the maximization of technology, it is the use of technology to achieve a goal. Likewise communication is not the maximization of cool words. It is the maximization of transmission of ideas.

The human ability to listen is not nearly as powerful as the ability to speak. Our words should reflect this fact. Every unnecessary, unclear, or confusing word burns the fleeting attention of the listener. Sitting in silence to form your thoughts does not have this effect, and no one will think less of you for it. And now, to satisfy the rule of threes:

Say less word, be less dumb.

Footnotes

  1. Case in point: my wife made this article much better by removing the many unnecessary prepositions. "Maybe that's why people find it hard to understand you." I love her.

Don't Work Out

(if you want to be creative)

Disclaimer: this article targets those that are trying to advance themselves in some way through creativity. If you are content with your life and you aren't striving towards some greater purpose, please do keep working out.

Introduction

If you want to further yourself in a way that requires creativity, such as founding a startup or becoming an artist, stop working out. If you spend hours every week in a gym, it will leave you happy, healthy, and unfortunately, complacent. Vigorous exercise will suck the motivation and spark of inspiration from you. This is heterodox thinking, especially within the context of the grindset(1) subculture. But extraordinary results require uncommon thinking.

My Story

Throughout college and my first couple years in the workforce I have been quite active. In college I tried to bulk up. And once covid hit, I had no options as far as a gym was concerned so I started distance running. I grew to fall in love with running. I started running every day. It felt amazing. I worked my way up until I was running 50-60 miles per week, and I ended up running a couple marathons. In the summer of 2023 I signed up for the California International Marathon with an impossible goal: go sub-3 hours in the marathon. I ended up pushing myself too hard, getting injured, and having to pull out a month before the race.

Taking a break

The injury I sustained required almost two months of non-running from me. I took this opportunity to utilize my time differently: Read more books, learn Spanish, build cool software. I noticed that over time my motivation grew. I felt the urge to build things and try new things. These are sensations I was not a stranger to but I had not experienced since the last time I felt under-challenged, which, for me, was somewhere in high school.

Taking stock

Over time this fundamental urge only grew and grew. I went from desiring to learn to desiring to build. I started a blog and started an open source project(2). It was at this point I began questioning my return to running. Which, if you know me, borders on sacrilege. I wondered, where did all this energy come from? And then it occurred to me:

... I'm smoking all of my excess energy while running.

While I was running, all of my energy went to my day job and running. And after that I would collapse onto the sofa and vegetate. But now, I was eager and willing to go above and beyond in investing in my own human capital.

Qualifying

Ok let me pause here. It's important to stay active. Frankly, I think it's the second or third most important lifestyle choice, behind sleeping and possibly eating.

Instead of going to the gym or running, I stopped driving to work. I take some combination of transport, walking, and bike riding. In addition to this, I take multiple long walks a day with my dog, an after-lunch walk, and strolls whenever I need a deep think.

Overall, I am a very active person. But I do not exercise in a dedicated manner. I walk to think. I walk to enrich my dog. I ride my bike for fun. None of my time is "wasted". I can get double duty out of my exercise. Whereas whenever I would "work out," I was only doing one thing: building my fitness. So not only was I not using my time as efficiently, I was sucking away my energy.

Furthermore, there is evidence to suggest that exercising as a part of daily life is more congruent with the way that humans have lived for the majority of our existence. Dedicated exercise is a distinctly modern phenomena, as is sitting down for 8+ hours a day. Some of the longest-living humans in the world, the people of the so-called blue zones(3), all practice an integrated lifestyle.

Why save time driving to work just so you can spend that time exercising at the gym? Why not do both at the same time?

Conclusion

I've discussed why the current "hustle-culture" possibly has it wrong with its emphasis on vigorous exercise. I told my story of how I transitioned away from this model to a model of my own: A model where one's entire lifestyle is integrated. Exercise is work, exercise is play, exercise is growth, exercise is transportation. We don't have to subdivide all parts of our lives.

Footnotes / References

  1. hustle culture
  2. Unfortunately not public yet at the time of this writing. :(
  3. blue zones

How Fixed Gear Bicycles Work

Disclaimer: I am a professional software engineer, a mathematical hack, and a fixed-gear noob. Take what I say with a grain of salt ;)

I've recently picked up a new hobby: riding fixed gear bicycles, or fixies for short. A fixie is a bike with:

  1. Only one speed.
  2. A fixed rear gear. If the chain moves, so does the wheel.
  3. As few brakes as possible.

Why would a person want to ride such a bike? Because it's cool. It's the four way lovechild between the skateboarding community, manual transmission cars, bicycles, and any form of self-inflicted pain(read: running, ice baths).

Because most fixed gear riders try to install as few brakes as possible, the first thing a fixed gear rider learns is how to stop. One of the major ways of stopping is "skidding". This is where you lean forward and lock out your legs. Which causes the back wheel to stop moving and "skid" on the pavement. Thereby slowing down the bike and its rider.

_A "super cool" skid done by me__

A "super cool" skid done by me

Naturally, skidding your tires burns holes in your tires. Which can get expensive fast. As a result, a lot of thought has gone into maximizing the bang-for-your-buck of tires. For example, here's a calculator showing exactly the pattern of skid-patches one would get with a particular configuration.

If you play with the skid patch program, some unintuitive patterns appear. Why in the world would different gears produce different skid patterns on the wheel? Wouldn't it just be random?

In this article, you will explore with me as I try to deduce my way to the bottom of this. I'm going to use Processing to build a bicycle gear system to help answer the questions:

  1. Why does number of teeth impact the number of skid patches?
  2. Why does an odd total number of teeth produce more skid patches?
  3. Why does ambidextrous skidding produce more skids?

First Iteration - "Analog" Gears

Analog Gears - First Iteration I started by building a simulator of bicycle gears in Processing. Here we have the platonic ideal of a bicycle crankset. The rate at which the chainring (right gear) spins influences the rate at which the cog (left gear) is proportional to their relative number of teeth.

Only one problem here. Looking at these gears doesn't tell me much more than if I simply took my bike and looked at its gears. There is too much going on here.

This got me thinking:

"How can this be simplified?"

I started by putting on my first-principles hat.

  • What's really happening with the gears?
  • How do gears actually work?
  • What can and cannot be changed and still maintain the fundamental properties?

This is what I came up with:

What the bicycle gears are actually doing

The chain between the two gears only serves to translate the force from one gear to another. If we wanted to, we can remove this and have the gears driving each other directly.

Each tooth is preventing its mate (mate being the corresponding tooth on the other gear) from moving freely. By moving any individual tooth, it moves its mates, and as a result it moves the entire gear and system as a whole.

By this logic, the radius of each gear plays no part in the motion of the drivechain.

I then began thinking about each gear not as a repeating disc of teeth, but as an infinitely repeating series of teeth.

Inline Gears This helped me to see the pattern. The pair of gears represents a series of possible configurations. Each configuration is a possible state. This led me to my next model.

Second Iteration - "Hybrid" Gears

Hybrid Gears Taking what I learned from the last section, I converted the chainring to move at the same rate, but move in discrete steps. This is also because whenever one is doing a skid, they usually have their feet in a particular configuration.

Feet Arrangement

This configuration leads to the best leverage and stopping power. In this animation we can imagine that the crank arm(pedal) is the red spoke. And that when the crank arm is pointing down, that is when one would be initiating a skid.

When the chainring is in the "skid" position, we can see that one section of the cog forms an arc. The skid patch position could represent any portion of that arc. This doesn't necessarily explain the discrete skid patches we see on our tires though.

Third Iteration - "Digital" Gears

Finally we get to a model that makes sense.

Skid Patch Drawing

Please forgive my art skills, there are no free photos of skid patches on the internet :(

Looking at a skid patch, we can see that it is oval shaped. If the tire were wearing at one single point, one might expect that the skid patch would be circular. What this tells us is that each skid patch is not an individual patch, but some normal distribution of patches within some range.

Thinking in terms of our previous model, this makes sense. While the crank was in the "skid" position, each arm of the cog we could expect to be in some range of positions. As humans, we are not perfect. When we start a skid, there is some amount of error in both directions. Every skid is different. Which explains why the skid patch looks like a normal distribution. The essence of this is that each skid patch has some width, with a center at the location of the tooth.

Full Digital Gears Which brings us to our final iteration. We can simplify the system by digitizing both the chainring and cog.

Why Is An Odd Number of Teeth Better?

Now that we have a good working model, lets try to answer the questions we set out to answer at the outset, starting with "Why Is An Odd Number of Teeth Better?"

I'll start by taking our digitized gears and reducing the number of teeth. In theory, traits that apply to low teeth gears should also apply to high teeth gears.

4/2 Digital Gears Looking at this animation, we can see that there are some configurations that cannot happen. Remember the red section of the chainring, the section we designated as the active skid section? When we are skidding the green tooth of the cog is never engaged.

5/2 Digital Gears We see this is not the case with the odd number of teeth example. Sometimes it is the red tooth, sometimes it is the green tooth.

Why Is Ambidextrous Skidding Better?

So looking at the first example from above, let's pretend that both the red AND the green crank arms are skid sections. This is what it would look like for an ambidextrous skidder. As naturally the crank arms on the bike are opposite each other.

4/2 Digital Gears

Looking at them, we can see that skids with the red and green cranks produce skids on the cogs red and green teeth. As a result, whenever you ambidextrously skid, you are creating a patch on the opposite side of the cog than when you normally skid. You are accessing real estate previously un-accessible to you.

Why Is A Higher Teeth Number Better?

Here is where I am going to make a controversial statement:

more teeth is not inherently better

Taking what we have learned from our various examples and demonstrations, it would follow that increasing the number teeth in the cogs would result in more skid spots on the tire. If there are more skid spots on the tire, each individual spot will show less damage as the spots are spread more evenly.

... Or at least this is the train of logic of the conventional wisdom. I would posit that a low number of teeth and skid spots results in tire wear equivalent to a high number of teeth and skid patches. More skid patches means less variation in skid size; the bell curves would be skinnier. Less skid patches means a greater variation in skid size; the bell curves would be wider.

It's like saying that two small 250 calorie cheeseburgers are more fattening than one large 500 calorie cheeseburger because "there's more" of them. Intuition will lead you astray!

In Conclusion...

In this article, we got to explore how bicycle gears actually work. We figured out that:

  • An odd number of teeth is better because it allows for all permutations of gear positions to occur.
  • Ambidextrous skidding is better because it negates the need for an odd number of teeth, making all gear position permutations accessible.
  • A higher teeth number is not necessarily better because the same area of skid happens regardless of the granularity of the patches.

You're welcome to take a look at the code used to generate the animations on my Github. I wrote it in Processing for Python.

Side note: someone should really update Processing for Python. It has been sadly neglected. Maybe I'll take a stab one day :).

But Wait, There's More!

What if I told you what we explored here today is only half the truth? That the patterns we observed only apply for low numbers of teeth? That even more weird behaviors appear at higher teeth numbers? Stick around for part 2, where we will dive into the actual combinatorics to discover the secrets of gears at scale.

Paper, Pixels, and Paper again

Because my mind is limited with respect to its storage space, I use external tools to manage my knowledge. I have developed three primary tools that I use to keep myself sharp. Firstly I have my scratch paper, which is like my RAM, my working memory. Secondly I have Obsidian, which I use like a hard drive, and indexible repository of well-formatted knowledge. Thirdly I have my paper journal, which is use as thirty-thousand foot view of my whole life.

Printer Paper

When I am brainstorming, I like to use pen and paper to organize my thoughts. But just because I am organizing my thoughts doesn't make them organized in my notes. As a rule, the paper I use is an absolute mess. By making a mess in the physical space I am free sort things out in mental space. I use printer paper because it is disposable; there is no shame in throwing it in the recycling when I'm done with it. More often than not, my ramblings hold no value a week from when I spilled them onto the page. This is important not only due to its space saving aspect, but also because it allows me to have a more intimate connection with my ideas. If I am not concerned with maintaining the notes, I can focus more on the work at hand.

Obsidian

Obsidian has been the yin to my printer paper's yang. It's tag-able, extensible, and most of all it speaks markdown! If my printer paper is my RAM, then this is my hard drive. The ideas I put there are more fleshed out, and are likely to be revisited. This form of memory requires overhead in the form of occasional cleanup. I have to periodically go through and clean it, format it, and generally make it more indexable. If it is not cleaned up, it essentially becomes digital scratch paper. What I write on printer paper doesn't have to make sense, what goes in Obsidian does.

Notebooks

My notebooks are the pinnacle of my physical knowledge. If what I put into Obsidian is knowledge, then what I put into my notebooks is wisdom. Obsidian is not meant to be read front to back or chewed on, it's meant to be easily accessed. I use moleskine notebooks to write my deeper thoughts. Whereas Obsidian could be seen by others, these journals are for me. They are my meta-learning protocol, and my self-reflection. As a result, it makes sense for it to be hand-written and in order. Because it's an artifact of when it was written, it allows me to look back and reflect on my own thoughts. By reflecting on my past I am able to better understand my present and envision my future.

How to learn a foreign language like a software engineer

TL;DR

  • Find a way to make language learning fun. For me, it was to think of it as a problem-solving exercise, like programming.
  • Don't be afraid to change your approach if something isn't working. Most things are achievable by most people with the right approach.
  • If all you want is the results of my Quixotic journey to learn Spanish, scroll down to Approach #4

Introduction

I am a software engineer with 2 years of experience, and I grew up only speaking and understanding English. When I started my career, I moved from Georgia to California as many in the tech industry do. This was my first time living in a place where I could regularly hear people in public speaking languages I did not understand. Not only did I meet many polyglots, I met many monolinguals who spoke languages other than English. I heard everything from Spanish to Hindi to Chinese[1]. Imagine that, living in a place where you don't understand the vast majority of people or signage, having to get by via Google translate, pidginized English, and gestures! This was so intriguing to me, it was a totally foreign(pun intended) way of interacting with the world. As such, I decided I wanted to learn Spanish to engage with this sizable portion of the population living in such radically different circumstances than myself. Coincidentally, my best friend who also moved far away from home after college decided he also wanted to start learning French(this is important later).

My whole life has been a series of FAFOs (F*** around and find out). Which means with most decisions in life, I follow this algorithm:

  1. I invent my own way of going about things(F*** around).
  2. Implement it.
  3. Fail miserably. (Find out)
  4. Re-assess my choices and adjust accordingly.

I like to think this is a very Engineer-minded approach to going about life. Most mistakes are not permanent, but are simply useful data to be used towards improving the process. It doesn't matter "what" you do or "how" you do it as long as you can justify the "why"; the results speak for themselves. I think this approach is quite useful for language learning, and I'll speak more on that later.

What follows is my story of how I found a language learning method that worked for me. I made a lot of mistakes along the way, but I hope by showing my journey you can glean some useful information. At the end I outline my current approach and the likely reason you started reading this blog post: How To Learn a Foreign Language Like an Engineer.

Approach #1: Ill-advised silliness

In the language learning space, you hear a lot about "immersion". How people who move to other countries pick up languages seemingly effortlessly, and how babies just seem to automatically pick up languages. As such, my first foray into hacking my way into language learning was based on this philosophy. My plan was as follows:

  1. Watch Spanish YouTube videos.
  2. Listen to Spanish music.
  3. Repeat what I hear.

That's it. I did this for a few weeks. At first, it felt satisfying. I could feel my brain straining to comprehend the unintelligible inputs I gave it. I picked up a few phrases here and there. And it was fun making my clumsy American mouth make funny Spanish sounds. This didn't last long. The satisfaction and novelty soon wore off, and my motivation quickly waned. It no longer felt like a fun adventure exploring a parallel universe and soon became a chore. This brings us to approach #2.

Approach #2: Duolingo

While I was vigorously failing at approach#1, I had a conversation with a friend who has family in Spain. I told him about my "novel" approach to language learning. He likely thought I was insane(I was), but he was nice enough to entertain the idea. He expressed skepticism at my approach and recommended I try out Duolingo. He said that he used Duolingo to help him in addition to his experience immersing himself in Spain. After a cursory research into this cool new product of the internet age, I concluded that Duolingo was the greatest invention of the 21st century. It had everything! Game-ification! Vocabulary! Grammar! Reading! Speaking! Listening! All in one fremium app package!

So I spent months exclusively learning Spanish via Duolingo. I actually really enjoyed it. The streaks and the scoreboard incentivized me to keep coming back. I could learn from anywhere! And everything I needed was in one place. Eventually though, I became tolerant to the Duolingo dopamine drip. It no longer engaged me like it used to. I was no longer motivated to learn Spanish, I just wanted to keep my streak and stay high on the leaderboard. Little by little, I fell away. I kept spending my streak freezes until eventually I lost my impressive streak. At that point, I didn't care anymore. Whatever, my streak is gone. And here was the kicker: after months of "learning" Spanish on Duolingo, I felt no more like a Spanish speaker than when I started. If you asked me to introduce myself in Spanish IRL, I would have looked at you like a deer in the headlights. There's no multiple choice or fill in the blanks in real life conversation. My knowledge was entirely context dependent; my in game knowledge disappeared outside of the game.

The Dark Age

I lost hope. I said:

  • "Language learning is too hard and tedious"
  • "It's no fun"
  • "What's the point? I can't afford to travel to immerse myself as people say I need to do."

During this Spanish-Dark-Age, my biggest hobby was long distance running. I was training for marathons, and if you didn't already know, marathon training is an incredibly time intensive activity. It's not something a person can do unless they truly love the process. The marathon is simply an exhibition of the labor it took to achieve it, it is not the goal in and of itself. I loved to run. I loved short runs and I loved long runs. I loved fast runs and I loved slow runs. I loved runs on hot days and I loved running on cold days. The act of running was always the reward.

I saw the parallels between my running and my Spanish learning. The "goal", whether that's a marathon or knowing how to speak Spanish, was simply a culmination of many hours of practice. The result is achievable by almost anyone, but if and only if they enjoy the practice[2]. This only served to confirm my belief that language learning WAS NOT for me. How could I motivate myself to do hundreds of hours of something I fundamentally did not enjoy? I gave up.

The Renaissance

Remember my friend I mentioned that started learning French around the same time I started learning Spanish? Well, he's back.

I went out to visit him. He had stuck with his French learning while I had fallen away. I got to see him have rudimentary conversations with other French speakers and his tutor. I was blown away! How had he done this?! While I was hopelessly trying to find an approach to language learning, he found a way that worked for him. With most things I had always seen this friend as equally competent as myself; if he could do it, I could do it. So I asked him, what is your secret?

He attributed his success due to the fact that he started with a tutor early on. He said that his first lesson, he was completely embarrassed. He had no idea what he was doing. This motivated him to study hard so that never happened again. At the points where he might have given up, he forced himself to continue because he didn't want to embarrass himself again. It was expensive, but it was worth it. Fast forward a year and a half later, and he's able to have rudimentary conversations with people.

Approach #3: Pay-to-win

I was back, baby. This was gonna happen. I was gonna pay my way to learning Spanish, just like my friend did[3].

High on the excitement of my new plan, I brought it home to my wife. I told her about how I was gonna shell out some serious money to get a Spanish tutor and take Spanish classes and how I was going to magically learn Spanish in a year or two. I love my wife more than anything in the world, and she is the perfect fit for me. I am an optimist to the utmost degree(if you couldn't already tell from my first two Spanish learning attempts), while she is the eternal skeptic. I see her as my trusted advisor, and I need her skepticism in order to better hone my pie-in-the-sky ideas. She asked me two questions:

  1. How are we going to afford your lessons and tutor?
  2. Is this really the most efficient way to go about things?

Ugh. Back down to reality. But all is not lost! I took this opportunity to prove her wrong. There is a way to make this work! And at this point, I decided to do some actual research of my own. A year and a half into on-and-off language learning, I decided to actually Google "How to learn a foreign language reddit"[4].

Approach #4: Learning a foreign language like an engineer

Fundamentals

I found this article about building your own language learning curriculum. I would highly recommend it if you are at all language-curious. The TL;DR of it is as follows:

  1. There is a plethora of language learning resources out there. Some address certain aspects of learning better than others. You should mix and match to fit your needs.
  2. There really is no definite point at which someone can say they have "learned" a language. What you choose to learn is totally up to you. If you don't need an aspect of the language, don't bother learning it.
    1. You only care about reading? Don't worry about speaking and listening. Just read.
    2. You only need to be able to interact in a business setting? Just learn the relevant words, you don't need to learn how to say "mother", "yeehaw", or "avocado toast".
  3. Set a specific goal if you haven't already. Build your curriculum how you want to build it, given your goal and your preferences.

I went back and tried to recall why I even wanted to learn Spanish in the first place, I wanted to be able to speak to people I met around town. This meant that I could forget about reading and writing Spanish (boring, ew), and focus on what I really wanted. And I didn't need to be a native speaker, I could learn just enough to do what I wanted to do.

The Framework

I took this article and I followed its guidance. I built my own curriculum. Except this time, instead of thinking of things in terms of following a set curriculum, I decided to build a framework of learning upon which I could iterate. There are set principals upon which the curriculum can morph depending on the situation at hand.

Always make it fun

Always make it fun. If the process isn't fun, I'm not going to do it. If it's not fun, I'm doing the wrong thing and I need to find a different thing to do.

Approach the curriculum like an engineering problem.

The curriculum is the function that translates motivation and effort into useful knowledge and skills. Motivation and effort are relatively non-elastic, I can't directly manipulate those inputs. Therefore the results are determined primarily by the function. If the results are poor, it's because the implementation is poor.

func learn_spanish(int motivation, int effort):
    // TODO: implementation
    return knowledge

The implementation

How can I make speaking a language like coding?

As a software engineer, my favorite thing to do is solve problems. Memorizing things is not fun to me. How can I make language learning into a problem? Well it turns out that attempting to form sentences feels like a problem solving exercise to my brain. Forming a sentence in a foreign language is not unlike writing a function in a programming language you haven't used before. I don't need to sit down and take a LinkedIn learning course in order to learn Golang, I can just start writing it. When I write a function in a programming language I haven't used before, I follow this algorithm:

  1. Establish the goal
    1. "I want to write a function that encrypts a message"
  2. Look at similar code, either in the same codebase, or online, to get a general idea on how the language is structured.
  3. Break that goal into parts
  4. Make a best effort attempt at implementing the constituent parts
  5. Run my code to figure out what I did wrong
  6. Research all of the issues raised by running my code.
    1. "Ah this language represents strings differently, I need to use ' instead of ""
    2. "In this language they don't really use for-loops, I need to switch over to the map function"
    3. "This language doesn't have a garbage-collector. How do I need to change my code to account for that?"
  7. Fix the issues

Turns out this workflow maps almost perfectly onto speaking a new language. And now, I have made language learning fun. I don't need to know how to speak Spanish in order to speak Spanish, I just need to do it. And then one day I'll look up and say "huh, you know what, I am a Spanish speaker now." Making mistakes isn't a failure, it's simply a compile error. It's a natural part of the development process. I don't need to memorize syntax to learn a programming language; in fact, I never spent a single second trying to memorize programming syntax. Why? Because I can always Google it. And eventually, and with enough usage, it's just burned into my memory.

Now how can we do this with Spanish? For me, I started by using a free resource called Language Transfer. Language Transfer is cool because it approaches conversations in this SWE minded way. It's a podcast where the teacher first teaches you some simple rules and a little bit of vocabulary. For a SWE, it would be the equivalent of teaching someone the components needed to do this:

int a = 2;
int b = 3;
int c = a + b;
printf("%i + %i = %i", a, b, c);
>>> 2 + 3 = 5

And then the host has you use the very simple rules and vocabulary you just learned, and asks you carefully and intentionally formed questions that can be answered using your newfound tools. At which point you pause the podcast, form your answer, and play to hear the answer.

BOOM you are now speaking Spanish after 15 minutes.

This was the turning point in my language learning adventure. This was fun, this was intuitive, this was specific to my goal(speaking), and it was similar to what I do for a living. At first I did just Language Transfer, that was the first iteration of my curriculum. I kept running with LT until I hit a road block. I met a Guatemalan gentleman on a plane, and I attempted to have a conversation with him. It was a lot of fun, despite the fact that I knew very little.

That experience helped me to recognize some areas in my language learning that were lacking and aspects that my current curriculum couldn't really address. But now that I enjoyed the process of learning, I could re-assess some aspects that I previously wrote off. I could re-contextualize other aspects of learning. What follows are some modifications I made to my initial plan of "Only do Language Transfer".

... Back to vocabulary

One area I was lacking in was my vocabulary, and while I don't really like memorizing things(still don't), my newfound perspective on language learning helped me to get past this roadblock. I now do Anki flashcards, which admittedly is not the most fun thing in the world, but is much more palatable now. It's more palatable for me because I find languages and Spanish specifically more interesting. Every word has a history, nuance, and logic to it. Back to programming, one could memorize that "printf is the function that you use when you want to print a string with variables in it" OR one could look up the documentation about the print family of functions, and learn that the print functions are typically appended or prepended with letters denoting the functionality of the function itself. In the case of printf, the "f" stands for format, meaning you can add in some variables with your text literal. The former is boring and rote, the latter is fun and interesting. The same thing applies to words in human languages. Why is the verb "Ser" so irregular and weird? Well because it's actually two separate verbs that got mixed together over time, some conjugations came from one word while some came from the other.

... Back to reading

It is said the the best programmers are not the ones that the most skilled writers, but are the ones that are the most skilled readers. I initially wrote off(heh, pun actually not intended) reading Spanish because I was not interested in reading Spanish literature. Which is totally fine. But once my interest in the language itself grew, I came to recognize the value in reading Spanish. I have started incorporating reading into my curriculum because it is a great way to study silently(I study on the train during my commute). It's like reading code! It's interesting! It's like diving into a new and foreign codebase. At first it makes no sense at all. But then after chasing down rabbit holes and following the train of logic, you get this satisfaction at understanding the codebase. Reading Spanish is no different. You start knowing nothing, and you end with that satisfaction of gaining new knowledge.

... Back to tutoring

So initially wrote off tutoring because the price my friend gave me for what he paid for a tutor was a little too high for what I could afford. I recently did some more research into it, and I found that I don't need to spend that much to get a Spanish tutor. My friend pays a lot to work with a really experienced and knowledgeable tutor. He likely gets what he pays for. However, you don't need to spend big bucks to get a "good enough" tutor. For example, I used iTalki to find a MUCH more affordable tutor. He lives in Colombia so he is a native Spanish speaker, and the cost of living difference means that I can pay him a fair living wage with money I would have spent on coffee. He has been a big help to my journey, and has kept me on track. My sessions with him are particularly helpful because it's like coding in a REPL environment; instant feedback.

// This actually happened...
$ Meto el pollo en el ollo
> Are you sure you meant to say that? You just said you put the chicken in the butt. Ollo means butthole. Olla means pot.
$ Meto el pollo en la *olla*.
> Perfecto

Conclusion

I'm only three months deep into my latest iteration of Spanish learning, so take this advice as you will. But I will say that I know that this time it will stick. I have found a method that works for me, and I know I will be consistent with it. I know this because I know that I enjoy the process. And I know that if I enjoy the process, I can achieve any goal I set my mind to. I enjoy the process of running, therefore I run marathons. I enjoy the process of problem solving, therefore I am a successful software engineer. I hope this article may help you to re-contextualize your goals and how you approach them.

"A journey of a thousand miles begins with a single step" - Lao Tzu

Footnotes

  1. I may get some hate here for saying "Chinese" instead of "Mandarin". But this was entirely intentional. Growing up, I referred to the language that Chinese people spoke as such, "Chinese". Later on, I learned that technically there's no such thing as a Chinese language. And that most people from China are speaking Mandarin. For a while, I then referred to the language they spoke as Mandarin. However, since I have been learning more about languages, linguistics, and language learning, I now refer to a Chinese sounding language I cannot identify as Chinese. I've learned that how we define languages and dialects has more to do with politics than anything else. For most Chinese who grew up outside of the northern part of China, they speak Mandarin at school and work, but their local "dialect"(read: language) at home and with their friends. Chinese "dialects" are not really dialects but full languages. It's like if we said that French and German are dialects of European. My western ears cannot distinguish the difference between Mandarin and Cantonese. As a result, when I hear a Chinese-sounding language being spoken that I cannot identify, I refer to it as Chinese. I think this is more fair towards the reality of the situation, and doesn't downplay the validity of non-Mandarin dialects. And finally, to tie up this already incredibly verbose footnote, I must say that this whole state supported "language" vs local dialect is not even close to unique to China. The same thing happens in many other places, such as India or even Germany! If you're interested in nerding out about the distinction between languages and dialects, I would check out The Power of Babel by John McWhorter.
  2. By the way, I would encourage the reader to get into exercising regularly if they are not already. I don't believe there are those that like exercising and those that do not. I think most people that think they don't like it have simply had bad experiences with it. And to compound that, they have been bullied in some fashion either by their peers, gym coaches, or fitness influencers. Like language learning, there's not really one true right way to exercise (just many many wrong ways). I would encourage you to find something you enjoy. If it's too difficult, don't do it! Can't run for more than a minute? Walk for 30s and run for 30s. Can't run? Walk. Don't push yourself so hard that you feel like you're dying. Once you feel comfortable and you are enjoying yourself, branch out, try something new. You don't have to be Rocky Balboa, running up steps and chugging eggs. What's important is that you get out there and have fun. And then all the hard work will do itself. See this article for more information about run-walking.
  3. To my friend: no offense here. You didn't "pay your way" to learning French. This just reflects my simplistic view of your approach at that point in my language learning journey.
  4. I find myself Googling subjective things like this appended with "reddit" so that I can get real human input instead of content farmed or AI generated SEOd BS. Welcome to the 21st century. sigh

References

  1. The Power of Babel by John McWhorter - Great book if you're at all interested in linguistics
  2. https://www.languagetransfer.org - Language Transfer, an amazing FREE podcast for learning a bunch of popular languages.
  3. https://sajforbes.nz/languageguide/introduction/ - Great website outlining how to build your own language learning curriculum and the available resources. Meta-learning.
  4. http://spanishlinguist.us/2017/02/why-ser-and-ir-are-so-irregular/ - Tidbit about why a particular Spanish verb is so irregular.
  5. http://www.jeffgalloway.com/training/run-walk/ - Article outlining the runwalking method. Great if you want to start exercising but don't know how to start.
  6. https://apps.ankiweb.net - Awesome flashcard app.