In “More Personal Computing” I wrote about trying to figure out the common thread in my computing interests. But why do I need to analyze them? Most people are content just being interested in things (like Doctor Worm) without having to figure out why.

Well, first, I’m introspective, so thinking about why I do what I do is just something I’m going to do. (See, I did it again!)

But also, there’s something I’ve been looking for in my interests that I’m not getting. After a while I feel discontent with what I’m spending my time on, and I try to think through if I’m doing it wrong or if I need to look elsewhere for my interests.

I think I’m a person who is wired to look for a cause to be part of. Growing up Mac, we already had a sense that we were part of a movement to make things better. Since then, movements I’ve considered myself part of at times include:

  • Ruby on Rails
  • Test-driven development and agile development
  • Ember.js
  • React Native
  • Malleable systems

These have all had impacts in various ways. But they’ve all led to disappointments as well. Generally, the technology doesn’t fully live up to what was promised, and the adoption of the technology is limited.

Part of the problem is that I believe that better is better, but it turns out this is not correct. So what’s a software idealist like me to do?

Something I’m exploring that’s seeming to help is separating out multiple goals I have:

  1. I want a job building high-quality software and helping others do the same.
  2. I want to scratch my own itch, building the software I want to use today.
  3. I want community, to connect with folks who share values of mine.

The ideal in my head would be satisfying all of these in the same way: to get paid to write malleable systems along with a large community of people who care about it as well. Unfortunately, there isn’t currently a big market for malleable systems, and I’m neither the marketer or entrepreneur to change it. It’s hard to even get a community together on the topic; there are online communities but that’s about it. If I wanted to satisfy all three of these goals in the same way, I would be disappointed.

Instead, I’m satisfying them separately. For 1, I currently work at Test Double, a consultancy that values the craft of software. I mostly write React code, with some React Native and Ruby on Rails in the mix. React is not an idealistic library (it’s created by a megacorp, after all). But it’s good enough for most of the web apps I write. While building in these technologies I’m able to exemplify and encourage the agile development practices I value. I even wrote a book about it.

For 2, I created Riverbed, which lets you build mini-apps in real time that let you track and interact with data the way you like. It’s a free app that’s in a public beta right now, so anyone can use it. But even if no one else ever uses it, it still helps me, and makes me happy that I’ve created it. A key was ensuring I built it in such a way that I didn’t need a large community or to be paid full-time to be able to maintain it.

For 3, I find communities in a few different ways. Mastodon allows me to assemble a list of the people who talk about things that are interesting to me. (And since it’s a social network, not social media, I can even see those people’s posts–imagine!) Test Double’s Slack serves as a great community. I also keep in touch with folks from Big Nerd Ranch, the previous consultancy I worked for. I’m part of a local Atlanta meetup Atlanta Computer Club, focused on what’s new and interesting in computers. After learning about the Atlanta Historical Computing Society at VCF East, I’m hoping to connect with them soon.

This blog is a way to try to create community too! I’m participating in #100DaysToOffload as a way to share about more of my interests in longer form than I do on Mastodon. Who knows if I’ll end up connecting with folks as a result, but if nothing else it lets me process and share my interests, which is helpful for me.