1232 words
~6min read

Failing Upwards Again

August 13th 2024

This story begins 3 months after the birth of my first child where the world, and my perspective of it, was suddenly quite different than it had been. Free time became a precious commodity with so many new responsibilities. It was also less than two weeks after the birth I got laid off for the first time in the 4th round of layoffs in a year. Suffice to say, life was not routine and I was looking for some normalcy as well as a way to sharpen my skills which for me usually involves building some sort of app.

Part of the cosmic weirdness going on was the imminent total solar eclipse which I’m sure you heard about. I planned a trip up to New Hampshire and Vermont to go see it since the last one in South Carolina I saw was amazing.

Solar Eclipse 2024

During the trip one of the ideas that had been on my list for a little while kept turning over and over in my head like an illithid tadpole (except less gross). Excited by idea, can’t get it out of my head. What if I make the terminal easier to use and more beginner friendly? I’ve always shied away from using the full power of the terminal because of the mental burden of all the different commands (which are not the same on every system of course) and all the different command arguments. There’s got to be a better way for people like me who aren’t some Dennis Nedry terminal expert with 28 tmux splits across 6 monitors open and scrolling the matrix.

The features start flowing through my head:

  • Amazing autocomplete with all command arguments listed out
  • Outputs separated out into sections for each command so it’s easier to tell where they start and end, with quick actions to filter, copy, and save as favorite
  • Hovering over lines in the output to see the time difference in each step of long running commands
  • Search crowd-sourced commands for common operations with complex commands
  • Built in display upgrades for common commands like ls and tools to easily calculate folder size and modify permissions so you have even fewer commands to remember
  • And on and on…

I made a quick mockup of what I pictured and sent it around to a few friends to get feedback. About half said they didn’t really feel the need for a better experience since they didn’t use the terminal much, but the other half were interested and thought it had potential.

Initial BreezyTerm mockup

At this point I start searching to survey what the options are. I find a bunch of different options but they all seem focused on different features that don’t change the core terminal experience. Except for one I find mentioned in a reddit thread: Upterm. Now this was actually close to what I’m thinking with it’s autocomplete, prettification of JSON outputs, and showing failed commands in a different color. But very prominently shown on the github page is the banner showing the project has been archived since 2019 since it’s developer tragically passed away. With the nearly 20k stars as validation there’s demand and nothing I can find doing what I want I’m gung ho to get started and own the category before someone else comes along and works on this awesome idea.

Time to Build#

I dive into learning electron and getting the basics set up. Shout out to Electron Vite for a lot of the basics with HMR setup and easy config, before I switched to it my head was spinning from the different config and bundling between the node main process and the renderer. As usual at the beginning of a project it feels like one step forward, two steps back getting the fundamentals set up and trying different approaches. Learning electron’s IPC (and getting it working with TS nicely), trying different window spawning for different tabs, and upgrading to Svelte 5 (still RC at time of writing but it’s great) all took a good chunk of time.

The months roll by but I get little bits of time to work on the project between daddy duty and starting a new job. I port a bit of the upterm code but most of the time it’s more hassle than it’s worth since it’s got a number of bugs and is on a really old version of electron that works differently. The day it’s stable enough to use it as my main terminal feels really great and helps prioritize what’s important to do next.

Time to Promote#

Things are coming together, I figure it’s a good time to switch from feature development to initial promotion and getting the word out. So after a bit more time spent getting theming to a point I’m happy with I spin up the marketing site BreezyTerm.com with a really sweet theme preview effect I knew I had to get working when I saw it on DaisyUI’s site.

BreezyTerm site theme previews

Working “late” again one evening I was searching around for what’s out there and landed on the AppSumo developer tools page and had the distinct feeling of “I really hope there’s not some tool in here that I’ve never heard of before that does exactly what I’m doing”. I get to the bottom of the list and nothing’s even close to what I’m doing so I have a sigh of relief.

The next morning, I start search more things like “easy to use command line”, “developer friendly terminal”, etc, and somehow come across this terminal for js devs blog post by Josh Comeau who I’m familiar with through his excellent course and other posts. A third of the way through the post in an aside there’s this:

I’ve also just started experimenting with Warp, a modern terminal built for speed and user experience.

I click on the link, and cue the heart sinking.

Warp is doing pretty close to what I want to do, and they’ve got a 4 year head start, and they’re vc funded, and they’ve got 30+ devs working on it, and it’s written in rust. During the day, I’m wracking my brain thinking of ways to compete. The best angle I could come up with was plugins or on price but later when I went to explore more I found out they offer it for free… I also searched their GitHub issues to see what they were struggling with and if there was an angle there. They are not without problems of course but nothing stood out as something I could leverage, only people pointing to yet another terminal doing similar things: https://www.waveterm.dev/. Whoo, double idea validation!

Now that it’s been a few days and I’ve been through the 7 stages of grief, I’ve come to terms with ending the project. As always, the positive note with a touch of melancholy (DMaj7) is that I learned tons of stuff along the way by pushing myself:

  • Better understanding of how terminals/pty/shells work together and what each does,
  • Electron architecture and IPC
  • Svelte 5
  • Virtual lists
  • And how complex some programs CLI’s are with tons of options and subcommands

Moral of the story, search your heart out when starting a project to get a good idea of what you’re going up against and figure out what your competitive advantage is.

Time to try something new!

Want the inside scoop?

Sign up and be the first to see new posts

No spam, just the inside scoop and $10 off any photo print!

comments powered by Disqus