1/24/2011

01-24-11 - Blah Blah Blah

I'm reading "Creation" now and one tidbit is that Pythagorus believed that beans contained men's souls. A while ago I read a bunch of Ghandi, and one thing that struck me was Ghandi's bizarre emphasis on homespun clothing and spinning your own cotton (the other thing that struck me is that Ghandi was kind of a dick, but that's a rant for another day). Newton believed that God mediated gravity and that any attempt to explain it physically was not only foolish but sacrilege. It's strange to separate the man who can believe in some utter nonsense from the man who is quite reasonable and intelligent, and it just seems so odd to me that so many people can have both aspects in them.

Having ideas is fucking easy. People love to say shit like "I had the idea for Facebook two years before it came out, I could be rich!". Big fucking whoop, I'm sure tons of people had that idea (obviously Myspace had that idea, as did ConnectU, etc.). Ideas are fucking easy, I have a million ideas a day. The hard thing is identifying the ideas that are the really good ones, and then making the decision to go for them. Anyone who's smart and creative has ideas, but we're afraid to go for it, or we don't believe in it enough to take a risk, or whatever. I see lots of people who sit on the sidelines and make retarded comments like this ("I had that idea! I'm so smart!"), but there are also plenty of businesses that have made their fortune and falsely think it was because of their "great ideas" (in general the ability of businesses to be un-self-aware and not understand why they are successful is astonishing).

Working on software tools that enhance my own computing experience is incredibly satisfying. The things that I've done in the last few years that please me most are my NiftyPerforce replacement, my window manager, autoprintf, my google chart maker, my bitmap library, etc. things that I use in my coding life to write more code. It's like being a metal worker and spending your time making tools for metalworking. It's incredibly satisfying because you use these things every day so you get to have the benefit yourself. Paul Phillips talked about the "exponential productivity boost of writing software for yourself" ; in theory there is an exponential benefit, because if writing software tools makes you X% more efficient at writing software tools, you can write more to help yourself, then even more, etc. I believe in practice that it is in fact not exponential, but I'm not sure why that is.

There is, however, an interesting non-linear jump in tool making and process enhancement. The issue is that what we do is somewhat art. You need inspiration, you need to be in the right mindset, you need to be able to play with your medium. When the craft is too difficult, when there's too much drudge work, you sap the vital juices from your mind, and you will never have a big epiphany. If you spend some time just working on your tools and process, you can make the actual act of creation easier and more pleasant for yourself, so that you come into it with a totally different mind set and you have different kinds of ideas. It might seem more efficient to just knock out the work the brute force way, but there is something magical that happens if you transform the work into something that feels natural and fun to play with and experiment with.

Things I want to avoid : dumb TV, booze, sugar, surfing the net, web forums, lying on the couch. But god damn, when you cut all those things out, life is hard. When night time rolls around and you're tired and bored, it's hard to get through the dark hours without those crutches. My real goal is to spend less time on the computer that's not real good productive time.

It's depressing trying to manage your investments in a down-market period. Despite the fact that we're in a mini-bubble false recovery at the moment, I believe that stocks will performly badly for the next 10 years or so; if you can beat inflation during this period you are doing well. I believe that there is very little skill in most "business" ; if you happen to start a company during an up-swing in the economy, you will do well and think you are a genius, if you do it during a down-swing you will do badly (but still probably think you are a genius). In particular, if you are lucky enough to be able to run something with big leverage during a general market up-swing, you basically just get to print free money. It's not that you were some brilliant real estate developer (or whatever), it's just that you put big money into the market when all boats were rising.

12 comments:

Sam said...

Hey, can you tell me more about the window manager and the NiftyPerforce replacement? :)

cbloom said...

"Hey, can you tell me more about the window manager and the NiftyPerforce replacement? :)"

Well, the NiftyPerforce replacement is just my own build of Nifty ; I wrote about it a bit previously. The big win for me is that it behaves well even when I'm disconnected from the P4 server, as often happens when I'm working from home and didn't VPN or whatever.

The window management is two apps. One is this little old thing "winmove" I wrote that does various window moves (left half, maximize, center, etc) that I put on hot keys (this part is old). The big win though is RunOrActivate. It doesn't seem like a big deal, but I set up keys like ctrl-alt-W = RunOrActivate firefox and shift-alt-W = launch new instance. It's really made a big difference in being able to grab whatever app I want. I only ever use 4 or 5 programs, so now they all come up at will.

Fabian said...

"I believe in practice that it is in fact not exponential, but I'm not sure why that is."
Brooks has a good explanation of this in his 1986 essay "No Silver Bullet".
He differentiates between "essential" difficulties in software engineering (i.e. actually solving the problem) and "accidental" difficulties (all the other stuff that gets in the way - not part of solving the problem, just the stuff that slows you down: manual processes, slow turnaround times, etc.). The point is that with enough time spent on tools+workflow you can reduce the accidental difficulties close to zero; you now have an environment that lets you completely focus on the thing you want to focus on, but you still need to solve the problem.

Biggest thing is keeping all interruptions below the "flow-breaking" threshold. If it takes me 2 seconds to compile+get results, I can happily keep going at it all day. If it's 10 seconds, I'll slowly get more and more frustrated over the course of a day. And if it's >30 seconds, I'll probably tab to my Browser or Mail client, get distracted all the time and it just sucks.

Sam said...

"If it's 10 seconds, I'll slowly get more and more frustrated over the course of a day. And if it's >30 seconds, I'll probably tab to my Browser or Mail client, get distracted all the time and it just sucks."

This is so true. Back home we generally try to keep turnaround times down (for both art and code) and I feel pretty productive; we don't have excessive compile or link times. At the moment though I'm working in another studio's Unreal code base and everything feels sooooo slow. Add some debug spam to a script (since you can't debug on the consoles), re-cook, maybe then make some code change, compile, link (even debug takes forever), and by the time I'm actually running the game, I've been in my browser for 15 minutes.

cbloom said...

I feel like at some point your start running into the limits of your own mind's speed.

Like say my turnaround time is 10 seconds. By the time that happens, I already have the ideas of the next things I should do. So I work on my tools and I cut that time down to 2 seconds. Now sometimes I'm not ready to do the next thing and I just wind up sitting there for 10 seconds anyway.

And I think this happens in even more subtle ways. You can do a bunch of work to increase your productivity, but then you will subconsciously automatically do something to hurt your productivity. Like you will take up a side project, or start doing a podcast, or go out womanizing, or whatever it is that takes your concentration away from your main task, because I feel like there's some human aversion to thinking too many thoughts on the same topic in too little time.

Fabian said...

"I feel like at some point your start running into the limits of your own mind's speed."
Yep, that's where the "essential difficulty" part starts taking over. But that's totally fine. The point is that stalling because you're waiting for the computer or because you need to divert attention to some manual process is frustrating; stalling because you need to think is not.

The big win in writing your own small productivity tools is that it's enjoyable work that makes your remaining work more enjoyable. Even ignoring productivity, bringing this positive feedback cycle into an activity you spend half your waking time on during the week is huge from a quality of life standpoint.

"You can do a bunch of work to increase your productivity, but then you will subconsciously automatically do something to hurt your productivity. Like you will take up a side project, or start doing a podcast, or go out womanizing, or whatever it is that takes your concentration away from your main task"
I wouldn't call that hurting your productivity, you're just branching out :). Programming by itself is a rather lopsided activity; it doesn't give you much physical, emotional or social stimulation. Either you bring those aspects into your work somehow (which means less drifting off) or you get that stimulation elsewhere. Either way is fine. The worst thing about frustrating work is that it ruins the rest of your day too, and you don't get to seek the other kinds of fulfillment either but instead just waste your time.

Per Vognsen said...

How are you liking Creation? It's one of my favorite Gore Vidal books. It suffers from the same flaw as Neal Stephenson's historical fiction. When you try to turn a novel into a vehicle for teaching, literary quality suffers. But much as I enjoyed the Baroque Cycle books, Gore Vidal is ten times the writer Stephenson will ever be, so Creation comes out fairly unmolested, though it drags at times.

cbloom said...

Yeah, Creation was great. It does drag in parts, but in others it skips along like a fun adventure story. Full of historical tidbits I didn't know (though I'm a little wary of the accuracy), it's obviously very deeply researched and just brimming with context. Definitely recommended.

I also recently read "Here Be Dragons" which is pretty awful in comparison. For one thing it contains very little amusing information, and it repeats the same points over and over (the Welsh were more progressive than the English, the English were really the French, blah blah blah over and over). Furthermore, it is just typical childish female-written Medieval claptrap in which all of the female characters just happen to be unusually well educated, unusually well treated by their husbands, unusually influential in the affairs of men, and have unusual relationships with true love and great sex. Far too often the book descends into soap opera (who has to marry who, who's sleeping around, blah blah).

Per Vognsen said...

Cool. You should check out Gore Vidal's Julian. While it isn't a wide-ranging free-for-all of erudition like Creation, by Vidal's own account it is the best researched of his historical fiction, and in my opinion a remarkably well written, well paced novel. I also learned a lot about a period of Roman history and early Christianity of which I had been previously ignorant.

Jon Olick said...

Starting a business is far harder than people realize. They think anybody can do it, and they are wrong. There are so many traps. So very many pitfalls that if you don't have the right mindset, you can easily give up or stop thinking your way out of the box. Its an exercise in persistence for real. Its also overrated. You can make a really good living not owning a company and not have to deal with any of the headaches of actually running it. Starting a company is very overrated. It does have its rewards, if your lucky and smart. But what do you really need 10 million dollars for? To say FU to your boss and go retire... I don't know about you, but I'd get bored real quick.

cbloom said...

"I don't know about you, but I'd get bored real quick."

I can't relate to this sentiment at all, I hear it all the time and it sort of boggles my mind. Why in the world would I be bored!? I would still do research and work on code, I just wouldn't have to do something that makes money to specific deadlines. I have no trouble making my life interesting on my own, having a boss doesn't make it better.

I did miss the feeling of being in a group, but I suppose there would be ways to have that.

There are just like millions of things that I'd like to do if I had free time. Write demos for demoscene parties. Learn to fly planes. Write my own email client and spam filter. Subvert the corrupt politico-corporate hegemony. etc.

Thatcher Ulrich said...

"I don't know about you, but I'd get bored real quick."

Yeah this is my fantasy too, quit my job and just write code or design fonts or fiddle with bikes all day, with no particular economic imperative. Tracking down gnarly bugs in big systems and waiting for compiles in big codebases is soul deadening and if I didn't have to work for a living, I just wouldn't tolerate that crap. Code is like farts -- your own smell just fine, it's other people's that stink.

old rants