Scripting News

Scripting News, the weblog started in 1997 that bootstrapped the blogging revolution...

Writing code in an outliner, day 1

With Fargo out and with its evolving connection with JavaScript, I hope more people will be coding with an outliner.

I've been doing it pretty much exclusively for about 20 years, but I don't think I've ever written anything about the style considerations that come from using a structure-aware editor to code.

One of the big debates is where do the curly braces go?

For example:

if condition {



That's the way I do it.

I don't think the placement of the left brace is controversial. Why spend a line with a structural symbol if you don't have to.

But there's a long-standing argument about the right brace.

I always put it at the same level that the curly braces contain.

The advantage is this: When I want to move the block of code, I can just drag the headline with the condition in it. No need to select two lines.

That, and it feels conceptually right to me. If possible every construct should take up one line when collapsed. There are some examples where this isn't neat, in if-then-else, try-catch and switch statements. That's life, nothing's perfect.

Update: If you want to see what a less trivial bit of code looks like in an outliner, expand this headline. It's the JavaScript source for a Find command in the Fargo outliner.

8/31/2013; 1:14:27 PM


There was a myth when I was starting out in software that it was possible to write a business plan and have that be what you actually end up doing. You'd plot out a series of steps, and put each one on a numbered slide. Around slide 8 or 9 was one called Exit, where you showed your potential investors how they were going to get rich. Everyone understood that these slides were lies, but you had to act like you believed them. In a way they were buying your ability to bullshit, and everyone knew it.

Even though I never raised VC, I did manage to get a bit of money from angels, launched a company, and zigged and zagged through growth and setbacks, tried one idea out then another, until finally we hit on a winner, bet heavy on it, got lucky and sold out. Our investors did get rich. But the way they got rich had nothing to do with what we told them when we were starting out.

Some days VCs will tell you they invest in ideas, other days they say they invest in people. I was told a few months ago by a young VC, with a straight face, that your idea pretty much has to be a bullseye for something they've already decided they want to do. A few weeks earlier a partner at the same firm told me that they invest in people, and don't give a shit about the idea. Neither is true. Or both. I have no clue.

Whatever investors say, the truth is you win by having a great vision and have the right personal qualities to make it win. Intelligence, drive, curiosity, flexibility, salesmanship, doggedness, all are important qualities. You have to care that people like you, but at the same time, you'll piss a lot of people off, and that can't stop you. Most important, you have to be unable to visualize failure. There's a lot of bullshit floating around these days how failure is good. It's not good. If you're the kind of person who people should invest in, failure should not be a possibility. Even if they fire you, you won't leave. Even if there's no money, you won't quit. If you have to go to board meetings alone, so be it. You. Will. Not. Fail.

But that said, you cannot proceed as if your plan is sacred, because every step you take will teach you so much, that will be what your next moves are based on. Winning is the goal, not realizing your plan. And winning is not a linear thing. You should see your product as a cloud of ideas. Put down a marker in one place, ship it, see how the people respond to it. If that doesn't work, put a marker somewhere else, but still close to your idea, ship, listen. If that works, continue to invest there. Keep putting down bets until one hits.

To do this you have to have good intuition about the product, which means you yourself must be a constant, dependent user of the product. Programmers who think they understand users but are not one themselves are worthless. CEOs are even worse. I was told once by the CEO of a company I was working for that he's a market of one, and his opinion of the product didn't mean a thing. Even though I was very young I knew this was wrong. A year later the company, which was a market leader in its class, was gone.

Most important do not see your progress as a line. It's not. Linear thinking may be good in Dilbert-like companies, where sticking your neck out is a good way to get your head chopped off. But if you're navigating a competitive market filled with unknowns you can't plot a fixed line through that kind of fog. You have to feel your way through it, and in order to do that you have to have a feel for the product, its users, and where the value is.

8/31/2013; 10:55:11 AM

It's even worse than it appears. © 1997-2013 Scripting News, Inc.