by Craig Muth

Xiki: one developer’s quest to turbocharge the command line interface

I was sitting with my friend Charles in a trendy cafe next to Golden Gate Park in San Francisco. We were surrounded by young-ish people working on expensive MacBooks, and a smattering of drifters who had wandered in from the park.

“I would still never use this,” he told me, and my heart sank into my stomach.

It had been 5 years since I’d decided to move to San Francisco from Ohio and burn through my life’s savings to make my tech dreams a reality. He’d watched a draft of a KickStarter video that had taken me 6 months and a chunk of money to make.

And he wasn’t the only one with that reaction. That the video included me Riverdancing with a horse and a banana only increased the awkwardness. How had I gone so wrong?

Rewind to RubyConf 2012. I was staring out from the stage with a racing heart and sweaty hands. There were hundreds of eyes staring back at me. My presentation had just ended and arms were being raised for questions.

The room was bright, with coffee-smelling air. But I didn’t care. Things were going well.

There had been several gasps from the crowd at the right times, that sounded like “gaaaw!” The first person I called on said, “I don’t have a question. I just wanted to say that was awesome.” It was pure adrenaline for someone like me. If I’d died right then, life would have been worthwhile.

Rewind again. Back in college in Ohio, it was the era when phones were things on walls, and years started with “19” instead of “20”. I found myself alone in a computer lab on the 4th floor of a cavernous concrete building. There were no windows. The soothing hum of fans came from all directions. We were supposed to figure out how to program in these little black command line windows, using only the keyboard. I hated it. Really hated it.

The command line is like learning to speak Russian. It seems impossible from the outside.

I don’t know when my attitude switched. But to the extent that a nerdy kid can fall in love with a piece of technology, I did. Here was a world that could be utterly controlled, in a way that the unforgiving real world could not be. I loved this control. Needed it. I spent hours customizing everything I could.

What I was doing on the stage at RubyConf was showing the result of 10 years of an almost manic quest for control. “Why not let people type anything in the command line, rather than just commands?” I argued.

Like a search engine. I demoed browsing and editing a database by typing “database”, and controlling your web browser by typing “browser”.

I discovered that if you let people edit and interact with everything, commands could act more like apps. Without giving up what’s great about the command line. You could create commands in minutes. You could even let people use their mouse

After college I found myself in loftier, narrower concrete buildings. At a bank in Cincinnati, a tall executive named Rahul once stood behind my boss and I as we tried out a new feature I’d designed. Mistakes could mean you blocked 10,000 people from getting to their bank accounts for an hour.

“This better work,” was all he said.

It worked, and he sulked silently back to his office.

I bought a house and two cats.

I put my real creative energy into developing Xiki. I used it as my main development environment for most of my career, and to store all my notes. I would show off my newest features to whomever would listen.

After 10 years of driving to work and driving home, it was 2011. I was sitting on the deck behind my mom’s house telling her “my friend Keith thinks I should move to San Francisco.” It was one of those warm-wind-rustling-in-the-trees Ohio summer days that make you forget about icy Ohio winters. I told myself that not caring about sports, religion, or TV impedes your chances of making friends in Ohio. Nor does having a sardonic personality , was more to the point.

I half suspected she would cry and beg me to stay. “Go,” she said. And I went.

I’d stayed in San Francisco for two weeks to try the city out. Keith had told me programmers were considered cool there. Even to the point to where girls would run after them. I didn’t believe him. I’d been sitting in Ohio oblivious that coders had been given cars as hiring bonuses 10 years earlier.

Keith took me to Coffee Bar. It was full of people programming and hacking. They weren’t embarrassed Dungeons and Dragons types. They rode skateboards. They would look at your screen and say “that looks cool, what are you working on?” For the first time since elementary school I didn’t feel like I should apologize for being somewhere. On the flight back, I had the weird sensation that I was leaving my home.

Over the next five years I’d spend most of my time in cafes and hack spots around San Francisco. Working on Xiki and trying to convince people to use it. I liked the mix of work and social life. Like I imagined basketball players and some politicians have. If you love and believe in what you’re doing enough, is it still work?

There would be days of sitting in coffee shops with friends and chatting and hacking alongside them, then grabbing dinner and drinks. I would head somewhere and email people, telling them to show up if they wanted. Usually at least one or two would, sometimes more. I was in geek heaven. I started sending out tweets to connect with new people.

I applied to do a presentation at one conference, and was invited to speak at two more. I was guests on a couple podcasts.

I’d convinced a few people I’d worked closely with to adopt Xiki, and thought it would be downhill from there. It turned out to be otherwise.

In one aborted persuasion session, a guy stood up in frustration and went back to his own laptop. He’d tried hitting the escape key to cancel when something went wrong. In that old version of Xiki, you had to open the Emacs text editor and use Xiki from within it. In Emacs, escape gets you into more trouble instead of getting you out of it. That would need to be fixed.

People wanted a slick installer. But that would take a lot of work, and was an unexciting thing to spend my time on.

There would be many ups and downs along the way. I ran an initial successful KickStarter in 2014. It passed, but barely. I had to give up half the money to cover T-shirts, stickers, fees, taxes, and creating the video.

It was easy to get people excited initially. But their expectations went way up when you asked them to adopt something.

People wanted Xiki to work right from the terminal, right at their normal prompt.

It sucked, but I realized I would have to forgo the fun stuff for a while, and rewrite pretty much the whole thing.

I would dedicate many months to this, as my savings continued to prove themselves highly flammable. But I still loved it more than anything I’d ever done with myself.

One foggy day found me at a favorite hack spot — a table in the back of a cafe that was half bookstore. A girl who seemed European had come along with some friends who’d joined. I was in a chatty mood and was (tactfully, I thought) ignoring her saying she wanted to focus on her work. She was studying for some test or other. She told me in an adorable accent that I was “crossing the line”. I wasn’t sure if she was joking or not, but I teasingly interrupting her a few times more. She would become my girlfriend and later my wife.

People wanted to contribute the cool stuff they’d made with Xiki. Some of the contributions were good but not great, so I resisted accepting them. I realized I would need to make a repository that would let people submit new commands, without being a bottleneck. Making a tool that gave people control would mean I’d have to give up control.

One day I had an idea. Could I make the command line act like a full on search engine? Where the search results came from the internet, and anyone could contribute to them.

It would take three tedious years to hunker down and do all the hard stuff that people wanted. I had to take a break from the pie-in-the-sky features that were the most fun to work on.

Now, here I was with my new KickStarter campaign video highlighting the new social search version. And listening to Charles politely telling me it sucked.

Argh.

I believed down to my core that I had something worthwhile. Fixing the command line. It could only be that I wasn’t adequately getting the message across.

I spent six more excruciating months redoing the video over and over. I listened while people told me “pick one thing and focus on it.” Then “I don’t get the one thing.” Then “I get the thing but I don’t care,” and finally “ah, okay, that I get.” One long-time adviser even told me it was the best KickStarter video he’d seen. Which is good, because all my hopes are now centered on it.

Me Riverdancing with the banana is still in there. I wasn’t going to completely sell out :)