Musing on life and techology

Feb 5

Why do I write?

After reading “Nine Beginnings”, I was left puzzled by Margaret Atwood’s take on a seemingly simple question: “Why do you write?” Why was it so difficult for somebody of her stature to answer? She tried nine different responses, and after all of those, the reader was still left without anything tangible in a form of “I write because such and such”. So, if I tried answering that question myself, what would I say? How would I even go about conjuring a reply? As an experiment, I decided to try recalling the state of my mind when I wrote something recently. I went back and re-read one of my pieces, trying to put myself in my own proverbial shoes. Here is what I remember:

I was arguing against somebody who was very obviously wrong, mistaken, lost, clueless, ignorant, but at the same time full of mockery and self-righteousness. I couldn’t let it stand. I had to teach them a lesson. I wanted to crush them with the force of my carefully crafted rhetoric, wielding mighty article references and carefully sharpened quotes. The fire within me raged while I typed, deleted and retyped again, letters splattering on my screen like drops of blood on my imaginary enemy’s face. Slowly but surely, the battle lines were drawn, my trusty sentences assembling into brutally honest paragraphs. Every once in a while, I’d pause and read the text in its entirety several times, basking in the glory of my own cleverness. There, right in front of my eyes, a fearsome army of Thought was appearing, standing ready to march into the great battle of Reason, bearing my flag of Universal Truth. The sheer strength of my rhetoric seemed awe-inspiring and terrifying. Nothing would be able to stand in the way of my Aristotelian blitzkrieg!

But as much as I seemed to enjoy myself, this game couldn’t last forever. Chasing after wild, untamed thoughts and forcing them into the straightjacket of written text was hard. I was exhausted. Finally, there came a moment when I could no longer bring myself to re-read, criticize and revise anymore. It was all over. The fire within has died. The piece was declared “finished”. One by one, the voices in my head quieted down and everything was silent again.

Did I win? Was my argument good enough? Did I defeat the enemy? Was there even an enemy? Did it really matter? Why did I waste two hours of my life on arguing about something that somebody said about something else that had nothing to do with me whatsoever? Was it to stroke my ego, to show off my knowledge of a narrowly-focused technical subject, citing books that made me look smarter? Or was I trying to educate somebody, to persuade them using logic and references to passages in relevant articles? But what if this was just a meaningless exercise in writing technique, something that I promised myself I’d do more of? Or was this simply a way to pass the time and escape the reality of what was shaping up to be a boring Sunday afternoon? All of the above? None of it?

I considered this example at length, but my thoughts remained confused. No tangible reasons were to be found within. Surely I couldn’t draw any general conclusions about why I write from such outlier of an example. Perhaps I needed to look for another, more representative one before I could even being to answer that question. On the other hand, what does “more representative” mean in this context?

Jan 20

Nexus None

Last weekend I was helping somebody brainstorm gift ideas. A question arose: What would be a good smartphone to give somebody who is on T-Mobile and not planning on getting out of the contract? We talked about a second-hand jailbroken/unlocked iPhone 3G, which, everybody agreed, is a solid choice in terms of price and functionality (even if it has scratches on the back). Are there any good alternatives? Nexus One, anybody?

According to reports, it has a gorgeous screen; slim, sexy lines; and fast, responsive Android OS behind the scenes. On the flip side, it has shortcomings - enough of them, in fact, for Engadget to call it “just another Android smartphone”. Hmm…

We got to the point where a solid hands-on performance would be required to tip the scales toward a “yes, lets get it” decision. This discussion was happening in a restaurant not far from a T-Mobile store. We walked there, looked over a bunch of other Android phones, failed to locate Nexus One, and were finally approached by a sales guy: “Can I help you with anything?”. Us: “Hi, do you guys have Nexus One we can look at?”. Sales guy: “Uhmmm… We don’t carry those in the stores - but you can order them online via Google”.

Bummer. Yes, Google told us how innovative their new “order your phone online” thing is going to be, but what they failed to mention is that now, instead of being able to play with the actual device in a store before buying it, we had to take somebody’s word for how good it is (or locate and corner that ever elusive “friend that has one”).

That sales strategy might work on those of us that are inside of the semi-religious early-adopter-filled tech-centric echoblog chamber. But what about mere mortals? What about people that need to “see and touch” to believe? They don’t know who Arrington is - how will they know that they are supposed to like Nexus One? Even more importantly, what percentage of those of us that lack the “early adopter” gene will buy this thing after reading the aforementioned bad reviews AND being denied a chance to fall in love with the supposedly awesome screen, sexy body and a 5-megapixel camera?

I call it the “Kindle problem”, and here is why: 90% of people that ask about my Kindle on the subway follow it up with “I was wondering whether to get one or not, but needed to see it in person first”. That’s right: when it comes to expensive electronics that claim to break the mold, most humans need every bit of persuasion they can get, and hands-on experience is one of the best persuasion techniques when it comes to good products, and one of the strongest turn-offs for crappy ones.

I’d love to see one in person.

Jan 18

Morning productivity

You might have heard this idea already. It’s often mentioned during discussions of productivity, focus and multitasking. It sounds something like this: “Try to do your most important work first thing in the morning, while your mind is still fresh”. It’s also usually accompanied by “Don’t browse the Internet, and avoid email as much as possible during that time”.

For those of us that don’t seem to function well early in the day, the rule could probably be modified to replace the word “morning” with “whenever your productivity usually peaks”, but it might not work as well, because you don’t get all of the benefits of having an uncluttered brain later in the day.

I tried it and it seems to work pretty well: instead of checking email and reading news online in the morning (patient is exhibiting mild symptoms of addiction to Techmeme and Google News), I try to do something important that requires focus and concentration. I also stopped checking my daily to-do list and calendar first thing after I get up. It seems much easier to concentrate that way, which can be especially helpful with a task or project that has been a victim of procrastination recently.

Why does this idea seem to work? My theory: After sleep, the brain behaves more like a Windows computer that has been rebooted - less processes running, more memory is available. So, if you have an important task to work on, more mental resources can be made available to it. As soon as you start reading email or news, hundreds of new threads get launched and the multitasking hell begins. One more benefit: doing something productive early on sets the tone for the whole day. Even if the rest of it goes down in flames due to interruptions, at least you have accomplished something. So, how do you get the most out of this deal?

1. Think of the task to work on beforehand I try to think about what to do in the morning the night before. That way, if I need to look stuff up, check to-do lists or read email, it can be done without muddling the precious still-has-that-fresh-smell state of mind that I’m trying to capture earlier in the day. Then, get to work, grab some caffeine and start on the important project right away. This might require some getting used to, especially if your colleagues tend to socialize in the morning.

2. Block distractions (email, IM, web, facebook, twitter) All of those mean more mental processes that will be running on the background and suck the creative juices out. Avoid it like the plague. Let’s face it: multitasking is a myth. Don’t believe me? Try focusing on just one thing for just 30 minutes a day (again, I recommend mornings), and you’ll see that single-minded devotion to one thing at a time works much much better than splintering your attention into dozens little threads.

Let me know how this works out for you.

— Petro

Jan 17

Terror is cheap in the land of the scared

Have you heard about the JFK terminal evacuation that happened recently? Remember the evacuation in Newark some time ago? Finally, what about some idiot trying to blow up his reproductive organs on a plane around Christmas?

Now, close your eyes, let your emotions go for a second, and think about it… Some guy opening a wrong door caused hours of delays?! Another guy going the wrong way through a doorway caused delays and flight cancellations that lasted for days?! How much money did both of these incidents cost the airlines? Who the heck needs bombs and explosives when all one needs to do is touch a wrong freaking door to set off an idiotic chain reaction that aggravates thousands of people, costs hundreds of thousands of dollars, and makes us all look like a bunch of chicken running away from a scarecrow? The proverbial Osama bin Laden would be proud.

Don’t get me wrong, I’m not calling anybody a “terrorist” here - but the results of these people’s actions are worse than what some actual terrorists are able to produce. Return on investment is waaaay better, even if incidental. And we are talking about some dude walking and opening doors, not some evil-minded moron stuffing his shoes with crude explosives.

But the question that bothers me the most is: How come something that small is enough to make us run for the hills nowadays? How the hell did we become the land of the scared? (I’m equating “running for the hills” with “easily allowing our way of life to be disrupted”).

Jan 15

Fighting insomnia, tip #318: Dump your thoughts

Keep on reading if the following sounds familiar: you go to bed but cannot fall asleep because your brain is buzzing with thoughts, plans and reminders (“It’s so-and-so’s birthday on Wednesday, and I still haven’t bought a gift!”, “don’t forget to pick up dry cleaning tomorrow”, “it would be great to end world hunger, I should look into it in the morning” etc etc).

After struggling with this nuisance for some time, I found a solution: write those thoughts down and your brain will let go of them, as if by magic. This technique was mentioned in “Getting Things Done” as a way to capture to-do items and clear your mind in order to be able to focus better. Only in our case it’s not about focusing, but more about stopping your brain from running in circles, trying to tell you to not forget something that it deems important (that’s what it feels like in my head, anyway)

Question from the audience: how do you take notes without waking up your partner or turning on the light and destroying the “I-am-trying- to-fall-asleep” mood? 
Answer: use your iPhone/BlackBerry/whatever. Find an app that lets you quickly type in notes. Then you can review them in the morning and delete useless ones. My personal favorite is called “Things” for iPhone - it literally takes 2 seconds to start writing stuff down after grabbing the phone from the night table.

Oh, and by the way, the voices in your head will not be pleased if you try to cheat and write those “action items” down on a piece of paper in the dark in a completely illegible chicken scratch - your brain might chase its tail every once in a while, but it’s not stupid, you know.

Jan 11

Japan experience: Literacy is a wonderful thing

Every time I travel to a country that speaks a language that I can’t really understand, I’m reminded of just how powerful literacy is, and how much you are missing if you can’t do something as basic as reading and speaking.

This was especially evident on our recent trip to Japan. My fiancée and I spent 9 days there, running around armed with guidebooks and cameras, trying to take in as much as we could, without knowing any Japanese besides simple “hello” and “thank you”. During our preparations, we did spend some time learning both Hiragana and Katakana alphabets, hoping that it would help us with reading signs and such (and it did, slightly. More on that later.)

Overall, we had a blast - food was excellent, sights were breathtaking, and people were very very nice. Both Tokyo and Kyoto are very tourist-friendly, with enough signs in English to be able to move around relatively easily. We also made sure to book hotels that had English-speaking staff, which turned out to be very useful.

To westerners, Japan is usually associated with something mystical, mysterious and elusive: samurai, geishas and sushi might come to mind when you think of it. Those are the stereotypes, the staples of the japanese tourism - in the same way that Times Square and Statue of Liberty are “typical” New York and, to a lot of people, US. But that is a very superficial way to look at any country, and especially one as rich and unique as Japan. You can’t even imagine the whole picture until you try to dig deeper, and this is where lack of literacy hurts you the most.

What do I mean by “digging deeper”? Anything that allows you to experience the country beyond the typical guidebook, something off the beaten path. Even though we pretty much stuck to our copy of the Lonely Plant, we did try stepping outside of the boundaries a little, especially when it came to food. Two of the best advices that we got were to watch out for plastic food displays outside of restaurants, and to ask for an English menu before being seated.

Another thing that really stood out is how little control you sometimes have over things around you when you cannot effectively communicate with other people. This is where one of two things happen: you either start hating the experience, or you try to open your mind and go with the flow. Again, this was especially relevant to food: most english menus in japanese restaurants don’t describe meal ingredients very well. You usually get a bunch of pictures that you can point to, but unless you know what those dishes contain beforehand, it’s very difficult to get an explanation from waiters, since, while trying to be as helpful and understanding as they can, most of them only know very basic English. That’s how we ended up eating raw eggs in soups, raw beef sushi and a slew of still-unknown-to-us sea creatures. Do I regret it? Absolutely not: all of that was very delicious and novel (except for one mollusk that was chewy, tasteless and useless, and I still have no idea what that thing was). We have stumbled our way through a whole lot of tasty meals, each new restaurant being a separate adventure, which made the whole trip that much more memorable and fun. It culminated in us going to a neighborhood restaurant where a bunch of locals seemed to hang out, and none of the staff spoke English, but which had a menu with some English words in it and no pictures. We gestured our way through the ordering process, having picked half the dishes without completely understanding what they would look like. Everything turned out to be delicious, but I really wish we had some basic language skills to be able to ask about things on that menu.

But I digress. Back to the literacy: another thing from the “it should be obvious” department that is worth mentioning is that you can ask all you want, but it won’t do you any good if you can’t understand the answer. Having pulled out the phrasebook and rattled off something that I thought was a simple question in some decent Japanese, I was astounded to hear a comprehensive answer from a native speaker that meant absolutely nothing to me. Don’t try to be clever and pretend that you know how to speak, because you might actually fool some people into assuming that you can understand the language. Stick to super-simple English unless you have enough Japanese to understand certain words that you expect to hear as part of the answer. Having said that, we did meet a couple of people that didn’t speak any English, but were very helpful with giving directions by using maps and gestures.

Let’s talk about reading. Japanese writing system consists of 3 different alphabets: kanji, hiragana and katakana. The first one contains thousands of characters - those are the Chinese characters that look baffling to us foreigners with untrained eyes. Each kanji character corresponds to one or more words and has several possible readings. Both hiragana and katakana contain only slightly more than 40 characters each, making them much easier to learn than kanji. Hiragana is used for words that don’t have kanji representation, and for various grammatical functions. Katakana is used to write words of foreign origin.

If I knew back then what I know now, I’d spend all of my preparation time making sure that I can read Katakana really well. There seemed to be a whole lot of signs and western food restaurant menus written in it. A lot of those words came from English. We didn’t do well in katakana studies, and only ended up being able to read maybe 30% of what was written, at slow speed. But whenever I or Yelena did manage to read and understand a whole word, it felt great, and was usually helpful in some way (that’s how we found our way to the Iwatayama monkey park in Arashiyama - the book didn’t explain how to get there exactly, the roads were confusing, and the signs were only in Japanese). You could just try to ask somebody, but what’s the fun in that? ;-) And it doesn’t help that I’m one of those stubborn and overly self-reliant people…

The bottom line is: Japan is an awesome country to visit if you are prepared to open your mind to a culture that is likely to be very different from what you are used to. Plus, every little bit of reading or speaking Japanese will make your experience that much more rewarding and enjoyable. Personally, I’m determined to learn at least some language before we go next time. And so should you.

Jan 8

From software developer to software business owner

This post is a result of a long search for answers to the question “How do I need to run my company? And why does it feel like I’m stuck?!” and finally getting a lot of help from a book called “E-Myth Revisited” by Michael E. Gerber. I tried re-interpreting his ideas in the context of our own software development startup, and that’s what you see below. As luck would have it, most of this stuff falls into the category of “It would have been useful to know this two F-ing years ago!”.

Code, code, code, ????, profit!

There is stereotype that goes something like this: “Programmers love writing code. Give us an interesting problem, some food and a dark room - and we’ll be happy as pigs in mud. Throw some paperwork at us or break our zen with a meeting request - and you become our mortal enemy”. Joel Spolsky wrote a great article about this a while ago, called The Development Abstraction Layer. More recently, Paul Graham from Y Combinator talked about a similar issue in his essay Maker’s Schedule, Manager’s Schedule. That same stereotype also comes into play when programmer Bob decides to start his own businesses - he is determined to write code FOR himself and BY himself. No more bosses. No more meetings. Just code, code, code, ????, and then PROFIT! (Excuse my oversimplification). Here is one recent example: iPhone game development. For a while, that industry has been a programmer’s dream - you literally needed to create a good enough game, upload it to Apple, do a little bit of promotion, and BOOM - you start getting paid. Alas, it only lasted several months and only a few people were able to hit the jackpot. Market quickly got saturated and making money in that space became a lot more difficult. Nowadays, instead of playing a lottery, which is a tactical approach, iPhone developers have to increasingly think strategically, more business-like.

Second part of that stereotype: “We hate business and marketing just as much as we love writing code. We are not good at it. We don’t want to do it. We avoid it.” A lot of programmers will agree with at least some part of that statement, even after starting their own venture. For some, it might have something to do with perceived or real lack of people skills. For others, software architecture and design problems just seem so much more interesting and pure. Some people don’t mind taking on additional responsibilities, but they don’t know where to begin.

And that mindset might work out just fine when you have an infrastructure that shields you from the realities of how the company that you work for operates and what it needs to do to survive and keep you employed. But as soon as you step out of that cocoon and start a venture of your own, you can no longer afford to “just whip out code”, at least not in the beginning.

"Business" is a system that needs to be built, just like any other

If you have been writing software for a while, you know how many different things go into developing a successful product. You have to think about the requirements, what hardware it’s going to run on, who and how will be using it etc etc. If you look at it that way, there is a lot more to it than just coding. If you never learn that simple truth or choose to ignore it, your career will rapidly hit a ceiling. But most people do learn and do become better at it as the time goes by. Any well designed software product is a system whose inputs and outputs are clearly defined and quantifiable. It’s testable and maintainable. And, more than anything, it serves a purpose and fulfills somebody’s need. Stay close, and all you see is code. Step back - and behold a machine. That’s what successful software development is all about - being able to not only build the parts, but to also switch perspective and put those parts together into something bigger.

Good news: it turns out that building a business system is not very different from building a software system. In the same way, you have to define your inputs and outputs, figure out what components you need to put in place, how they interact with one another and so forth.

The key point here is that when you are developing software, your product is NOT code, but a software system that fulfills a need. Likewise, when you start a business, you product should NOT be software, but a business system that produces money (or whatever you define as your company’s “output”). Code is just a means to an end in a software product. Software is just a means to an end in a business system.

If you look at it that way, building a business can absolutely be a fun problem to solve. Sure, you’ll have to step out of your text editor for a moment, but the nature of the challenge is the same - to define a system and make it work. You’ve been doing that kind of stuff all along: putting puzzle pieces together, figuring out the flow and connecting the dots.Want more proof? How about some analogies. Some are better than others, I agree :-)

  • Hiring employees = Looking for 3rd party libraries/components.
  • Figuring out marketing strategy = Designing a UI.
  • Market research = Figuring out software requirements.
  • Funding your company = Making sure you have enough resources for your code/software to run.
  • Running your company = Maintaining your software and making sure that it runs properly.

It’s just another level of abstraction. If you start a software company, you’ll be building two systems in one: a business system that makes money by fulfilling somebody’s needs with a software system that has code as it’s basis. How awesomely recursive is that?!

Yes, I know, not all software companies are created equal. Some build and sell software products on CDs or via Internet. Others offer software-as-a-service. But that’s what other businesses do, too - some build and ship products, and others  provide services to consumers.The main lesson here is that you, the software developer, already have most of the skills that are required to build complex systems that produce something. If you decide to start a business, you need to learn how to abstract those problem solving skills and apply them on a higher level.

But I just want to write software!

Nobody is asking you to give up your trade. You can be a business owner and still write code - after all, that’s why you decided to start your own company in the first place. At the same time, what you don’t want to do is start a business, hire “a business person”, dump a whole bunch of responsibilities on her and lock yourself in the room so that you can concentrate on the code. That would be the same as a software project lead telling somebody “go design a UI for me and don’t come back until it’s ready”. How do you know that the UI will work with the rest of the project? What if the artwork doesn’t fit? What if you change the functionality but nobody tells the “UI guy”? Just like in a software project, activities in your business must be interconnected. Somebody needs to make sure that everything works together. In other words, somebody (and it should really be you, maybe with some help) has to design and maintain the blueprints, the overall architecture of the business system. After that, you can delegate the actual “running” part of it and go write some code. Just make sure that whatever you do fits into the overall system. And don’t forget to check up on the “architecture” every once in a while to make sure that it still does what it’s supposed to (or, you can even delegate that and hire a CEO/COO/president type - in which case you become a shareholder-and-an-employee).

The main lesson here is that you cannot afford to abdicate yourself from managing your company just because you are only interested in writing code. You can only “design and delegate”. Create the blueprints (“architecture”, in the software lingo), figure out what roles and responsibilities should be in place (“design each component”), and find the right people to fill the roles or take on some or all of the responsibilities yourself (“get some 3rd party libraries or write the necessary code yourself”).

"E-Myth Revisited"

Obviously, there is a lot more to running your business. I highly recommend that you read “E-Myth Revisited”. Digest it and interpret it. Re-read it and apply it.

(And don’t let the idea of “building your business as if it was a franchise” and comparison with McDonald’s put you off. Think of it as a way to resolve scalability and maintainability issues).

Jan 6

Undead TV

I’ve been using DVRs for the last five years, starting with Tivo and eventually switching to an integrated recorder that came with the HD cable box. At the same time, the amount of TV that our household consumes has been going down, having recently stabilized around one sports program that we never miss, a couple of cooking shows, and an occasional comic relief with Jon Stewart or Steven Colbert. Needless to say, all of these shows are recorded and time-shifted for convenience, and all commercials are fast-forwarded into oblivion. 

A few years ago, New York City banned smoking in all public places. Before that, even if you weren’t a smoker yourself, going into bars and secondhandedly breathing in burning tar with friends that smoked wasn’t a big deal, really - a lot of people did it. I did it, repeatedly. After the ban went into effect, it became a lot more pleasurable to visit restaurants for non-smokers. It also had an additional benefit of making some people think harder about kicking the habit. Nowadays, every time I go into a place where people still smoke while eating or drinking in enclosed space, it very clearly smells bad and feels wrong. How and, more importantly, why did we do this before? 

After having enjoyed commercial-free programming thanks to DVRs, every live TV show that gets interrupted by ads feels like walking into a bar full of cigarette smoke: to a non-smoker, it is repugnant. I am not there for the tar or commercials, but for the food and content. Live TV, you are dead to me.

Jan 4

A habit to keep trying and get your things done?

Background for this post: I distinctly remember being excited about David Allen’s “Getting Things Done” book for a couple of reasons: for one, it’s about an algorithm for your brain - the “software developer” in you gets a chance to go through the logic, trying to find flaws and make improvements. Geeky as it sounds, it felt a little like programming the way your daily activities are organized and executed. On the other hand, the book sounded like an interesting solution for anybody with a chaotic workflow: the company that I was working for was being sold and my friends and I were starting a new gig on our own, for the first time for some of us. No longer was it possible to focus on just one or two responsibilities (read “coding and not giving a damn about anything else”) all day every day. A.D.D. started flaring up due to constant context switching, and the productivity was out the window. GTD seemed like a great solution. 

If you are not familiar with it, “Getting Things Done” describes an approach to organizing your tasks and reference material, and prioritizing your activities. The goal is to increase your productivity by making sure that you are working on the right things at the right time. It all makes sense and sounds very good (to me, anyway). Obviously, David Allen spent a whole lot of time polishing the system to get it right. Very inspired by all this, I tried taking some of the more significant parts of this system and applying it to my own daily routine - and it seemed to work pretty well for a while. It was almost like owning a new computer game that I needed to master. Or a new cool toy. 

Then the going with our new company got easier: we started coding more than anything else. Life got simpler and less chaotic again. The GTD toy was spending more and more time in the corner, not needed and half-forgotten. I did keep using task lists, but that’s about it. This went on for a while until our startup business started getting more interesting and I had to once again upgrade my hat rack from being able to hold one or two hats (“programming” hat and “semi-running business every once in a while” hat) to a dozen or so. No bonus for guessing what followed: ADD, context switching, poor productivity, stress. Once again, GTD was called to the rescue. The toy was dusted off, marked up parts of the book were re-read. And once again it felt like a game, like something that you can put down and not look at for a while. There must have been a better way to do this - to keep the productivity going no matter what the work load is. 

This is when I caught myself thinking “Wouldn’t it be easier to go get a job and not deal with all this?” I’ll spare you from the details of my internal struggle that resulted. At the end of the day, the biggest draw of that idea appeared to be that “somebody tells you what to do and you can just dive into coding/technology/learning/whatever and get paid for it” The best response to that conclusion that I could find was “No shit, Sherlock” Why not try applying for a job at a successful company and maybe get a glimpse of what they do to be successful? How do THOSE people Get Things Done? This post is not the place to argue for or against such approach. Let’s just say that I didn’t go looking for a job and kept on going with our startup. But I did manage to figure out what was missing from my GTD soup. 

Consider this example: You must have heard the notion that one needs to exercise to stay in shape. Do you believe it? If yes, do you do it? If you know that it’s necessary but don’t actually do it - why not? Exercise itself is usually not difficult - many people that do exercise find it quite enjoyable. You don’t have to push yourself like an olympian would, you can take it easy and do it at your own pace. The first few days/weeks might be hard, but then it gets much better. You probably know that. So, why don’t you exercise? If you follow this rabbit hole of reasoning all the way to the bottom, you might arrive at the same conclusion that I did: you don’t have enough discipline to keep doing it for long enough before it becomes a habit and you no longer have to convince yourself to do it. It’s fun the first few times, but then novelty wears off. The toy gets pushed into a corner and starts gathering dust. You become content with the fact that you aren’t pushing your limits anymore. Mediocrity settles in. 

The same applies to other aspects of our lives. It’s not all about how good that idea/approach/algorithm is. More than anything, it’s about “doing” as opposed to “knowing what to do”. GTD is a good system - but only if you keep practicing it. Day in, day out. In other words, GTD requires discipline. Fun fact: “Getting Things Done” book mentions the word “discipline” exactly 5 times, but it never in the same context as what I’m talking about. Instead, David Allen talks about “tricks” to get yourself doing something that you might not otherwise have enough motivation to do. Only he doesn’t take it far enough, in my humble opinion. 

But enough with the philosophical crap. More doing, less talking. Here is the one trick that I think works really well for people that realize that then need to improve themselves (whatever that usually means) but don’t have enough motivation to start and go through with it. Take a piece of paper and a pen and write down one very simple activity that you agree to do every day (I literally wrote down “Read this text”). That’s a simple commitment - it arguably can’t be any simpler (as long as you didn’t write “Cure cancer”). For the next few days, make sure to pick up that piece of paper, read and follow what it says. It sounds silly, I know. But stick with me here. Start adding simple activities that you’d like to do every day. One of the things that I wrote down initially was “Keep work desk clean”. I used to clean my desk every 6 months or so. Always felt guilty about not doing often enough, but could never convince myself to do it - it seemed like too much work. Then one day I read somewhere that “the state of your immediate surroundings affects your ability to focus and be productive” That same day, “Clean desk” went on my “daily ritual” piece of paper. Now, believe it or not, I clean my desk every freaking morning. It feels good. It feels like an accomplishment. And after doing it for a while, I no longer have to think about it or argue with myself about whether or not I really need to dump those unnecessary papers or carry the coffee mugs to the kitchen. Next thing that became a daily ritual is checking the calendar in iCal. Sounds simple enough, but how easy is it to forget to do it? Very easy. But not with that little piece of paper. You’ve trained yourself to look at it every day - now you can be reasonably sure that you won’t be forgetting to do stuff that’s written on it. 

One important point: The things that you write down have to be VERY concrete, VERY achievable and NOT difficult. Otherwise, you start resisting and procrastinating, and the whole idea starts losing it’s appeal. “Getting Things Done” does a good job explaining why people put stuff off and how to avoid putting yourself in that position. 

Why does this work? Here is one theory: In a psychological/productivity sense, it’s more difficult to start moving than to add speed and go faster once you are already moving. The notion is similar to “inertia” from the world around us, but not exactly the same. Example: sometimes, it’s hard to break procrastination and start working on something. But when that happens, it’s much easier to keep working and take on new tasks. And once you stop and need to restart, you might need to deal with that warm-up period again. The aforementioned piece of paper provides the initial push and helps you get going. From that point on, you just keep chaining those activities, one after the other. On the other hand, the habit of “do this every day” helps you avoid procrastination altogether, hopefully. 

You plant the “seed” - a commitment to do one simple thing every day, which requires a very small amount of effort. If you keep going, it then starts growing into something larger: a habit. You can start asking yourself to do more and more without requiring too much external motivation or slipping into procrastination again. (I’m not entirely sure what happens if you keep doing this for a very long time - supposedly you will transform into a superhuman that can solve all of the world’s problems without any sleep or encouragement). 

There is nothing “heroic” or “glamorous” about this trick - you are not going to spend years “building your character” or “serving as an example to younger generation”. It’s not about “reinventing yourself” or “getting saved by a miracle and becoming a completely different human being” You just need to keep going about your business, doing small but smart things every day that can help you get something done and become a little bit better. That’s all.

Nov 13

Is Google the best dog food eater in the world?

Background for this post: After finally getting an invite, I was playing with the preview of Google Wave yesterday, trying to understand what the hype is all about. I personally find the “wave” concept intriguing, even though it can be difficult to grasp at first (hopefully it will improve as the thing matures and gets developed further). You have most likely heard people calling this product anything from “very cool” to “revolutionary”, but what really strikes me is the extent to which Google is able to reuse technologies from their own toolbox in order to make something like Google Wave happen.

Waves of dog food

Let’s quickly go over some of the building blocks that went into Google Wave: the whole thing is built on top of XMPP (which wasn’t developed by Google, but they already use it to power Google IM) with a bunch of secret sauce mixed in (and since “openness” is in the air, you can have a taste of it over at The so-called Wave Gadgets is nothing more than an extension of iGoogle Gadgets (HTML/JavaScript/CSS/AJAX wrapped into a library). And in order to quickly get up to speed, they used their own App Engine to host Wave Robots. The UI over at is built using the Google Web Toolkit, if I understand it correctly. And let me guess, the whole thing is most likely running on the same server clusters as all of their other products. In order to build a simple Google Wave robot by following their tutorial, you download a Google extension for the Eclipse IDE, along with a bunch of Google libraries (I was using Java). After you are done coding and building it, you upload it to Google App Engine, and voila, you just created an automated Google Wave participant with less then 100 lines of code in under 30 minutes. Now, THAT is what I call “eating your own dog food”. (For those unfamiliar with this term, it usually means that a company is widely using its own products).
And if you keep connecting the dots, you quickly discover that most of Google’s technologies are related to their core products, in one way or another:

This picture shows only a small part of their toolbox and relationships between products and technologies, of course. And some tools, like Bigtable, are not directly available to 3rd-party developers. As usual, there is a lot more under the hood.(On a side note, it would be interesting to see a more complete map, which I tried searching for, in vain. Somebody must have surely produced one by now. Let me know if you see it.)

The Google World

Nowadays, if you so desire, you can perform most of the typical computer user activities using only Google products: Search, Gmail, Google Apps, Maps, Picasa, Blogger etc etc. Twitter and Facebook are notable exceptions here, with Google seemingly not putting up any significant competition in those fields. Orkut might be very popular in Brazil, but that’s about it. And Dodgeball is dead.

Now, if you think about each of those needs as “towns” on a hypothetical “daily activities” planet, then each product that Google releases is like a new line of the ever-expanding Google Railroad that connects these towns together. You get yourself a ticket (a free Google account), hop on the train (open browser on your computer) and ride the railroad back and forth, visiting destination after destination. Oh, and did you notice how this “railroad” is owned and operated by Google, but the “trains” are not? Not to worry, Google Chrome is here to replace your browser, soon to be followed by Google OS (supposed replacement for Windows or OS X) - this will greatly advance their carefully orchestrated “business development” (or, as some conspiracy theorists call it, “taking over the world”) effort. And if you want a mobile version of this “train”, there’s an Android for that!

Majority of new products that Google creates pave the way, or, to be consistent with our analogy, lay the rails for the ones that will come later. A lot of code is reused, and little effort is wasted. Of course, every once in a while, they have to build something more or less from scratch to enhance the foundation and make new kinds of technologies and products possible (like the recently announced new computer language called Go, maybe?). As more and more such technologies get developed, it takes less and less time to prototype and innovate new products (i.e. lay new tracks and connect even more destinations).

Google, big!

Here is another way to think about it: Google seems to be very good at utilizing “economies of scale”. This traditional microeconomic term describes a situation where a big factory can leverage its size to minimize the cost of each unit that it produces. Google is able to apply that concept on several levels at once: due to their investments into infrastructure, it’s relatively cheap for them to support millions of users; because they have spent so much time extending their toolbox, it’s cheap for them to create new products in the industries that they have a presence in (especially if it has anything to do with web); and as a side-effect of all these efforts, they have built up a massive reserve of brainpower in the form of software engineers and product managers, which means that they are able to move into new industries with relative ease.

This is exactly what makes Google such a fearsome competitor in the information technology sector: ability and eagerness to build cool stuff very rapidly. The “20% of each engineer’s time can be spent on unrelated projects” rule can be very potent exactly because each one of those engineers has access to a whole array of existing technologies (and people that implemented them, probably, to some extent) that play well together, enabling them to prototype to their heart’s content, focusing on “what to do” rather than “how to do it”. Take just one example: MapReduce, the thing that originally enabled Google to massively parallelize their web search indexing routines, which was described in a whitepaper back in 2004. This one quote says it all, and keep in mind that this was more than 5 years ago: "Our implementation of MapReduce runs on a large cluster of commodity machines and is highly scalable: a typical MapReduce computation processes many terabytes of data on thousands of machines. Programmers find the system easy to use: hundreds of MapReduce programs have been implemented and upwards of one thousand MapReduce jobs are executed on Google’s clusters every day".

So, If I wanted to build something crazy, like a system that recognized and categorized faces in images found on millions of websites across the world and then cross-reference them when I do a search for my name, would I want to work for Google (and use their MapReduce clusters)? You betcha. Why? Because they have all of the necessary components to create something like that: the data, the infrastructure, the technologies and the brainpower. (And yes, they are moving in that direction, albeit in a less Big Brother-esque fashion, with Picasa). And that’s just one crazy idea - who knows what Google engineers are thinking up during that one day out of the week.

Round and round it goes…

This is where we drive the last nail into the coffin of our earlier analogy: in the process of building the “railroad” that now covers a large portion of this particular “planet”, they are creating components necessary to produce a “space ship” that will allow them to spread their colonization effort to the “solar system” and, eventually, the whole “universe”. And they are doing all of that while chowing down on an endless stream of Google-branded cans of dog food… *burp*

Page 1 of 2