Showing posts with label Opinions. Show all posts
Showing posts with label Opinions. Show all posts

Tuesday, July 17, 2007

The Harry Potter Mania Fossil

3 days to go. I can't wait to lay my hands on the last book. I have so many theories - as would anyone who's read the series so far - whether Sirius Black is really dead, Harry is a horcrux, what Aunt Petunia got to do with all this. It doesn't matter whether I am going to be proven right or wrong, its so much fun thinking about all the pieces of the story. Kids who will grow up to read Harry Potter would miss out on this fun. For instance, when my son (who's just over 1 yr) is old enough to read the book, he'll probably have a hard-bound boxed set, but the overall story will be well known. Readers like us have the pleasure (or otherwise, if you think) of ruminating over each part (i mean, each book), spewing out our own theories and reasoning, asking irrelevant questions with enthusiasm. In short, my son will probably read the Harry Potter series like I read the Lord of the Rings or the Hitchhikers Guide - where the intervals of suspense are shorter.
Reading the first 6 books after this one's out, knowing what is going to happen in the end is likely to be a completely different experience. Just try reading the Prisoner of Azkaban now that we know Peter Pettigrew helps Voldemort regain his powers. I'm going to miss the feeling of having so many unanswered questions.

Note to Self: Hyperlink all the terminology to the appropriate wikipedia pages.

Note to Reader: If you don't see a hyperlink, please look up the word on wikipedia.

Wednesday, January 17, 2007

The Creativity Manifesto

Two things happened today:
1. I got a mail - out of the blue - from a friend about my blog
2. I read Hugh MacLeod's (yeah, the same guy whose cartoons appear on my blog) manifesto called "How to be Creative". It is actually an old article, first showed up in his blog. Somehow, I missed reading it until now.

I don't know exactly what connections my brain hooked up, but it propelled me out of my bloggers' block. So Happy New Year and Compliments of the Season :).

If you have an hour to spare, read the manifesto. If you don't, make that one hour. Hugh's work is very intriguing. It slaps you in the face and then gives you a shoulder to lean on. Ever had the truth written down in your face in a size 48 font? As I read it, I felt rebellious and depressed, ecstatic and angry, enlightened and dumbfounded, empty and inspired.

Some things that stuck, and my reactions to it (hopefully, this will encourage you to read the whole article)

Guard your freedom. Rather, define what freedom means to you and guard it with your life (and career).

In what Hugh calls the "Sex and Cash" theory, he says creative people have 2 kinds of jobs (at the same time) - one has sex appeal, the other pays the bills. Reading that sorted out my theory of an Ideal Job (that there is no such thing) - it showed me another way to think about it.

Everyone has his/her Big Dream - their Mount Everest to climb. Admit yours, and make a serious attempt to make it happen - before you have all the time to regret not doing it. And when you do it, make sure you put in those hours. Its hard work and pain - deal with it.

Avoid the "run-of-the-mill", "another-brick-in-the-wall" kind of people, what Hugh calls the Watercooler Gang. I agree with his reasoning - we're mired in mediocrity, allow the mediocre mindset to creep into our behavior and ambition. Everyone has the ability to think differently - your mind is your fingerprint.

Do it for yourself. Not for money or fame or to impress someone. If you have any talent and passion, you have this innate need for accomplishment - something only you can define, that transcends most imposed boundaries. Sounds like a spiritual lecture. Partly true.

Moral of the story: Sing in your own voice - and put your heart into it.

Sunday, December 03, 2006

At Bangalore Barcamp

I spent the better part of my weekend at the barcamp in Bangalore, held at the ThoughtWorks office. Day 1 had about 200 people. I haven't woken up this early on a Saturday morning in a long time, but I had to get there to book my speaker slot. Mine was the first presentation for the morning, on Web 2.0 Business models (or, where's the money, honey?). I was flattered when I saw the room full of people, and even more so when the organizers decided to move me (and my audience) into a bigger room to make place for everyone who wanted to attend. I had a great audience, so there was some discussion around whether online advertising is a really sustainable revenue model, what value propositions would really work, and whether we are looking at a Bubble 2.0 in the making.

My slideshow




Me presenting (Photo Courtesy: Arun)

Sowmya Karmali's session

Day 2 had lesser people, the "more serious crowd", according to someone. There were more informal gatherings, people hacking at something, blogging, podcasting, everyone airing their opinions. This is what you get if you get some geeks together on a weekend and give them enough food to eat.

Some interesting sessions I attended

  • Jon Boutelle's talk on building scalable web applications with ruby and s3
  • Marco's talk on Agile Software Project Management
  • Kiruba's talk on Proto.in
  • Card walls and Dancing by Deven Tolia
  • Building Ajax web applications using GWT
  • YourTube: Create your own video sharing site using OSS by Pradeep (motu)


More shared media:

Slides for (some) sessions here and here.

The flickr photo pool here.

One problem I commonly face at events is getting oversized T-shirts. I have a size L. Anyone who wants to trade a size M for a size L please let me know :)

A couple of sessions I attended deserve separate posts, those are coming up in a bit.


Wednesday, October 11, 2006

Sowmya's favourite "new" companies

Startups are in fashion again - thanks to Web 2.0, the second wave of the Internet or whatever you want to call it. Everyday my RSS feeds throw up links to companies I've never heard about before. I’ve compiled a list of my favorite new (I deliberately refrain from calling them Web 2.0 – I don’t want to spark off that debate.) companies. I am curious as to where these companies are headed. I admire the guts, worry about revenue models, marvel at the idea, love the underlying technology, and wish for growth. I hope they just don’t get acquired and merged (some are, but continue to retain their identity), but continue to challenge the Goliaths. I suppose some will, but Dear God, not all of them. This list is in no particular order, doesn’t contain detailed product or company reviews. I’m just declaring my love for them.

Six Apart: These are the guys who make Typepad, MovableType, Vox and LiveJournal. I personally think Typepad is the best blogging engine available, if you are a professional blogger. Any corporate looking for a hosted blogging engine should seriously consider Typepad/MovableType. I just signed up to Vox for my personal blog. Combining blogging and social networking is quite powerful for an individual as well as for a community of users. That’s what makes Vox promising.

37Signals: Just creating a framework like Rails is enough to get me all ga-ga about these folks. For a living, they create productivity software tools for small businesses and individuals: the Fortune Long Tail, if I may call it. BaseCamp is the flagship product: it’s a web-based project management tool. They follow it up with more lightweight, collaborative and cheap tools like a collaborative Writeboard, and a chat tool (Campfire). The DNA of these tools: lightweight (web based), collaborative and simple.

ROOT Markets: In the Gold Rush, it was the toolmakers that made the money. Take Levi’s for example. ROOT Markets is a company focused on Attention. (If you aren’t aware of what Attention is, in the internet sense, then you should read this article.) They have an exchange called ROOT Exchange which is like a trading platform for online leads. This is one company that could make it big, as a platform provider.

Pluck: I love my Pluck RSS reader. It’s tucked into my browser (IE and FF), has a client side install that subtly informs me of new feeds, and helps me categorize my feeds. I see my list of subscriptions in a neat tree on the left and the feeds (summaries) on the right. Google Reader now does something similar, but I’ve been using Pluck for almost a year and a half, and I haven’t got a reason to move, until now. [See update at the end of the post.]

Zillow: Started by ex-Expedia employees, this company recently received 25 million USD in second round funding, (a total of 57MM till date). They provide free estimate (or Zestimate, as they’d like to call it) for property buyers and sellers in the US. At first, I thought that what Expedia did to travel agents, Zillow was attempting to do to real estate agents. Apparently not. They think of real estate agents as one of their consumer group, because a real estate decision is a more calculated one than a travel decision. This is the best part: revenue generation is through online advertising. Will they be a billion dollar (value) company by making money through ads?

Zoho: With a name derived from “SOHO”, this company creates office productivity tools with an aim to create affordable software for business. Zoho Writer and Zoho Sheet are in direct competition to Google Docs and Spreadsheets. I wonder if this is on Yahoo!’s shopping list. One big reason this company is on my list is that these products are “Made in India”. Lage raho, Innovation. Zoho’s challenge is going to be promotion: How do they compete with the marketing prowess of Google?

Flickr: Photo tagging and sharing. Got acquired by Yahoo. Subscripton-based revenue model. One of the best communities. But all that is known. The reason I feature it here because of their interestingness solution. When you search for photos, you get them sorted by most interesting. Flickr has managed to algorithmize (if I may use the word), interesting. A photo’s interestingness quotient is based on a combination of how popular the tags associated with it are, how many views, how many comments, how recent and so on. Doesn’t this remind you of Google’s PageRank?

These are my top Web 2.0 picks. If you think there is a company that should be included in this list, drop in a comment. There’s a good chance that I may not have heard of the company yet, and will certainly take a look at it.

I conclude this post by mentioning two companies that I have admired almost all my life. (These have nothing to do with the Web).

Bose: Has a unique, hard to clone DNA. Lives and breathes sound. So focused, it rubs onto you. You read their brochures and you see the underlying passion that goes into creating such world class products. The only thing they’re not too loud about is promotion. You don’t see in-your-face ads from these guys. And when you do, it’s the product that gets the max screen space, not some celebrity or model.

National Geographic: I’d do anything to work for NatGeo – anything: Narration, production, program design, cameraperson. I’ve admired this company ever since I was a kid and would read the magazine in my school library. There’s so much learning and discovery in what they do, I don’t know if any other company has so many new things happening everyday.

Update:
Pluck is withdrawing its support for the RSS reader from Jan 07, to focus on its (revenue generating) products. Browsers (FF 2.0 and IE 7.0) now have built in support for RSS reading - thats the way of the future, I guess. I'm going to move to Google Reader (second best, imho). Goodbye Pluck, it was good while you lasted.

On a friend's recommendation, I'm going to add Jobster to this list. Again, a clear business model, and really a shift in the way one would think of job sites. It is a focus shift from a traditional “upload and search for resumes” to a “create your online profile” one. Well funded, and steady revenue growth already, and 10% of Fortune 100 as customers.


Friday, September 22, 2006

The Ten commandments for an Agile Developer

I'm not playing God, just being Moses.

I'm putting down things that I feel are important for any developer in an Agile project. For me, any project that involves iterative planning and continuous integration is agile enough to begin with. One can see enormous benefits just by following principles like feature-driven development (FDD) and test- driven development (TDD). You dont have to go from zero to XP or Scrum to be agile. In fact, I think agility is a continuum and each project needs to find its sweet spot on it.

A lot is said and written about the need for self-managed development teams in an agile project. I interpret "self-managed" in a psychological way - I think it is a frame of mind that you need to be in, day in and day out, throughout the project. It requires rigour and a sense of self discipline. This may raise the hackles of developers who think discipline chokes innovation, and it takes out the "cool"-ness out of programming; I'll turn the argument on its head and say that to be truly innovative, you have to be disciplined about your fundamentals.

The rest of this article is about those ground rules. I'm not advocating any Agile process over another - follow whatever processes your project has decided to. This list is a daily to-do list. Over time, these things will be next to breathing for you as a developer (Do you realize how many times you hit Ctrl-S in 5 minutes?). They're really so simple, I should have called this the Zen way of agile development. I've seen its benefits, and more importantly, seen the mayhem caused when these rules arent strictly followed.

Write tests before code. Use a testing framework - there's one available for your language. Writing tests first ensures that you write just enough for the functionality of your program to work, nothing more. We often spend a lot of time writing that one extra method with that one extra parameter just in case you need to use it tomorrow. None of this happens if you first write a unit test before actually writing the code. How many tests should you write? The minimum required to make the code feature complete and secure. Use test suites liberally to create user scenarios involving a set of features. Execute these in your coffee break (Heck, why does the computer need a break?!).

Build from source on your local machine. Every day, before you start work, take the build from the build server (you should have one, btw). Treat every checkin as sacred, especially when fixing a bug. Gone is the era when you could say "it works on my machine". They dont even joke about it these days. Before you checkin, make sure you run the build scripts locally. If it takes too long to make a build, it is the build process that needs fixing (good ruse to ask your manager for a better machine ;) ).

Be lazy (automate everything you can). I mean, thats what the computer is supposed to do, right? Take the repetitiveness out of a job. So, please put the computer to work at the True Purpose for which it was invented. You can build, deploy, test, report bugs, clean-up just by pressing some shortcut key combination. There are plenty of tools available to do this - lots of them are open source too, so there's no limit to how lazy you can afford to get. I'm not going to go into details of how to automate a project (too long, and out of scope for this article), but here's an excellent book that tells you how to: Pragmatic Project Automation.

A feature in the (daily) build is worth two on the (drawing) board. This is about planning how to write your code. Rather than having "database days", where you do all your table design and "UI days" to layout all your screens, have "Create User days" where you write just that one feature - end to end. At the end of the "Create User days", someone who installs the build should be able to actually, create a user in the way your product spec says it should.
Not only is this more gratifying for you as a developer, the whole product starts taking shape much earlier, allowing for mid course changes that may come along because of end user requests, market changes, and... innovation.

Write meaningful comments. If your product is worth something, there'll be modifications to the codebase for years to come. Be polite, and write a line or two about how your method implements the feature. Rather than say /* this method authenticates the user */ (that should be clear from the way you name the method), say /* this method checks the user credentials against the LDAP server. It assumes that the LDAP connection properties are specified in a file called LDAPProperties.xml*/ It takes less than a minute to type that out, and everyone who reads your code - whether to enhance it or to use an API will bless you for it.

Honour change. Change == Good for the product. I deliberately didnt say "accept change". I think we all are mature enough not to crib when requirements change, but we still think of change as something that throws our well made plans awry. In an agile process, assume that change will happen no matter what you do. Plans will change with each iteration, features will change as users start using them, code will change as you refactor and/or integrate. In fact, it is this ability to respond to change that is one of the core tenet in the Agile Manifesto.

Love thy neighbour's code. Code reviews are one of the best software development practices I've seen. A code review can catch a lot of "thingies" early that would otherwise grow up to be "bugs". Especially in a time crunch, we tend to make some easily catchable and fixable errors (we're all so human). Loving your neighbour's code also means understanding it enough to be able to fix a bug in it. Get yourself into the habit of doing code reviews and getting code reviews done. Like debugging, it is a skill that is constantly honed with experience.

Communicate, mate! Key sucess mantra for many things in life - whether it is marriage, a football match or an agile project. If you changed a piece of code in the build, tell the rest. If you are stuck with an algorithm, ask for help. If you think you arent going to meet your deadline, say so upfront. If you found a tool that would save everyone's time, communicate. If you have the next big feature idea for the product, communicate. I think the first thing a project manager should do in an agile project is to setup a communication platform. This could be a wiki, a mailing list, a list of phone numbers, a notice board - or all of them. It is super important that everyone (including the customer) is aware of the status of the project on a daily basis. Use all the
tools you can to make communication better.

Refactor...when you need to. Developers love to refactor - there's always a better way to write that class. Refactoring code should be a part of every project because of the iterative nature in which the code was developed in the first place. Your only objective in the first iteration is to get the feature to work. In the next, you can revisit the same code (or identify common pieces of code) and refactor it into a design pattern, optimize the resources it
uses and so on. (A good refactoring catalog is available online, most of it is from Martin Fowler's book.)How much to refactor really depends on your priorities at a given time. I think it must be done once, and once is good enough.

Stay with the standards. Use standard ways of doing things wherever possible - tools, coding conventions, patterns. Remember, innovation comes at the next level - the level of your product. Follow a coding convention in the project. I dont care about line breaks and where you place your curly braces and whether it is iCount or i or count, but I do care about what you name your class, what package structure you use and where you place your resource files. Dont re-invent the wheel. Scout the open source world for solutions to some common problems, implementation of design patterns (warning: check the licensing model of any external software you use before you use it). Its okay to make an exception if you are consciously doing so.

Well, this is it, my torchlight on the path of coding Nirvana. I told you it would be simple. Amen.


Monday, July 10, 2006

On Motherhood

I first thought I'd give this a fancy title, something that would appropriately reflect what I felt (and still do) on becoming a mother. I quickly gave up.

Labour is the most painful thing in the world. Period. But the result is worth it. Period.

The image of the first glimpse of my baby will be etched in my mind forever. I could conjure a corporeal patronus just by thinking about it.

Having a baby is the perfect example of disruptive change I can think of. Imagine, suddenly one day there is this new person, who is with you 24/7. Its like a whole new world that opens up. Your priorities come crashing down with a 2-tonne anvil attached. I have trouble waking up to an alarm clock clanging next to my ear, but if my son lets out as much as a whimper, I'm up and out of bed in a shot. Having newbie jitters? Of course I am!

I've noticed another thing. Motherhood is universally uniting, in a sense that now women - complete strangers but moms, presumably- come up to me and we talk about mommyhood like there's nothing else in this world. There probably isnt.



Sunday, June 12, 2005

6 Months Later

i drove from chennai to mahabalipuram in may. for those who haven't been on it, its a beautiful stretch of road along the south indian coastline. just look to your left and you see the beach lazily stretching out into the calm ocean.
the same ocean that erupted last december. as i stared at it as far as i could: just some small waves breaking onto the sandy shore. clean sandy shore. i whiz past a swank looking beach resort. 'nice new coat of paint', i think. 'funny, itsnt tourist season yet' . a minute later i see a huge signboard saying "sunshine beach resort". a 4 foot compound wall. a sick feeling hits the bottom of my stomach as i realise that the compound wall is all thats left of the resort. the other resort i passed by earlier must have been reconstructed/repaired. i'm dazed as i pass by more compound walls.. some old, some newly constructed. names written on some of them, proclaiming who their owner is. on one such wall, "pothuraman" has been crossed out in favour of a "a.selvaraj" in a larger font size: feud. a toddy shop has new asbestos sheets for a roof, and a newly painted signboard. then there are the rehabilitation centers. thatched, single room huts. closely uniformly laid out like lego blocks. right on the beach. right on the beach? the same people probably lived here before. 'why dont they go live somewhere else' , i think. i know. the beach's been their home and means of livelihood forever. so they stay. people stay.
the fear of the unknown is greater than the fear of the unpredictable. or it is the indomitable thing called human spirit that wills one to rise up to a crisis. whatever the reason, people stay. a huge signboard stands erect at a corner, proudly announcing the sponsors of that rehab center. publicity stunt. although i suppose, it does act as an address of sorts. photographs of politicians with boats and fishing nets. earning votes. celebrities doing their bit. i pass by 4 such centers, and they all look the same, save the signboards and the pictures on them. i see colourful sarees fluttering in the breeze, hung to dry on the billboards. very useful. i see a man walking towards the shore. i look at him and a hundred questions run through my mind. is his family still intact? has his grief subsided? has be watched a movie in 6 months? is he angry, bitter, or grieving for what he has lost? or is he thankful that he has survived. fact remains, he has survived, and from the looks of it, life goes on. thats the stark truth and irony of it all.
life goes on.