The netscape dorm

Here are some excerpts from my diary during the first few months of the
existence of Netscape Communications
(All Praise the Company), back when we were still called
Mosaic. Back when there were only 20 or
30 of us, instead of however-many thousands
of people there are today. Back before we had any
middle managers.

This is the time period that is traditionally referred to as “the
good old days,” but time always softens the pain and makes things look
like more fun than they really were. But who said everything has to be
fun? Pain builds character. (Sometimes it builds products, too.)

So you want to go work for a
Perhaps this will serve as a cautionary tale…

Tuesday, 26 July 1994, 4am.

I’ve been working here at Mosaic for a month and a half now, and I
haven’t been sleeping much, or even
going home very often.

Lou and
Rob spent all day today
building remote control
This was kind of annoying, since I and all the others were working out butts
off, and they were just screwing around all day. I wandered over to
Chouck‘s cube and said,
“so is this car thing annoying you?” He
reached his arms wide, scrunched up his face, and said “Only about
this much.” I nodded, and went back to my desk.

Ten minutes later he came over and asked, “So does it annoy you too, or
were you just wondering whether it annoyed me because I’m so easily
annoyed?” I said that it annoyed me, but probably a tiny bit less than
it did him.

At around 4pm, Lou was packing up and preparing to go home, when he
mentioned to me that
had called him in to his office and asked if he had enough work to
do. I’d been wondering that myself, so I asked, “Well, do you?” He said
that he had just been feeling really burnt out for the last few days, and
needed to relax. This is completely understandable, but I said that maybe it
would be better if he were to do his relaxing away from the office, instead
of doing it right in everyone’s face while they were working.

Marc wants me to be done with the Unix client in time for SGI to ship it
along with Irix 5.3. That means that it has to be rock solid in, like,
less than two months. I’ve got so little of the code written that I don’t
even have a sense yet of whether that’s even remotely possible; it’s all
over the floor. We’ve got bits and pieces, but I don’t see the big picture.
It’d be really easy to let him bully me into agreeing, but I don’t want to
miss; the stakes are too high this time, too many people are watching us
for us to be able to screw up at all…

Thursday, 28 July 1994, 11pm.

I slept at work again last night; two and a half hours curled up in a
quilt underneath my desk, from 11am to 1:30pm or so. That was when I woke up
with a start, realizing that I was late for a meeting we were scheduled to
have to argue about colormaps and dithering, and how we should deal with all
the nefarious 8-bit color management issues. But it was no big deal, we just
had the meeting later. It’s hard for someone to hold it against you when you
miss a meeting because you’ve been at work so long that you’ve passed out
from exhaustion.

Sunday, 5 August 1994, 5am.

I just got home; the last time I was asleep was, let’s see, 39 hours ago.
And I’m not even tired right now. I guess I’m on my second or third or
eighteenth wind. I only came home because I was worried that if I stayed
there any longer, I’d fall asleep at the wheel again. I didn’t want to stay
down there for another night, because I really need a shower at this
point; it was a hot day today, and Lou and I played some intense games of air
hockey last night that got me all sweaty and disgusting.

Wow, I must be tired — I just turned on the television, and MTV is
actually moving too fast for me to understand it.

I’ve had a sore throat and a cough for about a week now, but I haven’t
done anything about it, because I don’t have time. I think I’m keeping
myself from getting a cold by sheer force of will.

On friday, which is when I most recently woke up, I got to work at around
three, and had a ton of email waiting, all work related. And we had an
all-hands meeting 4pm, and everyone wanted to come talk to me at once before
then, so I was feeling really overwhelmed and behind. I mean, I had only
been away from the office for like seven hours! The meeting was another
mind-blower; apparently we closed some kind of OEM deal (I forget with who)
for like 600,000 seats of the client. Gag. I actually get the feeling that
our sales and marketing people know what they’re doing! I’ve never gotten
that feeling from them at any previous job. This is wild.

Six hundred thousand people is more than any software I’ve ever worked on
has come anywhere near. I’m completely terrified.

The company is finally putting a web server online soon, so one of the
content guys asked us to make home pages for
ourselves. I scribbled down a few of the weirder dreams I’ve had, and put
up my bookmarks. Maybe I’ll
have time to do something more clever later.

My hands have been really been hurting lately; I hope all this typing
hasn’t finally blown out my wrists. If I can’t type, my life is over. My
right hand especially is flaking the last knuckle of the
middle two fingers ache, as if they’re badly bruised. I guess it’s time to
figure out how to use our medical program. As if a doctor is going to tell
me something other than “stop typing so much.” Ha ha ha, that’s a good

A week or two ago we all sat around and tried to think up a name for the
client; we can’t call it Mosaic, because that’s the name of the company. The
had all kinds of silly suggestions like Cyber this and
Power that and blah-blah Ware. Then someone said something
about crushing NCSA Mosaic, and I blurted out “Mozilla!” Everyone seemed
to like that, so I think that might end up being the official name of the

There’s finally an Indy on my desk instead of a Sun4. This means that I
also have an IndyCam, so I hacked up a script to grab and save a frame of me
sitting there every five minutes. What have I’ve learned from this?

  • I bite my nails too much.
  • When I’m concentrating, I don’t look very happy.
  • After I’ve been here more than a day, time-lapse photography reveals
    my hair and skin getting progressively more shiny… We really need to get
    showers at the office.
Thursday, 11 August 1994, 2am.

I saw Ian today, for the first time in months. His first words were,
“Wow, you look like shit.” He says I seem really strung-out and twitchy.
I thought I had been doing ok! I got a full night’s sleep last night and
everything. I have no life. I never see any of my non-work friends, and I’m
wasting away my one and only youth. I ought to be out doing fun things and
active things, the kind of things I won’t be able to do when my mind and body
finally decay. But instead I’m stuck inside under fluorescent lights,
pushing bits around inside a computer in ways that are only interesting to
other nerds. I glanced at a movie listing and there are movies out that I
haven’t even heard of. How did that happen? That freaks me out.

I bought some wrist braces at a drug store, and I’ve been typing with
them for a couple of days. I don’t think it’s helping much; my middle finger
doesn’t hurt quite as much, but my ring finger is just as bad. This
job is destroying my body. This can’t be worth it.

Friday, 26 August 1994, 1am.

I’ve just read over some of my diary for the last few months, and man,
a lot of it is completely incoherent! It’s full of incomplete
sentences, made up words, random surreal imagery that I can’t even understand
let alone remember typing. Have I been typing in my sleep? I hope I don’t
sound like that in person. I wonder what my code must look like!
Oh well, it seems to work.

I left work at about 9:30, because Eric and Susan called and talked me
into going to see

Natural Born Killers
with them. I’d been at work for 31 hours,
with maybe 4 hours of sleep scattered in here and there while waiting for
compiles to finish, but they had already bought me a ticket for the 10:30
show, how could I say no? I said, “I’m exhausted, but you’re right, I need
see a movie.” Susan said, “are you sure? We could do this some other
time.” “No,” I said, “I’m burning twice as brightly, I have to do this
sort of thing.” It’s a corny Blade Runner reference, but it just popped
right out of my mouth. (I’m not sure I like the implications of it,

NBK was a completely amazing movie. I think it was very nearly
perfect. Little plot, very disjoint, and fascinating visuals every step of
the way. Every second in the first hour was beautiful, and most of the
second hour as well. It was pure ultraviolence, even more
over-the-top than

A Clockwork Orange
. I was grinning about it for hours, and Susan was
just she said she felt like she had been beaten about
the head for two hours. When we got back to their place she went rummaging
through their cabinets for alcohol, finally coming up with a bottle of
bourbon; “I need something to numb it down,” she explained.

Sunday, 28 August 1994.

Mozilla is actually starting to smell like a product; maybe we’re not
doomed after all. When I got to work today, the gang was sitting down to
Repo Man
on laserdisc. I heartily approve, and I didn’t even feel
that guilty for blowing off a couple of hours to watch it.

Lou is all stressed out because Kathy kissed him yesterday. I think he’s
nervous about dating the boss’s daughter. He’s all knotted up inside about
her; relationships will do that to you. But someone pointed out that lack of
sleep will do that to you, too. We had a long
talk about relationships today, where we traded war
and compared scars. Here’s a great
snippet of a conversation we had about one of his previous girlfriends:

    him: “…and she was really hung up about whether I found her attractive.”
    me: “Why was that?”
    him: “Well, once before we were going out, I told her that I didn’t
    find her at all attractive.”
    me: “Whaaaat?”
    him: “Yeah, well, I said I wasn’t attracted to her.”
    me: “Well which did you say? There’s a big difference…”
    him: “Well, I guess I actually said that she wasn’t attractive.”
    “But it’s true!”

He’s a real pro, that one. Fabio could take lessons.

Friday, 9 September 1994, 1am.

We sent a copy of Mozilla to SGI today, for a handful of people to beat
on. This the big moment when they decide whether we’re in or out, whether
they ship it with Irix 5.3, or tell us to get lost. Tomorrow they’re going
to do install an internal beta release on two thousand machines. I think
that as of today, maybe five people besides me have ever used the Unix

Oh, I just found out that my picture was in this month’s Wired, which has
a gushing
about us. I look like a complete dork. I can just hear
mom’s reaction: “What have you done to your hair? You look like a complete

Saturday, 17 September 1994, 2pm.

If I hear someone imitate Beavis and Butthead one more time…

Wednesday, 21 September 1994, 7pm.

Today we were having some argument in email about something or other, and
a while later
and I were chatting in person, and he said that he thought I’d been
picking on Lou a lot lately. I didn’t think I had been, so I sent this

    To: eng

    So, Aleks just said that he thinks I've been picking on Lou a lot lately.
    Well I just want to make it clear that I think you're all idiots, and I hate
    each and every one of you. I don't mean to single anyone out.

One of my friends asked me if any of my coworkers had had anything to say
about that, or if they were all just non-confrontational nerds who would
go home and whine at their friends about how difficult I am. I was
happy to report that my coworkers are far from non-confrontational, and
that we scream at each other all the time. It’s one of the few things that
makes this place bearable, that we’re able to vent. However, this wasn’t a
great example of that, since the only responses I got were a halfhearted
“fuck you too” sort of reply, and one that said, “you forgot to cross-post
that to”

I ate like a pound of goldfish crackers today. What was I thinking.

Saturday, 24 September 1994, 5pm.

We had one of those “we’re going to win big” meetings today, where
Jim and
wave their arms a lot and say “these are not the droids you’re looking
for,” and we all sit there and nod enthusiastically and grin and say “these
are not the droids we’re looking for.” I like those meetings, because
they’re so convincing. They make me feel like maybe I haven’t been wasting
my time. You need someone like Marc around to overcome the soul-sucking
blackness that sets in when you’ve agreed to impossible goals.

I’ve been working, trying to beat this accursed

client into shape,
and everyone else has been dipping into the corporate beer supply.
You know, I spend basically every waking hour with these guys, and I think
we get along remarkably well, considering, but it’s really starting to wear
thin. Add alcohol, and they all get Extra Special Annoying.


Well the kids went out to get drunk, or rather, more drunk.
I think they might have actually gone out to a strip club again.
How classy is that?


Oh good, the kids are back, and they are well hammered. None of them can
walk properly, and they keep bumping into the cubicle walls and making
everything on my desk shake. Since I’m not drunk, the impedance mismatch
makes it impossible for me to carry on a conversation with them, so I’m just
trying to block them out. But now they’re all playing networked
DOOM at top
volume, so in order to concentrate, I have to wear headphones with music on at
top volume, and even that doesn’t quite work. Since, as I mentioned, they
keep making the mistake of trying to walk, and they’re making all the shit on
my desk bounce around.

It’s a saturday night, and I’m in my cubicle surrounded by a bunch of
drunken farmboys from Illinois who haven’t
been more than two miles from our office in scenic
downtown Mountain View in four months.

My ears are going to be ringing after this. Fuck it, I’m going
(Check my ears are ringing.)

Wednesday, Tuesday, who the fuck knows.
Some time in September, really really late at night.

We’re doomed.

We’ve finally announced a public beta to the net, and there are loads of
bugs, and they’re hard bugs, sucky, hardware-dependent ones.
Some of our private beta testers crash at startup on some SunOS 4.1.3
systems, and I’ve got what seems like an identical system here and it doesn’t
crash. And scrolling text doesn’t work with the OpenWindows X server, though
it works fine elsewhere. And the cache is still fucked. We’re doomed.

And while agonizing about this on the way home at 1am on an empty
freeway, I forgot to keep an eye out for cops, and got a speeding ticket.
I was going 80, and he actually wrote me up for 80, the bastard.
Since that’s more than 20 over the limit, I think the fine print says
that that means I have to go to court. I
don’t have time for this shit!

Fuck fuck fuck fuck fuck fuck fuck.

Doomed doomed doomed doomed doomed.

I’m tempted to just stay home tomorrow. I’m so fucking burnt.
Existence is suffering.

We had another fashion shoot today, with about ten of us. We did it
outside at the civic center, and I think the photographer was pretty
annoyed at us. Nobody was very into it at all, especially

We’re doomed.

I’d work on my resumé, but I don’t even have anything new
to put on it yet, because we haven’t actually shipped anything.

I’m going to go home and cry myself to sleep now.

Friday, 7 October 1994, 6am.

We go live on the net in four days.

I no longer think we’re doomed. I think we’re going to rock all over.
It’s still pretty scary, though.

I went to the Halloween store that sprouted up around the corner, and
got a cool giant troll mask that I mounted on a cardboard tube next to my
cubicle door. It goes well with all the duct tape and grainy photocopied

Today there was a reporter here from the LA Times; she interviewed all of
us, and wandered around with Rosanne in tow, to do spin control. Rosanne was
really concerned about here finding any confidential info, so the whole thing
was kind of weird. From the questions she asked, we were guessing that it
was going to be another fluff piece about personalities. She seemed to be
digging for dirt, and the technical aspects have pretty much been beaten to
death; could anyone really be interested in writing about them again?

They took pictures. She said it would be out in a few weeks, either on
the front page of the business section, or the main front page. Yow.

CNN is coming in on monday to film a demo. CNN! Man.

was in an incredibly pissy mood today, worse than usual. I made
some joke about the fact that he doesn’t like having his picture taken and he
went ballistic.

Monday, 10 October 1994, 5pm.

Well today has been more than a little bit frustrating. The details
don’t really matter (what does!), but I’ve spent most of the day so stressed
out that my skull is rattling from the pressure of my
teeth grinding together. I feel like I have
finally exceeded my stress limits and am about
blow a gasket. But I can’t go home, because if I do, the world will end,
right? I’m trying to work, but every few minutes I have to stop typing and
make fists so tightly that my whole body shakes.

    Deep breathing. In. Out. In. Out. In. Out.

    BLAM BLAM BLAM!!!!! Aaaaaauuuuugggghhhhhh!!!!
    Cut the phone! Kill the dog!

Cubicles have no doors to slam. I’ve been alternately chugging
Coca Cola and Pepto Bismol. It’s not helping.

Some email from
says, “You are rapidly approaching meltdown. Get out now.” She told me
that I need to go Coot Chasing. Apparently there’s an open space preserve
north of Shoreline and SGI, and at the end
of a twisty road is a lake. Around this lake are hordes of little black
birds called coots. They run around on the mud flat on little
half-webbed feet, and when you chase them, their feet make a phup phup
noise. And if you get them really agitated, they oink, like
little black feathered piggies.

“It is,” she promises, “the funniest fucking thing.”

Coots know how to live. I wish I were a coot.

Mr. Wizard, I think I’d rather be a coot than a hacker. Yeah, sure,
every now and then a giant pink-haired ape would come
running after me and chase me into the lake, but really, could it be that
much worse? I’d have a tiny little brain and
wouldn’t be expected to worry about anything.

They bought us Indian food for dinner today. I hate Indian food.
I think I’m getting an ulcer.

Wednesday, 12 October 1994, 11am.

It is two days later and I am still at the office. I did not go
and chase coots. There is too much work
to do. I want to die.

We’re releasing Mozilla 0.9 today. I just finished doing the builds on
six different Unix
platforms, and of course, we discovered
show-stoppingly disastrous bugs at 9am. We have fixed the bugs, and
stared at the changes long and hard, and I’m in the process of rebuilding all
of the binaries now. They should be done in about a half an hour, and they
will be on the FTP server less than an hour after that.

This is, of course, insane.

Laura says that if we’ve only got an hour between building and shipping,
then I must have been right all along: we are in fact well and truly doomed.
She says that if I leave now, I can probably get a good head start before
they realize that I’m gone.

I forwarded her “well and truly doomed” paragraph to my manager, and
he came in and yelled at me.


I’m still here. We got a slight reprieve, as everyone agreed to delay the
release to midnight. People started testing my new builds at 1:50pm, which
is when I went to sleep.

    At 2pm, I was awakened.

    By screams.

    As the building’s power went out.

    I am not making this up.


The power came back on, and we put the damnable program on the
server, and two million people all started attempting to download it at once,
before we had even posted the
announcement message
, and we’re done done done and I suppose now
we can all live happily ever after.

We sat in the conference room and hooked up the big TV to one of the
Indys, so that we could sit around in the dark and watch the FTP download
logs scroll by. jg hacked up an
impromptu script that played the sound of a cannon shot each time a download
successfully completed. We sat in the dark and cheered, listening to the

Four hours later, the Wall Street Journal was delivered, and it already
contained an article describing what we had just done. “Clients aren’t
where the money is anyway,” ran the quote from Marc.

I’d go home now if I thought I could drive there without
dying, so instead I’m going to curl up
under my desk again and sleep here.

Maybe we’re not doomed; people on the net are talking about Mozilla
with all caps and lots of exclamation points. They’re actually excited
about it…

I’ve just noticed that there’s still purple ink on the inside of my
right wrist spelling the word VOID: the hand-stamp
from a concert that I went to last week.
I left work, went to the show, and came back to work immediately afterwards.
I’ve been here since.

Original URL:

Original article

Attention Shoppers: Internet Is Open (1994)

At noon yesterday, Phil Brandenberger of Philadelphia went shopping for a compact audio disk, paid for it with his credit card and made history.

Moments later, the champagne corks were popping in a small two-story frame house in Nashua, N.H. There, a team of young cyberspace entrepreneurs celebrated what was apparently the first retail transaction on the Internet using a readily available version of powerful data encryption software designed to guarantee privacy.

Experts have long seen such iron-clad security as a necessary first step before commercial transactions can become common on the Internet, the global computer network.

From his work station in Philadelphia, Mr. Brandenburger logged onto the computer in Nashua, and used a secret code to send his Visa credit card number to pay $12.48, plus shipping costs, for the compact disk “Ten Summoners’ Tales” by the rock musician Sting.

“Even if the N.S.A. was listening in, they couldn’t get his credit card number,” said Daniel M. Kohn, the 21-year-old chief executive of the Net Market Company of Nashua, N.H., a new venture that is the equivalent of a shopping mall in cyberspace. Mr. Kohn was referring to the National Security Agency, the arm of the Pentagon that develops and breaks the complex algorithms that are used to keep the most secret electronic secrets secret.

Even bigger organizations working on rival systems yesterday called the achievement by the tiny Net Market a welcome first step.

“It’s really clear that most companies want the security prior to doing major commitments to significant electronic commerce on the Internet,” said Cathy Medich, executive director of Commercenet, a Government and industry organization based in Menlo Park, Calif., that hopes to establish standards for commercial transactions on the Internet and other networks.

The idea is to make such data communications immune to wiretaps, electronic eavesdropping and theft by scrambling the transmissions with a secret code — a security technique known as data encryption.

While Commercenet and other organizations have been working to develop a standard for the automated data encryption of commercial transactions, the small band of recent college graduates who formed the Net Market Company in New Hampshire appear to be the first to implement such technology successfully.

Tests of Commercenet’s encryption system, which is based on algorithms — mathematical formulas — developed by RSA Data Security Inc. of Redwood City, Calif., are expected to begin this fall.

Commercenet hopes to create an easy-to-use industry standard for protecting Internet transactions.

For now, Net Market’s approach is available to the limited number of computer users who have work stations running the Unix software operating system and a sophisticated Internet navigational program called X-Mosaic. The data encryption program is called PGP, for Pretty Good Privacy, which is based on the same RSA algorithms used by Commercenet.

PGP is available free, but it requires technical expertise to download it from the Internet. But within a few months commercial versions of PGP are expected to be available for personal computers using the Windows and Macintosh operating systems, which comprise the vast majority of computers in North America. Security Breaches Reported

The widespread adoption of standard data encryption tools cannot come too quickly for many Internet entrepreneurs, who hope to foster new levels of commerce on the rapidly growing network.

Alarmed by increasing reports of security breaches on the Internet, many people and businesses are reluctant to transmit sensitive information, including credit cards numbers, sales information or private electronic mail messages, on the network.

But the use of standard data encryption software, which scrambles messages so they can be read only by someone with the proper software “key,” has been hindered by a combination of Government regulations and software patent disputes.

Experts say the PGP encryption software used by Net Market is at least as robust as the so-called Clipper encryption technology that the Clinton Administration has been pushing as a national standard. But unlike the Clipper system, the software keys for opening and reading PGP-encrypted documents is not controlled by the Government.

A version of PGP for individuals is available free through the Massachusetts Institute of Technology, but users must retrieve it from an M.I.T. computer through the Internet.

Organizations wanting to use PGP for commercial purposes must obtain it on the Internet from a company in Phoenix called Viacrypt, a maker of computer security software and hardware tools. Prices for PGP begin at $100 a copy. A Browsing Feature

One achievement of the young programmers at Net Market was to incorporate PGP into X-Mosaic, the software that many Internet users rely on for browsing through the global network.

X-Mosaic is a software tool that allows the users of Unix computers to browse a service of the Internet called the World Wide Web, where companies can post the electronic equivalent of a glossy color brochure with supporting sales or marketing documents.

In the case of Noteworthy Music, the record retailer that leases a “store front” in Net Market’s Internet computer, a shopper can look at color pictures of CD album covers.

Mr. Kohn, a 1994 honors graduate in economics from Swarthmore College, came up with the idea for Net Market during his junior year abroad, at the London School of Economics. There, he persuaded an American classmate, Roger Lee, to join his venture.

Mr. Lee, who graduated from Yale this past spring with a degree in political science, is president of the company. For technical expertise, they recruited two other partners from Swarthmore, Guy H. T. Haskin and Eiji Hirai.

The four men live upstairs in the house in Nashua, commuting downstairs each morning to run the business. Because of the pressures of running the system and debugging the software, they rarely venture outside, even though they have a backyard swimming pool.

“We don’t get much sun,” Mr. Kohn said, “but we’re down to a case of Coke a day.” ‘An Important Step’

Although Net Market has been selling various products like CD’s, flowers and books for several months on behalf of various merchants, yesterday was the first time they had offered digitally secure transactions.

“I think it’s an important step in pioneering this work, but later on we’ll probably see more exciting things in the way of digital cash,” said Philip R. Zimmermann, a computer security consultant in Boulder, Colo., who created the PGP program.

Digital cash, Mr. Zimmermann explained, is “a combination of cryptographic protocols that behave the way real dollars behave but are untraceable.”

In other words, they are packets of worth that have value in cyberspace, the same way dollars have value in the real world, except that they have the properties of anonymity, privacy and untraceability. Many details remain to be worked out, Mr. Zimmermann said.

For now, Mr. Brandenberger, despite his historic transaction yesterday, will be paying with plain old dollars, when he gets his credit card bill. And sometime today, the Sting CD will arrive by fairly conventional means — shipped FedEx from the Noteworthy Music warehouse in Nashua.

Photo: A system from the Net Market Company allows credit card shopping on the Internet in total privacy. Net Market’s chief executive, Daniel M. Kohn, foreground, worked at the company’s office in Nashua, N.H., yesterday. Behind him, from left, were the president, Roger Lee; program developer, Mark Birmingham; senior program developer, Guy H. T. Haskin, and chief information officer, Eiji Hirai. (MacArther S. McBurney for The New York Times)

Original URL:

Original article

scm_breeze – enhancing your git cli workflow


Streamline your SCM workflow.

SCM Breeze is a set of shell scripts (for bash and zsh) that enhance your interaction with git. It integrates with your shell to give you numbered file shortcuts,
a repository index with tab completion, and many other useful features.


Adding a range of files, and pressing Ctrl+X, C to commit:

File Shortcuts

SCM Breeze makes it really easy to work with changed files, and groups of changed files.
Whenever you view your SCM status, each modified path is stored in a numbered environment variable.
You can configure the variable prefix, which is ‘e’ by default.

Git Status Shortcuts:

‘ls’ shortcuts:

These numbers (or ranges of numbers) can be used with any SCM or system command.

For example, if ga was your alias for git add, instead of typing something like:

$ ga assets/git_breeze/config* assets/git_breeze/

You can type this instead:

But SCM Breeze aliases ga to the git_add_shortcuts function,
which is smart enough to expand integers and ranges, so all you need to type is:

And if you want to add all unstaged changes (files 1 to 10):

(Note that ga will also remove deleted files, unlike the standard git add command.
This behaviour can be turned off if you don’t like it.)

You can also diff, reset or checkout a file by typing:

You can use these shortcuts with system commands by passing your command through exec_scmb_expand_args
(default alias is ‘ge’):

$ echo $e4
# => assets/git_breeze/
$ ge echo 4
# => assets/git_breeze/
$ ge echo 1-3
# expands to echo $e1 $e2 $e3
# => assets/git_breeze/ assets/git_breeze/

Other shortcuts

SCM Breeze adds a number of aliases to your shell. Use list_aliases to view all the aliases and their corresponding commands.
You can filter aliases by adding a search string: list_aliases git log

There’s also a git_aliases command, which just shows aliases for git commands. You can also pass in additional filters, e.g. git_aliases log.

Keyboard bindings

Some of my most common git commands are git add and git commit, so I wanted these
to be as streamlined as possible. One way of speeding up commonly used commands is by binding them to
keyboard shortcuts.

Here are the default key bindings:

  • CTRL+x c => git_add_and_commit – add given files (if any), then commit staged changes
  • CTRL+x SPACE => git_commit_all – commit everything

The commit shortcuts use the git_commit_prompt function, which gives a simple prompt like this:

(When using bash, this commit prompt gives you access to your bash history via the arrow keys.)

And if you really want to speed up your workflow, you can type this:

This sends the HOME key, followed by git_add_and_commit:

Repository Index

The second feature is a repository index for all of your projects and submodules.
This gives you super-fast switching between your project directories, with tab completion,
and it can even tab-complete down to project subdirectories.
This means that you can keep your projects organized in subfolders,
but switch between them as easily as if they were all in one folder.

It’s similar to autojump, but it doesn’t need to ‘learn’ anything,
and it can do SCM-specific stuff like:

  • Running a command for all of your repos (useful if you ever need to update a lot of remote URLs)
  • Update all of your repositories via a cron task

The default alias for git_index is ‘c’, which might stand for ‘code’

You will first need to configure your repository directory, and then build the index:

$ c --rebuild
# => == Scanning /home/ndbroadbent/code for git repos & submodules...
# => ===== Indexed 64 repos in /home/ndbroadbent/code/.git_index

Then you’ll be able to switch between your projects, or show the list of indexed repos.

To switch to a project directory, you don’t need to type the full project name. For example,
to switch to the capistrano project, you could type any of the following:

$ c capistrano
$ c cap
$ c istra

Or if you wanted to go straight to a subdirectory within capistrano:

$ c cap<TAB>
$ c capistrano/<TAB>
# => bin/   lib/   test/
$ c capistrano/l<TAB>
$ c capistrano/lib/
# => cd ~/code/gems/capistrano/lib

Or if you want to go to a subdirectory within the ~/code directory, prefix the first argument with a /:

~ $ c /gems
~/code/gems $

Linking External Project Design Directories

When you’re creating logos or icons for a project that uses git,
have you ever wondered where you should store those .psd or .xcf files?
Do you commit all of your raw design files, or does it put you off that any changes to those files
will bloat your repository?

Here were my goals when I set out to find a solution:

  • I wanted a design directory for each of my projects
  • I didn’t want the design directory to be checked in to the git repository
  • The design directory needed to be synchronized across all of my machines

The simplest way for me to synchronize files was via my Dropbox account.
However, if you work with a larger team, you could set up a shared design directory on one
of your servers and synchronize it with rsync.

1) Create and configure a root design directory

I created my root design directory at ~/Dropbox/Design.

After you’ve created your root design directory, edit ~/.scmbrc and set root_design_dir
to the directory you just created.
You can also configure the design directory that’s created in each of your projects
(default: design_assets), as well as the subdirectories you would like to use.
The default base subdirectories are: Images, Backgrounds, Logos, Icons, Mockups, and Screenshots.

After you have changed these settings, remember to run source ~/.bashrc or source ~/.zshrc.

2) Initialize design directories for your projects

To set up the design directories and symlinks, go to a project’s directory and run:

If your root directory is ~/Dropbox/Design, directories will be created at
~/Dropbox/Design/projects/my_project/Backgrounds, ~/Dropbox/Design/projects/my_project/Icons, etc.

It will then symlink the project from your root design directory into your project’s design directory,
so you end up with:

  • my_project/design_assets -> ~/Dropbox/Design/projects/my_project

It also adds this directory to .git/info/exclude so that git ignores it.

If you use the git repository index,
you can run the following batch command to set up these directories for all of your git repos at once:

git_index --batch-cmd design init

If you want to remove any empty design directories, run:

And if you want to remove all of a project’s design directories, even if they contain files:

3) Link existing design directories into your projects

If you’ve set up your design directories on one machine, you’ll want them
to be synchronized across all of your other development machines.

Just run the following command on your other machines after you’ve configured the root design directory:

This uses your git index to figure out where to create the symlinks.
If you don’t use the git index, the same outcome could be achieved by running ‘design init’
for each of the projects.

Contributing tools / scripts

If you have any awesome SCM scripts lurking in your .bashrc or .zshrc,
please feel free to send me a pull request.
It would be cool to make this project into an oh-my-zsh for SCMs.

git clone git:// ~/.scm_breeze
source ~/.bashrc   # or source ~/.zshrc

The install script creates required default configs and adds the following line to your .bashrc or .zshrc:

[ -s "$HOME/.scm_breeze/" ] && source "$HOME/.scm_breeze/"

Please run update_scm_breeze to fetch the latest code. This will update SCM Breeze from Github,
and will create or patch your ~/.*.scmbrc config files if any new settings are added.


The uninstall script removes the following line from your .bashrc or .zshrc:

[ -s "$HOME/.scm_breeze/" ] && source "$HOME/.scm_breeze/"

SCM Breeze is configured via automatically installed ~/.*.scmbrc files.
To change git configuration, edit ~/.git.scmbrc.

Each feature is modular, so you are free to ignore the parts you don’t want to use.
Just comment out the relevant line in ~/.scm_breeze/

Note: After changing any settings, you will need to run source ~/.bashrc (or source ~/.zshrc)

I know we grow attached to the aliases we use every day, so I’ve made the alias system completely customizable.
You have two options when it comes to aliases:

1) Configure and use the provided SCM Breeze aliases

Just tweak the aliases in ~/.git.scmbrc. You can also change or remove any keyboard shortcuts.
These aliases also come with tab completion. For example, you can type gco to tab complete your list of branches.

2) Use your own aliases

In your git.scmbrc config file, just set the git_setup_aliases option to no.
Your existing git aliases will then be used, and you will still be able to use the numeric shortcuts feature.
SCM Breeze creates a function to wrap the ‘git’ command, which expands numeric arguments, and uses hub if available.

A few aliases will still be defined for the central SCM Breeze features, such as gs for the extended git status,
and ga for the git add function.

If you already have an alias like alias gco="git checkout",
you can now type gco 1 to checkout the first file in the output of SCM Breeze’s git status.


If you use your own aliases, SCM Breeze will not set up bash tab completion for your aliases.
You will need to set that up yourself.


You just need to set the option: setopt no_complete_aliases (oh-my-zsh sets this by default).
Zsh will then expand aliases like gb to git branch, and use the completion for that.

SCM Breeze lives on Github at

Please feel free to fork and send pull requests, especially if you would like to build these features
for Mercurial, SVN, etc.


Original URL:

Original article

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d bloggers like this: