The prevailing rumor about me is that I am a Contrarian (80% true, I love arguing for the sake of it) and a Hipster (60% true, I do inherently place more value on things that are not popular). The truth is that I’m actually just an Aquarius, but that doesn’t get you very far when most of your friends are hard-logic STEM types.
However, building an entire business around my desire to be a Contrarian Hipster would be stupid. I’m not out to bet my life savings and career (and maybe most importantly, my youth) on some vain desire to argue and Look Cool on The Internet. Besides, everyone who knows me also knows that I’ve almost entirely quit what most people consider to be The Internet, given that I never shut up about it.
To counteract such accusations, I want to go through most of the major philosophical-by-way-of-technical decisions I’ve made for my company. You may agree with them, you may not; all I hope to communicate to myself, and the people who know me, is that I’m trying to do the right thing for all of us.
So let’s start with a base assumption for a generic new software company—with a little twist at the end—and see how and why I want to change it up.
However, building an entire business around my desire to be a Contrarian Hipster would be stupid. I’m not out to bet my life savings and career (and maybe most importantly, my youth) on some vain desire to argue and Look Cool on The Internet. Besides, everyone who knows me also knows that I’ve almost entirely quit what most people consider to be The Internet, given that I never shut up about it.
To counteract such accusations, I want to go through most of the major philosophical-by-way-of-technical decisions I’ve made for my company. You may agree with them, you may not; all I hope to communicate to myself, and the people who know me, is that I’m trying to do the right thing for all of us.
So let’s start with a base assumption for a generic new software company—with a little twist at the end—and see how and why I want to change it up.
JavaScript? Clojure.
There’s something in between these two colloquialisms: “it’s about finding the right tool for the job” and “different strokes for different folks”. Both of them annoy me on their own. “Right tool for the job” seems to imply needing a variety of different tools to diversify in any small way, while “different strokes” chalks up very real-feeling differences in efficiency and ergonomics to individual taste. Which, y’know, whatever, but I feel like both are dismissive of how choosing most tools actually works.
In search of a good middle ground, I’ve glommed onto one crazy-common question tossed around the Effective Altruist community: “what are you optimizing for?”
JS is the number-one language in the world right now, for a variety of very valid reasons. Python is nipping at its heels (or overtaking it, depending on your source) for another set of valid reasons. But let’s consider for a moment what most software teams are optimizing for:
In search of a good middle ground, I’ve glommed onto one crazy-common question tossed around the Effective Altruist community: “what are you optimizing for?”
JS is the number-one language in the world right now, for a variety of very valid reasons. Python is nipping at its heels (or overtaking it, depending on your source) for another set of valid reasons. But let’s consider for a moment what most software teams are optimizing for:
- Ability to easily hire and train new devs
- Minimize risk on un-industry-proven tech
- Already has libraries that do whatever compliance thing the managers want
- Ability to ask Stack Overflow when an individual dev doesn’t know how to do something rote
All of those parameters are valid in an enterprise development shop (though I heavily question the premise of an enterprise dev shop). It’s also, poetically, where tools like GitHub Co-Pilot shine. But it’s not what small, indie shops should be optimizing for at all:
- Ability to foster and ultimately leverage ninja-tier skills among an unchanging small group of passionate hackers
- Gain the advantage by using bleeding-edge (or otherwise overlooked) tech to ship faster and better than corpos
- Roll your own libraries and aggressively modify frameworks to solve your own problems with wicked elegance
- Ability to ask a vibrant, welcoming community complex questions about patterning your entire project
There are other ways in which priorities will clash. Enterprises prefer Separation of Concerns (SoC) over Locality of Behavior (LoB). Enterprises often care about readability and testability, leading to verbose, heavily-edge-cased code, while small shops value elegance and maintainability, which leads to small codebases with easy-to-understand flow, even if some edge cases are sacrificed and a few processes are more manual.
TypeScript, Java, C#, C++, and partially Rust have absolutely geared their feature set towards enterprise or large-project development. However, there are mainstream languages that also skew pretty well for small teams and solo devs—Ruby, Go, C, and PHP. Oddly enough, modern JS and Python straddle the line, but end up being rough at scale for a bevy of well-documented reasons.
TypeScript was my jam for a short time, but I quickly grew tired of its verbosity and sheer amount of boilerplate. I was then attracted to Go (based on my systems background) and found it to be very pleasant, but I sensed that there might be a more flexible way than Go’s relative rigidity. Ruby took me by storm for a few weeks, and I still quite like a lot of what I saw, though its particular breed of syntax is confusing to me, even if I do love the pure power.
After a brief flirtation with Haskell (she’s a little much for my smooth brain), I plopped into the Lisp camp after developing an addiction to Paul Graham’s essays. It took all of a week and a half of Scheme / CL toying to learn that this silly parenthese genre was the one for me. And that’s more or less how I came to Clojure, the current love of my life.
In a parallel future, I think I could’ve easily also been happy with Elixir or Ruby, but Clojure is where we ended up, and it’s everything I’ve been optimizing for (and more).
- Clojure is unusually expressive, consistently clocking in at lowest LOC in various rewrite benchmarks
- Clojure is stable, but the ecosystem is modern and powerful, usually among the first to implement theory, along with forgotten superpowers (the REPL)
- Clojure doesn’t have a Rails, but does have many libraries and innovators that help you tailor needs per application with exacting precision
- The Clojure community is warm, friendly, and ruthlessly professional. It is absolutely the best place to have real discussions about software design that I’ve encountered.
Beyond that, Clojure also has an implementation that compiles to JS (CLJS), allowing for multi-paradigmatic programming across backends, frontends, and mobile applications to a degree that no other language (except probably JavaScript itself) has achieved.
It’s a clear winner for my parameters. It might also be a winner for yours.
Working to live? Living to work.
It’s been a tough year. I think I can admit that, now. With some distance from the ups and downs, it’s easier to put my ego aside and say, honestly, that I struggled through 2022.
I hit two dark places this year. The first time, in early January, was likely chemical, but after I got back on track, I found an unforeseen confidence that allowed me to be refreshingly honest with both myself and those close to me about my gender identity. It’s a breakthrough that I’ve needed for a long time, and even still I feel bolder and more self-assured about who I am and how I fit in.
That same boost of energy also caused me to reckon with my current career ambitions. I had to get real about how stifled and frustrated I actually felt—and realize that maybe it didn’t have to be that way at work. So I did the craziest thing possible: quit my job with very little savings, and threw myself into unknown waters with only an inkling of a plan.
And then, of course, I floundered.
I woke up six months later, tremendously in debt, flat broke, and on the verge of getting evicted. There’s a point when you start to get the feeling that it’s time to quit, and then there’s the point where the world forces you to quit. And maybe I could’ve strung it together with side gigs and moving back in with my parents. But undoubtedly, I had no choice but to change some major component of my course.
This story doesn’t have a happy ending, yet. I went back to my old job and have been trying to use my newfound experience and perspective to make things better around there. A lot of the same systems that frustrated me at the beginning of this year are still there. But by being away from them for so long, I’m learning new ways to work with these political systems, or at least cope with them in ways that are less destructive to my mental.
But the sidelining of my own company did bring on another wave of darkness. Here I had this beautiful thing, this idea, that I’d poured so much of myself into, and even though I knew I could still keep on (and ultimately have ended up) working on the side… it felt like killing that dream. Like I let it die. And that took a toll on me. I’ve never cared about anything I’ve done so much.
Life is not necessarily a clean narrative. Which is maybe why it‘s so hard for me to understand, sometimes. I like narratives. And I want my narrative to be the one I want, where all my ideas are proven to be Good Ideas and I stand triumphant and content in the middle of a self-sustaining, profitable business that has succeeded in making me and my friends happy and rich.
From a narcissistic perspective, I do like to think that this story is worth telling, even at this point. Maybe there are little Logans out there who need to know that this does happen. And maybe I’ll never reach them, but now at least I’ll be able to look back and remember this time where things were not easy.
There’s a dominant opinion among those I know, that their job is a check, hopefully they like it, but that there’s more to life than work. And, yeah, to some degree I agree, but I’ll also ask—don’t you feel most alive when you’re working on something you believe in? Isn’t it in those moments of music, of art, of exploration, of bold action, that we feel ourselves truly living? Why can’t we feel that way as we work? Perhaps it is not so bad to Live to Work. I certainly miss it. More and more every day.
I hit two dark places this year. The first time, in early January, was likely chemical, but after I got back on track, I found an unforeseen confidence that allowed me to be refreshingly honest with both myself and those close to me about my gender identity. It’s a breakthrough that I’ve needed for a long time, and even still I feel bolder and more self-assured about who I am and how I fit in.
That same boost of energy also caused me to reckon with my current career ambitions. I had to get real about how stifled and frustrated I actually felt—and realize that maybe it didn’t have to be that way at work. So I did the craziest thing possible: quit my job with very little savings, and threw myself into unknown waters with only an inkling of a plan.
And then, of course, I floundered.
I woke up six months later, tremendously in debt, flat broke, and on the verge of getting evicted. There’s a point when you start to get the feeling that it’s time to quit, and then there’s the point where the world forces you to quit. And maybe I could’ve strung it together with side gigs and moving back in with my parents. But undoubtedly, I had no choice but to change some major component of my course.
This story doesn’t have a happy ending, yet. I went back to my old job and have been trying to use my newfound experience and perspective to make things better around there. A lot of the same systems that frustrated me at the beginning of this year are still there. But by being away from them for so long, I’m learning new ways to work with these political systems, or at least cope with them in ways that are less destructive to my mental.
But the sidelining of my own company did bring on another wave of darkness. Here I had this beautiful thing, this idea, that I’d poured so much of myself into, and even though I knew I could still keep on (and ultimately have ended up) working on the side… it felt like killing that dream. Like I let it die. And that took a toll on me. I’ve never cared about anything I’ve done so much.
Life is not necessarily a clean narrative. Which is maybe why it‘s so hard for me to understand, sometimes. I like narratives. And I want my narrative to be the one I want, where all my ideas are proven to be Good Ideas and I stand triumphant and content in the middle of a self-sustaining, profitable business that has succeeded in making me and my friends happy and rich.
From a narcissistic perspective, I do like to think that this story is worth telling, even at this point. Maybe there are little Logans out there who need to know that this does happen. And maybe I’ll never reach them, but now at least I’ll be able to look back and remember this time where things were not easy.
There’s a dominant opinion among those I know, that their job is a check, hopefully they like it, but that there’s more to life than work. And, yeah, to some degree I agree, but I’ll also ask—don’t you feel most alive when you’re working on something you believe in? Isn’t it in those moments of music, of art, of exploration, of bold action, that we feel ourselves truly living? Why can’t we feel that way as we work? Perhaps it is not so bad to Live to Work. I certainly miss it. More and more every day.
It’s not all doom and gloom. My relationship with my Day Job has improved over the past month. Lately I’ve been finding really good quality time to spend doing my Real Job. And I’m taking multivitamins again, which, given my diet, probably have a non-trivial effect on my health and attitude. And I’m reading, learning, building, paying bills, saving money, and re-orienting myself, hopefully so I can come back stronger than ever.
But these ideas are just hypotheses. Waiting to be tested, some ideas eternally resonant, some just washing away like tears in rain. So hopefully, maybe, I’ll be able to keep testing them in small ways.
Because my company is my thesis statement. And its success will be my proof.
But these ideas are just hypotheses. Waiting to be tested, some ideas eternally resonant, some just washing away like tears in rain. So hopefully, maybe, I’ll be able to keep testing them in small ways.
Because my company is my thesis statement. And its success will be my proof.