by Craig Muth
通过克雷格·穆斯(Craig Muth)
Xiki:一个开发人员寻求增强命令行界面的能力 (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.
我和朋友查尔斯一起坐在旧金山金门公园旁边的一家时尚咖啡馆里。 我们周围环绕着年轻的人们,他们在工作着昂贵的MacBook,还有从公园里徘徊的少量流浪者。
“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.
自从我决定从俄亥俄州搬到旧金山,花掉我一生的积蓄使我实现科技梦想已经过去了5年。 他看了一个KickStarter视频的草稿,这花了我6个月的时间和大量的金钱来赚钱。
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?
而且他并不是唯一一个有这种React的人。 视频中包含我和一匹马和一根香蕉一起跳河舞只会增加尴尬。 我怎么错了?
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.
回顾RubyConf2012。我在舞台上凝神飞奔,双手发汗。 有数百只眼睛凝视着我。 我的演讲刚刚结束,有人举起手臂问问题。
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.
再次倒带。 早在俄亥俄州的大学里,那个时代手机就挂在墙上了,岁月始于“ 19”而不是“ 20”。 我发现自己一个人在一个海绵混凝土建筑四楼的计算机实验室里。 没有窗户。 粉丝舒缓的嗡嗡声来自四面八方。 我们应该弄清楚如何仅使用键盘在这些小的黑色命令行窗口中进行编程。 我讨厌 真的很讨厌它。
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.
我在RubyConf的舞台上所做的事情表明了10年几乎是狂躁的对控制的追求的结果。 “为什么不让人们在命令行中键入任何内容 ,而不仅仅是命令?” 我吵架了
Like a search engine. I demoed browsing and editing a database by typing “database”, and controlling your web browser by typing “browser”.
就像搜索引擎一样。 我演示了如何通过键入“数据库”来浏览和编辑数据库,以及通过键入“浏览器”来控制您的Web浏览器。
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.
大学毕业后,我发现自己身处更高,狭窄的混凝土建筑中。 在辛辛那提的一家银行中,一位名叫拉胡尔(Rahul)的高管曾经站在我老板的身后,而我尝试了我设计的一项新功能。 错误可能意味着您阻止了10,000个人一小时进入他们的银行帐户。
“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.
我将真正的创造力投入到Xiki的开发中。 我将其用作我大部分职业的主要开发环境,并存储了所有笔记。 我会向所有愿意听的人炫耀我的最新功能。
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.
经过10年的开车去上班和开车回家后,那是2011年。我坐在妈妈家后面的甲板上,告诉她“我的朋友基思认为我应该搬到旧金山去。” 那是俄亥俄州夏天那些温暖的风沙沙作响的日子之一,使您忘记了冰冷的俄亥俄州冬季。 我告诉自己,不关心体育,宗教或电视节目会妨碍您在俄亥俄州结识朋友的机会。 具有讽刺意味的性格也没什么意思。
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告诉我程序员在那儿很酷。 甚至到女孩将追赶她们的地步。 我不相信他。 我一直坐在俄亥俄州,忘记了十年前给编码员提供了汽车作为招聘奖金。
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?
在接下来的五年中,我将大部分时间都花在旧金山附近的咖啡馆和黑客点上。 研究Xiki并试图说服人们使用它。 我喜欢工作和社交生活的融合。 就像我想象的那样,篮球运动员和一些政客都有。 如果您热爱并相信自己所做的足够,它仍然有效吗?
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.
我说服了一些与我紧密合作过的人来采用Xiki,并认为从那里开始它是下坡的。 事实并非如此。
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.
在一次失败的劝说会议中,一个人沮丧地站了起来,回到自己的笔记本电脑上。 当出现问题时,他曾尝试按退出键来取消。 在旧版本的Xiki中,您必须打开Emacs文本编辑器并在其中使用Xiki。 在Emacs中,逃避会使您陷入更多麻烦,而不是使您摆脱困境。 这将需要解决。
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.
一路上会有很多风风雨雨。 我在2014年成功运行了一个最初成功的KickStarter。 我不得不放弃一半的钱来买T恤,贴纸,费用,税金和制作视频。
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.
人们希望Xiki能够在终端机的正常提示下立即工作。
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.
人们想贡献他们用Xiki制造的超酷产品。 有些贡献不错,但不是很好,所以我拒绝接受。 我意识到我需要建立一个可以使人们提交新命令而不会成为瓶颈的存储库。 制作可以让人控制的工具将意味着我必须放弃控制。
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.
现在,我在这里观看了新的KickStarter广告系列视频,重点介绍了新的社交搜索版本。 听着查尔斯有礼貌地告诉我这很烂。
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.
我又花了六个月来反复地重做视频。 当人们告诉我“挑一件事并专注于它”时,我听了。 然后,“我一无所获。” 那么,“我得到的东西,但我不在乎”,最后“啊,没关系, 我得到。” 一位长期顾问甚至告诉我,这是他见过的最好的KickStarter视频。 很好,因为我的所有希望都集中在此。
Me Riverdancing with the banana is still in there. I wasn’t going to completely sell out :)
我和香蕉一起在河里跳舞 。 我不会完全卖光了:)