Living Software

As I've been working through my thoughts on creating apps and software, I've realized that software is pretty unique. Most software feels so fluid and flexible. It's relatively easy to make changes. For me, releasing something feels pretty anticlimactic. I put something out there, but now I need to keep taking care of it. There's new features to add, bugs to fix, compatibility issues to address when operating systems or browsers change. Software feels alive to me in a lot of ways. And I've been struggling with this feeling.

One of my other hobbies is bookbinding. The process is pretty simple—basically gather materials, make materials the right size, put materials together1. Once a book is put together, and the glue has dried, that's it. You don't go back to that book and make changes to it after it's all assembled. It's pretty satisfying, and in stark contrast to software.

I love making apps and websites, but I'm finding it very cathartic to make something that I can be done with, that I don't have to return to. I'm not sure if there is a way to get this feeling with software or not. Maybe it's just me, but I just do not feel like I can be "done" with any software I make. I would like to figure out a way, but it's kind of a Catch-22. The fun part is making something, so I don’t want people to use what I make because I don’t really want to support it. But I don’t want to go through the effort making something if no one is going to use it. I could do better at setting expectations and say "no updates, use as is", but most people don't want to use something that will never get updates. Then I'm back to not wanting to make something no one will use. I keep going in circles.

I think a lot of this is just me and my expectations for myself. As a developer, I completely understand when other developers are not constantly pushing out updates or sunset an app, and I think a lot of people are just as understanding and forgiving. But as a user it can feel frustrating when a tool you depend on is not getting bug fixes or goes away completely. I don't want to make people feel like that, and honestly, it feels like the only solution is to not make anything.

This is what is going through my head right now. Might figure it all out one day.

  1. Yes, this is an oversimplification. ↩︎

Trying to Find Balance in Side Projects

I just removed my two iOS apps from sale on the App Store. I hadn't updated either of them in over a year. It felt bad having them hanging out there, wanting to update to them, but having trouble finding the time, but more importantly, the motivation to do it. It honestly felt like a sigh of relief to remove them. But, it was a hard decision.

Releasing something is often just the beginning, and I seem to always forget this. By releasing these two apps, it felt like a promise I was making to the world that I would keep working on them and making them better and better, especially since one of the apps was paid. I have a strong sense of duty and obligation to the things I build and put out in the world. I think this is good in a lot of ways—in my opinion, it's an indication that I care about what I make—but it can be exhausting.

It really drags me down when I know there's a bug, or a requested feature out there that I haven't addressed yet. And, it turns out that I'm kind of a people pleaser1. If some stranger requests a feature, I expend too much energy making it happen. And for what? Another couple dollars or another star on GitHub? I have a lot of trouble putting stuff out there and not doing everything I can to make it perfect for everyone. I do my best to be responsive and accommodating. I have a hard time saying no. Even when I'm not actively working on it, I'm thinking about how so-and-so requested this feature or reported a bug and it's just hanging out there.

With everything I have built and released, it comes to a point where it just doesn't feel fun for me anymore. At first it feels like an exciting new adventure. Then, one day, it doesn't. It feels like a burden. A collection of tech debt waiting to break. A pit of responsibility I dug myself into.

I don't really have any answers or lessons learned here. It just feels pretty bad to feel burnt out by the things that used to excite you. It also feels bad knowing that I have abandoned a lot of projects out of fear that people would actually start using them and expect more from them.

Maybe if there's a lesson to be learned, it's to not hang onto things longer than you need to. It can feel bad for so many reasons to give up on a labor of love, but perhaps that's what you need to do to give yourself time, motivation, and energy back. I'm still grappling with all this. I'm perfectly fine giving up on things I haven't finished, but it feels so different when it's something that is already out there, being used by people. I'm proud of proud of what I've built. There's a surprising amount of emotion and feelings mixed into code I've written and shipped, and it's hard to let that all go sometimes.

Anyway, I'm glad I removed those apps from the App Store. I can breath a little easier now. Now, I just need to decide what to do with other current projects, and how to handle any future projects. I kinda want to just shut everything down and start fresh. Feels like maybe I shouldn't, but who knows. At least turn off GitHub notifications and take a break for a while.

  1. As I was reflecting on what to do with my side projects, this realization was a surprise to me. Probably should not have been. But hey, always time to learn something new about yourself. ↩︎

How I Journal

I recently hit a 365 day streak in Day One. I've never been very good at keep a journal, so it felt pretty good! I found a couple things that helped journaling stick for me:

  1. Keep it short.
  2. Treat it like a private Instagram.

Keep it short

I don't write everything that happened in the day. That would be boring to read any way. I usually just write a sentence or two about something that stuck out. And that's it. I just had to give myself permission to leave most of the day out.

Treat it Like a Private Instagram

Any time I take a picture and think "I should post this to Instagram", I don't. Instead, later that night, I put it in Day One and write a little about it. It's just for me. By ignoring Instagram, I feel like I can be more present, and also spend zero mental energy thinking about everything involved with sharing a photo or video. Win-win.

After I made those two changes, I'm now pretty excited to write in my journal each night. I know I'll be glad I did in the years to come.

Bookmarks in Obsidian

For a while, I tried to utilize Twitter's bookmark feature to save interesting links, helpful tidbits, and whatnot. I quickly realized that it was almost impossible to go back and find what I had saved. Around the time I started looking for other options, I was also diving deeper into Obsidian. After some fights with Shortcuts on iOS, and creating my own Obsidian plugin, I now have a quick way to add tweets and other links to notes in Obsidian from the iOS share sheet.

The shortcut gets the url, asks for a note, wraps it in a markdown link, and prepends it to the appropriate file. The shortcut does some other things like look in my bookmarks folder and present me with a list of files to insert the link into1. It can also create a new file if I want to start saving links related to a new topic.

With the links now in Obsidian, I can use the search to easily find them again. One downside, since I'm not saving the actual content of the links, search is dependent on the notes I attach. I'm not always great at coming up with good I also wanted a way to easily scan through my links. That's why I made the Simple Embeds plugin. It automatically replaces supported links—like Twitter and YouTube—with embeds instead. This way, when my laziness fails me, I can quickly scroll through my bookmark notes and see the actual tweet or video.

My iOS bookmarks file
My iOS bookmarks file
My iOS bookmarks file with Twitter links replaced with an embed
My iOS bookmarks file with Twitter links replaced with an embed

So that's my bookmarking system with Shortcuts and Obsidian. Works pretty well for me.

  1. The shortcut does require Toolbox Pro because that was the easiest way I could find to sort my list of files. ↩︎

Finishing What We Start

I was listening to a podcast this morning and they talked briefly about how so many of us start way more projects than we finish. It got me thinking. How do you even know if a project is finished? And does it even matter if we don't "finish" what we start? The answer is that it depends1.

What does it even mean when we say "I want to finish this app?" So many things we make cannot ever be finished2. Software is constantly needing to be updated and changed. Even buildings need maintenance and renovations. Books mostly don't change after they are published, but there are different editions that fix typos and things like that. I think we need to stop talking about finishing things. Might just be semantics, but it is probably better to be more specific—publish the novel, release version 1.2, get the certificate of occupancy for the house. This perspective has given me a chance to go into new projects with clearer and more realistic expectations.

I am constantly starting new projects. I have created countless new Xcode projects, ran npm init hundreds of times, and even started a couple books and screenplays3. Most do not survive beyond its initial creation. Of my dozens of Xcode projects, 2 have ended up on the App Store. Out of the bazillion websites I've started, I think 3 are live. I used to feel really bad about starting all these and not "finishing". I felt like a bad software developer because I did not have all these side projects generating passive income for me4. Secretly, I was hoping each project I started would let me quit my job and retire early.

Now, my attitude is to start projects to learn. Once I feel like I have learned what I wanted to from a project, I can abandon it without losing any sleep at night. This keeps the stakes low, and also gives me a low pressure environment to see if a project has legs. If it does, then I can adjust my intentions and push the project a bit further.

It is unhelpful to expect ourselves to "finish" every project we start. Experiment and explore instead. Everything we learn and everything we start builds on each other. All that knowledge and experience will come in handy when it really matters.

Now go start a bunch of stuff and see what sticks.

  1. I've been thinking about all this in the context of personal projects. Things change when other people are involved. If you're driving your friend to the airport, you should probably finish that and drop them off. If you started building a bench and you promised your spouse that you would finish it, you probably should. Unless abandoning the project and just buying a bench would make everyone happier. But that gets into a whole area of morals and ethics I don't want to dive into right now. ↩︎

  2. This sentence originally read: "I don't think anything can ever be finished." Then I thought about running. If you complete a race, that is done, finished. You cannot go back and change that race after it is complete. So I guess I'm talking about things we make, and not really things we do. If that makes sense... ↩︎

  3. Who hasn't? ↩︎

  4. Sure would be nice though! ↩︎