Jose Storopoli, PhD
The Road Less Travelled
Recently, I’ve moved my blog from Go and hugo towards Zig and Zine.
That made me revisit one of my favorites ideas: the road less travelled. It is a metaphor for taking the unconventional path, which can lead to a more fulfilling life.
What unusual roads have I taken that fulfilled me? Well, I can think of a few:
- Avoiding JavaScript like the devil avoids the cross
- Being a polyglot programmer, and getting used with managing memory and pointers. This means C, Rust, and Zig.
- Learning the fundamentals concepts that underlie computer science, math, and cryptography.
- Mastering and customizing my tools as needed. That’s why I use vim and the terminal for almost everything, instead of GUIs and VS Code.
- Writing a blog instead of posting on social media.
- Reading books instead of watching TV shows.
- Being a minimalist and a stoic.
- Being a privacy advocate and one of the early adopters of Signal, instead of WhatsApp or Telegram.
- Leaving the warm cradle of academia to work as a software engineer in startups.
Hercules at the Crossroads
Before diving into some of these roads, I’ll share the tale of Hercules at the Crossroads. This comes to us from the ancient Greek mythology, and it was a story that Socrates used to tell, reported by Xenophon in his Memorabilia.
When Hercules, the son of Zeus, was young and unknown, he was walking along a road when he came to a crossroads. He was met by two female figures.
The first was dressed in jewelry and was beautiful and alluring. The second was dressed in a simple robe and was plain. The first figure promised Hercules a life of pleasure and ease, she swore that if he followed her, all of his desires would be fulfilled and he would never taste unhappiness, suffering, or fear. The second figure promised Hercules a life of struggle and hardship, swearing that if he followed her, he would become the greatest hero of all time, and no rewards except those that came as a result of hard work; a journey fit for a god.
These two figures were the goddesses of Vice (Kakía) and Virtue (Areté). And they represent the moral dilemma that all of us face at some point in our lives. Will you take the easy path, the one that promises pleasure and comfort, or will you take the hard path, the one that promises struggle and greatness?
This is the essence of the road less travelled.
Avoiding JavaScript
I can go on and on about JavaScript. I think it is great for what it was designed for: making web components interactive in a browser.
However, when it escapes its boundaries, it can wreck havoc. This is because JavaScript is a mess. It was designed to be very lenient and forgiving, since we don’t want the browser to crash when a script fails. That’s bad UX for poor old grandma Lucrecia when she’s browsing cat memes on her 10-year-old laptop with Internet Explorer and Windows Vista.
It has a bunch of undefined behaviors and quirks that can lead to bugs. It is also very unintuitive and has a lot of gotchas. Just see the meme below:
This is exactly what you not want when coding your whole business logic. Imagine getting pwned and losing all your customer data or even your funds due to a JavaScript gotcha that you didn’t know about.
Another issue is that JavaScript is slow and memory-hungry. In contexts where performance is critical, and especially in startups, where the cloud bill is a concern, you don’t want to be running fucking JavaScript on the server.
So yeah, don’t use JavaScript outside of making flashy buttons and forms in a browser window.
Being a Polyglot Programmer
This is kinda easy to justify. If you only know how to use a hammer, everything looks like a nail. In a sense, you would want to learn multiple tools and languages, even if you just use the stupid hammer for everything. It will make you a better programmer due to the fact that you will be exposed to different paradigms, thinking styles, and problem-solving strategies.
As a bonus, you should learn at least a “systems language”, like C, Rust, or Zig, to understand how the computer works; and you should also learn a functional language, like Haskell, to understand how to reason about programs.
Learning the Fundamentals
Let me tell you a secret. There’s a type of knowledge that will always be true, given certain assumptions. Imagine that, you can always be right! Even if a judge somewhere wakes up on the wrong side of the bed. That knowledge is called mathematics.
The Euclidean geometry that you learned in high school? Yes, it is true and will always be true: here and in the Andromeda galaxy; today and in a million years. So you better learn it!
For computer science, this argument is almost the same. Except that the assumptions are more lenient. Assuming that computers are made of transistors and logic gates, follow a Von Neumann-ish architecture, and an Instruction Set Architecture (ISA) that is Turing-complete, then your computer science knowledge will always be true.
There’s a nice tale about when Von Neumann was asked, soon after the atomic bomb was dropped on Hiroshima, what he was working on, and if he was working on a new weapon. He kindly replied “No, I am working on something even more powerful: computers”.
Writing a Blog
In a world where everyone is gladly giving away their privacy and data for free (and sometimes even paying for) to proprietary social media platforms, choose an open and interoperable standard like RSS. This can be easily accomplished with a blog.
Also, writing is a great to organize your thoughts, and to share your knowledge with the world.
Reading Books
Do I need to say more?
Leaving the Warm Cradle of Academia
I really wanted to like Academia. It foster all the principles that I hold dear:
- The pursuit of knowledge.
- The sharing of knowledge.
- The freedom to think and to express your thoughts.
- The noble task of teaching and mentoring.
However, it also has its dark side:
- Dogmatism.
- Mediocrity.
- Inertia.
- Corruption.
Instead, unexpectedly, I found in some startups the same principles that I hold dear. Especially the ones that are focused on technology and innovation.
Conclusion
Drop the JavaScript. Learn Math and Computer Science. Own your tools otherwise they will own you. Read a fucking book. Organize your thoughts and share your knowledge. Search for places where you feel like the dumbest person in the room.
Find your road less travelled.