benny: an update on my bali and coding journey
- I semi-wrapped up an enormous project to analyze millions of chess games to find the answers to a bunch of silly questions
- I started getting paid to code, which was an important milestone to cross, and has validated my theory that learning in public would be valuable.
- My focus on my fitness has been elevated to a top tier priority, as I keep getting injured and am going to attack the root cause of the injuries (poor mobility/flexibility)
- I feel lucky and grateful for the people in my life, especially Jake and Logan over the past couple of months. Both have served as mentors completely out of their own kindness
- I’m sticking around in Bali for the foreseeable (~6mo) future, to get the benefits of routine and investing in community
- Self-teaching software engineering via project-building has, for me, been experientially affirmed to be the most effective way to learn
Read on for more!
Hi, long time no talk 🙂
Been a while ;)
Lots has happened in the past 4 months!
- I got a job (you might be wondering: what!? you, benny, you?? why? I thought you are building companies and stuff? all great questions, please continue reading below 😉)
- I finished a massive project with a close friend of mine (hint: chess)
- I traveled Europe for 1.5mo, beep bopping around to see friends and family ❤️
- I came back to Bali, moved to a new apartment, and settled back into routine
- I injured my hamstring (again) AND shoulder, and started a daily physical therapy regimen
But before we get into the meat of it, here’s something a bit random: one of my favorite “dad” jokes I’ve come across recently. Just incredible:
“I'm thinking about selling my theremin. I haven't touched it in years.” - A random comment on a YouTube video of a lovely theremin performance
While we're at it, here's an incredible video of someone who has mastered theremin playing. What a weird, eerily beautiful instrument.
Anyways!
Read on for:
- updates on what i’ve been up to!
- 5 takeaways from my journey so far
- my plans going forward
- my worries
I. Updates on the coding/content/Bali journey so far
First off: coding
I’m starting to solidly feel like an indie hacker.
I can code! And I think I’m not too bad at it.
Along with my friend Logan, we completed an enormous analysis of millions of chess games (14 million, to be exact). The goal was trivial, but fun: find the answers to a bunch of silly questions about chess, like which piece has the best kill/death ratio, or which piece is the gold-medal Olympic long-distance runner of the pack (i.e. goes the furthest distance on average each game).
You can see the finished code for the analysis here: https://www.bennyrubanov.com/projects/
More content on this project coming soon! In the meantime, I presented some preliminary results to a bunch of indie hackers like me in Bali. Below (and here) is that deck!
[Technical stuff]: I’ve picked up on quite a few new skills/languages while working on this, including:
- Javascript
- Typescript
- Node.js
- JSON (in detail)
- Git
- VSCode (coding editor)
- data parsing and analysis of large sets
- zstd decompression/compression
- Object-oriented-programming
- more details on chess than I should know
I feel another wave of confidence that I can learn/build what I want to build. There were, nevertheless, many moments in the project where I felt stuck or unable to proceed for days.
I went back-and-forth with GPT4 hundreds of times trying to figure out how to get a piece of code to work, or why unit tests were failing, or why something wouldn’t print correctly to console, and more.
But a solution always appeared eventually, and I feel grateful to my past self for sticking with it to find that solution.
There is more I could say here (and will - see below!), but the important part is that, despite the frustrations of getting stuck in coding, I’m enjoying it a lot and feel more than ever that I’m making serious progress towards becoming a full fledged software engineer.
On that note…
I got a job
I’m getting paid to code 🙂 🤑💰
Huuugggeee milestone achieved! All-in-all, it took me about 4.5 months of consistent coding to get here. I started to be consistent in July after burning out, and got the job in late November.
How did it happen?
A friend of mine (and reader of the blog!!), Jake, reached out after seeing some of my progress.
Some excerpts from his initial message:
A client of mine wants to pull a junior developer on to a project that I can offload some of my work to…
- We'd be full async (Maybe 1-2 calls to get things going initially, only if needed)
- I'd plan out the feature, record a Loom talking over it, etc
- You implement that feature and start a pull request
- I'd test it and then merge it in
Why You: I think you have enough experience that you could contribute fairly quickly and still learn a lot from the experience. The hourly rate might be workable for you - potentially (infinitely?) extend your Bali runway while learning from hands on experience. And it would be fine if X months from now you want to roll off the project.
I know you're still early in the learning to code journey. But is this is something you'd be interested in?
And I said: yes!
I started the freelance work over the past couple months, and have managed to keep hourly contributions low so that I have ample space in my schedule for my own projects and content creation 🙂
Overall - huge win. I feel very grateful and fortunate that this fell into my lap at the right time (amidst an increase in financial concerns around my runway).
On top of that, it’s the first indication that this whole “learning in public” thing can create unexpected opportunities (which was a theory of mine when starting)!
Travels, Bali, and Fitness/Injuries
Travels:
In the past four months, I visited 10 cities across 7 countries (3 of which I hadn’t been to!) between 2 continents (Europe, Asia). It was a busy travel period for me, and naturally, that bit into the amount I was able to get done. The theme of my 1.5 month trip gallivanting* was ramping into freelancing while allowing myself to enjoy the travels and the time spent with friends and family.
I definitely struggled with this. I felt like I was pulled out of my element in Bali and my routines/habits/progress on my coding/content journey thoroughly shaken up. On top of that, being back in a wintery environment, after managing to avoid one for what became the longest stretch of my life (11 months!) without cold weather, was jarring. I was definitely not prepared (and unfortunately landed in Poland just as a cold front was sweeping across the continent)!
All that to say: I was constantly craving being back in Bali, and I think I let this craving get to my enjoyment a bit. I came back to Bali with the feeling that I wish my satisfaction/enjoyment was less dependent on my environment. But c’est la vie. I’m back now, and this is a problem to tackle later.
Bali:
Ah, Bali. I first came here with the intention of staying a few months. Now it’s been nearly a year (a year in about 2 weeks as of this writing!), and I’m likely to stay here for the majority of 2024.
I’ve spoken ad infinitum about this to friends and family, but something about this place keeps me here. I think it’s a combination of quite a few factors: weather, community & friendships, convenience, kindness of locals, health/fitness focus, etc. But whatever it is, I’m sticking around for a while.
That being said, it’s a tough balance to strike between wanting to see the big ol’ world, while wanting to maintain routine and work towards my goals. What I’ve ended up deciding to do is something somewhere in between: compromising with myself to let this year be a Bali year, while I’m continuing to work towards my goals of building products and services that can find a significant user base. Then, once I’ve gotten to a place where these goals are in “maintenance mode”, I’ll give myself the flexibility to explore the world more.
So, I’ll be here 🙂 come say hi!
Fitness/Injuries
Fitness has rooted itself deeply as one of my primary focuses over the past year. But I don’t think I’ve figured out how to do it sustainably. Here’s how this year has gone:
- March - May 2023: trained for a marathon, and deeply undertrained. Ran a quarter of the distance that I should've run during the training period
- May 2023: ran the marathon in Singapore, finished in 5 hours. Not a stellar time for my goals but made sense relative to training (and the weather: 34C/93F with 85%+ humidity... at midnight). Likely created a bunch of micro-tears in my tight hamstrings (especially my EXTRA tight left hamstring) due to under-training and over-working, as well as poor mobility and flexibility. Lost a bunch of weight and was the thinnest I’ve ever been.
- July 2023: went on a biking trip in Taiwan, biked 150km in 2 days. Strained my hamstring, but didn’t realize how bad at the time. Rested for 2 weeks, and then went right back into running/crossfit/tennis. Strained it further, this time badly. It hurt quite a bit to bend my leg, walk, and climb stairs.
- August - September 2023: rested, saw a physical therapist, recovered, and focused on moderate upper body work in the meantime
- Late September 2023 - November 2023: felt sufficiently recovered, so I scaled back up on crossfit/tennis
- November 2023: out of the blue, re-injured my hamstring. Likely due to continued tightness in my body, poor mobility, lack of stretching and proper warm-up/cool-down, and not having allowed the tendon/muscles to heal properly
- November - Jan 2024: Got a diagnosis for my leg: it’s tendonitis plus the chronic hamstring strain. Started physical therapy again. In frustration, I worked hard on my upper body. Inevitably, I injured my right rotator cuff (likely a strain). Take time off while traveling Europe to do no fitness. I’m quite frustrated at this point for not ramping up intelligently and not listening to my body
- Jan 2024: I make a detailed “fitness goals and priorities” plan that details my thoughts on why I keep getting injured, and what I plan to do to prevent it. I identify the root causes, mobility/flexibility and ramping up too quickly. I decide I need to really commit to injury recovery, and then prevention. Recovery is focused on physical therapy and rest. Prevention is focused on mobility and flexibility.
Essentially, I’ve decided that I won’t lift heavy or work out “hard” until I’ve fixed my mobility and flexibility issues. Once that’s done, I’ll carefully ramp back up on my training and favorite sports.
My flexibility issues are centered around my “posterior chain” (which contains the muscles that help you touch your toes, such as glutes, hamstrings, low back, calf muscles), and my shoulder/chest. And of course, those are exactly the places I got injured in.
So to summarize: going forward, the theme of fitness for me, at least for the next 3-6 months, is injury recovery and then injury prevention. These injuries have affected my quality of life, and I don’t want that anymore 🙂
II. 5 takeaways from my journey so far
1) Gratefulness
I can’t understate the gratefulness I feel towards all the people who have reached out, offered their advice/help, or general words of support. The encouragement has been astounding, and it’s hard not to feel excited when so many people show so much kindness.
Shout-out to the supportive indie hacker community in Bali, "Hackagu"!
Particular mention goes to Jake and Logan, both of whom have served as coding mentors while I learn how to do the basics and beyond.
Jake reached out to me out of the blue and has singlehandedly saved my financial runway, allowing me to continue this experiment on my career potentially indefinitely. On top of that, Jake went out of his way, unprompted, to create coding tutorials that would help me get ramped up onto the project he contracted me for. He’s consistently provided stellar feedback, code reviews, and mentorship beyond coding that I’m so grateful for.
Logan spent tons of time conducting coding reviews on my code, teaching me best practices, and sharing the tools and knowledge he had 🙂. And he deserves special mention for putting up with me while collaborating on a goofy chess project for months.
Feeling very, very thankful. This experiment is showing a lot of preliminary success, and that’s in extra large part due to the people in my life.
2) Learning to code with projects
A quick timeline: I spent around 60 days taking courses. I didn’t enjoy it very much, and got tired of it quickly, which coincided with a period in my life in which I burned out quickly. I learned some basic python and APIs.
I came back from a 4-month break, and sat down and coded my first web app. In the span of 1.5 weeks, I learned some basic javascript, html, css, flask, and how to integrate an external library. I played around with some fun models on replicate.com. And I gained a bunch of confidence.
Immediately after, I dove into the chess project. That was a 4-ish month endeavor, and I learned a ton (see above!).
I think all the advice I had gotten many times prior to starting to learn coding echoed the same sentiment: that the best way to learn to code is to try to build stuff and learn what you need to learn for those projects. Experientially, I can confirm this without a doubt. I had a lot more fun learning that way, too (with the help of GPT).
That’s not to say that there isn’t a place for courses in someone’s coding journey. My theory is that they’re most at the very start of learning to code, as supplementary knowledge to what you’re working on, and as a jumping-off point for learning any new discipline or category of knowledge.
For now, I’m going to proceed with learning to code via projects, until I feel I want to dive deeper into something like ML or crypto. I’ve already started taking a look at Andrej Karpathy’s incredible “Zero to Hero” series that includes the video “Let’s build GPT: from scratch, in code, spelled out.”
3) Is self-teaching using only online free resources a good way to learn?
Yes. The only thing I’ve paid for is access to GPT4 via Cursor, the fork of VSCode that includes GPT integrated into the code editor (currently, $20/month), and that’s been incredibly helpful. But even GPT3.5 (available for free) is fantastic, and reaffirms to me that the wealth of resources out there is incredible.
I plan to share the best resources I’ve come across in the past 5 years soon!
4) Learning in public
This has already proven its value. I was able to get a job without looking for one by sharing my progress in public.
I feel proud of past me for having taken the steps to lay my learning journey out there in public, at the risk of being judged. This was a difficult thing at the time (and can still be challenging). I’ve always been overly-perfectionist when it comes to putting parts of myself online, and this was an important hurdle to overcome.
5) The value of staying in one place, and routine
I burned out in May 2023, and I wrote about this in this thought piece/life update. I think a big contributing factor of the burnout was a result of moving around nonstop for months while trying to balance some kind of routine. To quote myself, in the span of two months I:
traveled to four different countries, traveled all over Bali with a friend from the UK, published 13 blog posts, completed 2 online courses covering 5 different coding languages, pseudocoded my first web app, ran over 150 miles (often in 100F+/38C+ degree weather), and ran a marathon.
I think I was distracting myself from the difficulty of the emotional turmoil I was going through as a result of the intense uncertainty across all dimensions of my life at that point, and moving past a recently-ended relationship. And that’s okay - it was useful to do so in that phase of my life.
But coming towards July, I wanted something different. I had an intense desire to do exactly the opposite of what I did during those months of travel. I wanted to stay in one place, and do the same thing every day. A routine.
So I did that. And I started making real progress on my coding/content/fitness journeys.
There is a lot of value in routine and consistency. When you travel, you’re trading away some of that value. There is a middle ground, "slow travel", where you stay in one place for somewhere between 1-6 months, and I'm open to that down the line. Based on what I've got planned for the near-future, I'd rather be closer to the far end of the stay-put vs. travel spectrum and stay in familiar, comfortable Bali.
III. So, what’s next?
2023 was chaotic and filled with spontaneity and a lack of planning.
2024 will be different. I want to mostly stay in one place, and it makes sense for that place to be Bali given my goals.
I’ll try to stick to this: spend 10-12 weeks working, in routine in one place, and then will take 1-2 weeks off to vacation.
I will structure my working periods as coding/testing ideas vs content sprints. My guess is 4-6 weeks of coding followed by 2-4 weeks of content, rinse and repeat.
As to what I’ll work on: I plan to start testing some fun ideas I’ve got. I plan to do it in a way that minimizes unnecessary engineering work, and I think that looks like:
- create a landing page
- run ads/organic marketing
- see my conversion rates. if promising:
- start building the solution
IV. Worries
Worry #1 - am I a “gpt-engineer”? 🥴
I’m worried about the staying power of what I’ve learned. Could I code effectively without an AI model like GPT helping on the side? I think I haven’t actually memorized that much coding syntax, but have done a good job of understanding the code I’ve written, even if a lot of it is a result of prompting GPT extensively.
Why I think this isn’t a big deal: I don’t think I really need to account for the eventuality that I won’t be able to have GPT to code with. These tools are here to stay, and I think I’m one of many developers using these tools to increase their effectiveness. On top of that, I understand my code well enough to prompt GPT correctly, and I tend to put in the effort to learn and then document what I don’t know.
Worry #2 - balancing it all ⚖️
My focus is currently split into more or less four primary buckets: freelancing, coding my own projects, creating content, and health/fitness.
All of these are significant activities that require a lot of attention. So of course, I’m concerned it’ll get tough to balance.
How I’m mitigating this: by reducing task switching as often as possible, freelancing time-effectively, and keeping to a routine to reduce complexity everywhere else in my life. It also helps that I'm not cooking for myself, as it's quite economical to use a meal plan here (I pay a company that prepares healthy, fresh food in bulk and sends it to me daily)!
Worry #3 - ideation 💡
I have plenty of ideas I want to test, but my worry is that they’re too "hand-wavy" and aren’t based on an observation of a real problem. I’m worried that I don’t have direct access at the moment to a source for many good ideas as a result of having many problems to solve: corporate America 🙂. In other words, I think that by working for a company, at some point you start to come across issues that exist either internally, or externally (with suppliers, third-party vendors, clients, etc). At the moment, I’m floating through the internet ether, coming across ideas here and there from some burst of creativity, but usually not from an easily-recognized problem.
The value of being in a corporate environment to source ideas is perhaps especially high when trying to come up with B2B software solutions. So I’m curious to see if I can come up with something valuable without having that environment to place myself in.
Not sure yet how I’m mitigating this concern, but it will likely have a combination of: asking friends who are in that environment, sleuthing through twitter, doing market research, pulling from my own experience, etc, to find problems to solve!
Wrapping it all up 🎁
I’m quite excited for this next chapter to start. I’ve decided that I’ll stick around in Bali for what I think will likely be most of 2024. I think it’s a source of comfort that’ll be important as I dive deeper into this experiment.
I’m most excited to start building and monetizing some ideas 🙂
I’ll have some write-ups and content on my social media channels (website, twitter, youtube, tiktok) regarding the chess analysis project (and more) soon. I’ve also started posting some day-in-my-life kinds of videos on instagram - check it out!
Thanks again for all of the support and love. Feeling very grateful per usual for the people in my life.
Talk soon! Ciao (for now).
*Apparently, “gallivanting” and “galavanting” are two accepted spellings of the same word. Bit of a “colour” vs ”color” kind of thing. According to the Australian Writers’ Centre (Center??): ““Gallivant” is considered the original and remains by far the most popular. But almost immediately, the variant “galavant” was used – this may be because the original Old French spelling was “galant”. Or perhaps it was influenced by the similarity of words like “gadabout” or even “Sir Galahad” during the 19th century.”