Friday, December 27, 2013

Henry Miller's programming tips

I found that Henry Miller's Writing Tips are directly applicable to programming world. I only substituted couple of "books" into "programs".

  1. Work on one thing at a time until finished.
  2. Start no more new programs, add no more new material to ‘Black Spring.’
  3. Don’t be nervous. Work calmly, joyously, recklessly on whatever is in hand.
  4. Work according to Program and not according to mood. Stop at the appointed time!
  5. When you can’t create you can work.
  6. Cement a little every day, rather than add new fertilizers.
  7. Keep human! See people, go places, drink if you feel like it.
  8. Don’t be a draught-horse! Work with pleasure only.
  9. Discard the Program when you feel like it—but go back to it next day. Concentrate. Narrow down. Exclude.
  10. Forget the programs you want to write.
  11. Think only of the program you are writing.
  12. Write first and always. Painting, music, friends, cinema, all these come afterwards.

Tuesday, March 13, 2012

Improving Yourself, Incrementally

You can only improve yourself incrementally, a little by little. Take procrastination, for an example. When you are in a slump, you feel like you can get nothing done and you hope that someone gave you a magic recipe that cures your do-nothingness. In reality, you do have some sort of base productivity, however low that might be. Furthermore, any positive change is going to improve your productivity only by so much. You are not going to suddenly become ├╝ber-productive by reading some self-help book.

You're thinking that you need a complete cure for your illness, when in fact you're slightly undernourished and a positive change will make your condition slightly better.

This is turn implies that what you really need is a system to measure your current performance. In the mistaken, black-or-white view of the situation you consider the proposed system to be failure if it doesn't provide a complete resolution. But if you have a reasonable baseline measure, you can think of habits, routines, and systems as experiments on yourself and you can let the data tell if they are worth-while.

Measuring your productivity is slightly tricky but nowhere near impossible. Just aim for something really simple at first. Once you have a system running, it'll be easy to improve it. If you're a programmer of any sort, like me, you're likely to imagine an automated system. But let me warn you that it's easy to fall into the trap of wanting a perfect system and never getting around to actually implementing it.

Something as simple as keeping a manual record of timestamps and what you are doing is completely fine. You really don't need a more complicated system. The trick is to (a) have numbers coming out of it (b) being honest to yourself. A "13:20 zoning out\n15:40 oops, back to work" is infinitely better than a vague feeling that ".. hmm, I didn't get much done on that Monday or was it Tuesday .." Being honest is surprisingly easy. I know that I didn't get anything done between 13:20 and 15:40. If I have a system to record it, it stays there and I have no desire to rewrite the history.

I do have an automated system, but it didn't take more than couple of hours to program. My desktop has multiple workspaces and I've designated one to be for zoning out (for random web-surfing etc), one for meta-work like email and tracking systems and the rest for "real" work. My script keeps a record of when I switch workspaces and produces a pretty good picture of my work day.

"Wait, you have a workspace designated to random web surfing?!" you might be wondering at this point.

Yeah. I used to think that I should try to block distractions completely. In fact, I had an automated system for blocking distractions. It never worked as I wanted, but the final blow was that I just stopped using the system. Yeah, it is that simple. I think it's too much of an all-or-nothing proposition. Sometimes I do need a distraction. If I circumvent my own system, I'm all to likely to stop using it alltogether. Like I did. (Like Paul Graham did.) Maybe it works for someone, but for me it surely doesn't.

(The key thing to realize is that blocking distractions is a good idea when you're already doing something productive. But blocking distractions in and of itself doesn't put yourself into a productive mode. Maybe I'll write more about this later.)


When I look back at the last three months  that I've been measuring and experimenting with couple of systems to improve my productivity, what I see is the flow of quantification, a more clear picture of my work habits. The data suggest that my experiment with the Pomodoro technique was a success, but now it seems more relevant that I can see the change in numbers. What I can see is an incremental improvement. And even more importantly, I can see whether the improvement remains permanent.

There is no magical cure. You can only improve yourself in small increments and the only way to detect that is to measure yourself. I suggest you start with that.

Wednesday, March 7, 2012

Blog Introduction

I used to have a blog written in English. It was called Python Owns Us, because I was enthusiastic about Python the programming language. I still am, but not so much as to concentrate only on the programming language. So the blog got pretty much abandoned, but I realized that I miss writing in English and I also miss writing about the tangential topics.

Therefore this.

To explain the title of this blog, Conflicting Motor Programs: it comes from PJ Eby's Less Wrong article Improving The Akrasia Hypothesis. To put it short, PJE proposes that akrasia --you know, putting things off--, happens when there are "conflicting active voluntary motor programs." Like trying to turn head on both ways at the same time but applied to doing something even more complicated. That's the concept I try to remind myself of when something seems difficult to do.

One high-level motor program conflict I have is between throwing out shoddy, conversational text and the idea that you should try to actively become a better writer. If you lower the bar enough, you can get masses of text out of your system, but at the same time you feel like you're doing a disservice to the world. I guess my approach will be the famous Worse is Better, with the added "some day I will really practice this writing thing."

Because, you know, practice really is the only way to become better. But unfortunately it is really easy to not practice. Really. It is easy to get the most awesome insights into the nature of becoming an expert, but to never actually do anything about it. It's like imagining yourself exercising and getting stuck to the idea of yourself exercising without actually doing it. Like, reaping the mental benefits without the actual work.

But real practice is hard. It's not hard like crossing the South Pole barefooted or single-parenting five ADHD kids. The hardness of practice is that it requires a continuous, conscious attention to whatever you are doing. That doesn't sound hard, but it really is. It is hard, because it is really easy to do the opposite: nothing. Those who can sustain such effort years over are the respective experts. Most of us put a bare minimum effort and fall back to autopilot whenever we can.

The same, of course, applies to writing. As Venkatesh Rao, of the Ribbon Farm fame, put it in his Quora answer:
What matters is not how much you write, but how much you rewrite.
So I guess I will try to churn out text but also feel bad about not trying to get better at it. I have the added complication of not being a native English speaker, but I take it just as a another challenge in the same journey. At least I feel fluent writing in English even though I know I cannot write grammatically correct English. Not even close.

But it's fun. I hope you don't mind.

The other side is that I want to create a story line around the articles and concepts that have intrigued me over the years. For years, they have only been filed as bookmarks. These articles and ideas do leave some traces in my thought processes, but without active writing I don't know what I actually think about them.

I guess that's enough for an introduction to the blog. I haven't decided how much to reveal about myself explicitly, but in some sense I am revealing a lot more by the content of the articles.

It is 10pm now and it means I need to go to bed. But that's a subject to another article at another time. Good night.