Tuesday, 21 October 2008
Monday, 20 October 2008
The definition of work was now to make some original contribution to the world, and in the process not to starve.
To be happy I think you have to be doing something you not only enjoy, but admire. You have to be able to say, at the end, wow, that's pretty cool.
Do NOT worry about the opinion of anyone beyond your friends. Don't worry about prestige. Prestige is the opinion of the rest of the world. When you can ask the opinions of people whose judgment you respect, what does it add to consider the opinions of people you don't even know?Go read this essay. Paul also elaborates on some strategies to find "what you love to do" and how you can make money from it... but makes no bones about how its not easy - it requires hard work and discipline. Me thinks its worth it!
If you do anything well enough, you'll make it prestigious.
Much as everyone thinks they want financial security, the happiest people are not those who have it, but those who like what they do.
Seth Godin, on the other hand wonders... "Maybe you can't make money doing what you love"...
Maybe everyone can't, but I'm sure as hell going for it!
Side Note : While reading Paul's essay, I also realisedWhy Parents Will Never Understand Their Kids... And Also Why Uncles and Aunts Will Always Be Cooler!
Wednesday, 10 September 2008
The other day I was chatting with a bunch of new interns at Microsoft. Like most interns, they were young, ambitious, super smart, and quite clueless!
They were eager for advice and direction from a "seasoned" Microsoftie (me, apparently)...
How to decide what "idea" to work on for my "Project"...
We got talking about their final year projects, and ideas for them.
My basic advice was:
- You're just going from 3rd year to your final year. You now know enough about software to build something that other people might find useful.
- You have all the time in the world... (Cos well... you're in college... and we all know how many lectures final year students attend!)
Now is the time to experiment and see what all there is out there in the software world.
1. Follow the buzz in the blogosphere, and get to know the latest. (You can start with checking out my blogroll)
2. Chase anything that you find interesting and read up all about it. (anything from linux drivers, to Facebook Apps, to game programming, to network protocols etc.)
[Yes, you can, and should "chase" multiple different things]
3. Get your hands dirty, and play around with it. Prototype something!
Now that you know you're way around, you can prototype a couple of ideas, and get better ideas, and keep improving them.
Startup plans anyone?
So then I asked them, does anyone plan to do a startup?
They all looked at me as if I mentioned something like "outer space"... (They'd love to explore the idea, but "know" that they're never gonna do that. Its for them "astronauts", not us regular folks.)
They replied "How can we do a startup!? We don't know enough yet! We don't have enough experience!"
Nidhi : "Entrepreneurship is risky and we cant take such risk!"
Mukul - "But its usually better to work for a couple of years and learn before doing a start up and all na? What's the point of thinking about all this till then?"
Deepank : "A start up involves a lot of luck"...
A couple of issues...
I realised that there were 2 problems here...
1. These people had too much limiting social conditioning that "Startups are only for superstars... Its not for us"
2. They don't realise what an amazing time it is for Web Startups! It has never been easier, cheaper and less risky than today!
Me : 6 months ago, did you ever imagine you were gonna be interning at MS?
Interns : *all smiles and starry eyed* Nope... We never imagined we'd be here, doing such cool stuff!
Me : Without hoping/believing or even thinking about the possibility of interning at MS, you guys are here... Imagine what all you guys can do if you'll think about it, and plan it...
You could come up with the next facebook!
Interns : True, but Facebook, is like 0.00001% chance... that's a lot of luck.
You have a whole year of your life, and you need to do a BE/BTech project anyways - why not shoot for the stars!? You might as well build something you enjoy, something you can show off to the world, something you're proud of creating, something that might even take off, and make you rich and famous someday!
Startups have never been easier, cheaper and less risky!
(by easier I mean upfront investment in terms of technical and financial resources in getting your idea out.)
Read some Paul Graham!
Why not give yourselves that 0.0001% chance. Whats the worse that will happen? You're app won't take off... At least you'll learn! And have something to show for it. And you'll have no trouble implementing the next big idea that you have.
You might fizzle once, twice, thrice, but the fourth time you'll come up with something awesome!
Otherwise, you always have all these other start ups that are dying to get passionate people like you to work with them!
Imagine having a Final Year project thats live, and being used by thousands of users! I'd rather hire a kid with such experience than the class topper who has zero real world experience.
So go for it! Take up the challenge... Try building something you think you might need. Scratch your own itch if nothing else, and see where things go from there.
But most importantly have fun with it!
 You're welcome to give me a percentage of your wealth in exchange for all the inspiration... ; )
Tuesday, 9 September 2008
The Art of Innovation is a speech for any stage of company that is trying to create and marketing innovative products and services. The Art of the Start is for the startup stage--but for anyone starting anything.Both of them had a lot of overlap... But I watched both anyways, cos Guy is a fun speaker. I like how he is cheerful and funny, and most of all he's comfortable being casual and "himself".
I've taken notes on them and combined them into "the Art of Starting Innovation".
Why start a company?
- Increase the quality of life.
- Right a wrong.
- Prevent the end of something good.
(basically SOLVE an ACTUAL problem!)
When pitching to VCs tell them what meaning you are trying to make...
Too many people start a company "to make money"... They don't realise that almost all big successful companies were started to make meaning...
Microsoft wanted to put a desktop in every home... all the billions of dollars are just a happy side effect of that. Google wants to organise the worlds information. They're doing pretty well. Facebook started as a simple way for college students to keep in touch...
Make meaning... solve a problem.
Make a Mantra!
A short simple line that encapsulates the essence of your "meaning"...
3 or 4 words long... like...
Wendy's - "Healthy Fast Food"
FedEx - "Peace of mind."
Nike - "Authentic athletic performance"
Target - "Democratize design"
Jump the next curve
Don't do better sameness... Rather than 10% better... Go for 10 times better!
Change the playing field altogether.
eg. Amazon with Kindle!
- Think different!
- Find a few soul mates...
Build a business model...
- Be specific
You should be able to answer clearly...
"Who is my customer? How do i get MY money from her purse?"
- Keep it simple
Weave a MAT
- Just get going!
Ready, Fire! Ok, now aim, and keep firing!
- Come up with Milestones..
- Assumptions of the company (whats the sales cost? customer ROI?... write them down and test them)
- Task (achieve milestones / test assumptions)
Don't worry, be crappy
Release early and get your product out in the hands of customers as soon as possible. Don't worry about putting in all the finishing touches possible.
Write a business plan, and then forget about it. The exercise of writing it down will help clarify your thoughts, but once you're out in the real world, the customers, and their feedback will shape your product/business.
Create a product that is unique and of great value...
And convince the customer that its true.
Great Value, Not Unique : Compete on price (Dell)
No Value, Unique : Stupid!
No Value, Not Unique : Very Stupid! (eg. selling dog food online during the dotCom boom)
Great Value, Unique : eg. Online movie ticket booking.
Great products polarize ppl! Dont be mediocre!
Follow the 10/20/30 rule for Presentations.
- 10 slides
Marketing and Sales
Status and Time line
- 20 mins
- Smallest font is 30 point.
Hire infected people
Work experience, educational background, infected with love for the product.
Hire better than yourself!
Hire only those people that you see the first time and want to go up and talk to them, hire them...
Lower barriers to Adoption
- Flatten the learning curve
- Don't ask people to do something you wouldn't do...
- Embrace your evangelists
Seed the Clouds!
- Let a hundred flowers blossom (people use our products differently)
- Enable test drives
- Find the true influencer's
- Listen to user feedback and let it mold your product.
Don't let the bozos tie you down!
- Loser bozos : Useless pessimistic good for nothing killjoys. They'll always say your idea sucks.
- Venture Capital/Industry expert bozo : Lots of supposedly smart people get things wrong.
eg. Almost everyone thought that wikipedia was one of the stupidest ideas of all time...
Don't let bozo's bring you down. Keep the faith.
It's an amazing time to be an entrepreneur! Get started already!
Monday, 8 September 2008
Entrepreneur Daily says :
What happened to the days of laying your head on your desk and drifting off for 20 minutes of bliss? Though most of us haven’t enjoyed naptime since elementary school, some scientists say naps aren’t just for 6-year-olds.
According to a Washingtonpost.com article, “sleep scientists have discovered advantages to napping, which they view not just as solace but also as something akin to brain food.”
The article cites a 25-year survey conducted by researchers at the University of Haifa in Israel showing that naps, when taken in the workplace, can increase productivity and reduce “general crabbiness.”
Other experiments echo those findings. For example, Matthew A. Tucker of Harvard Medical School discovered that a 45-minute nap can enhance the ability to perform tasks relying on memory.
I like being productive and cheerful. Hence I've been experimenting with the fine art of the Power Nap since a while now.
I've done some research myself, and also with other subjects. (Archis is a fellow expert in this art.)
On chairs... and on sofas...
And beanbags even...
Power naps are awesome! Chairs are good occasionally, but can cause back ache if used too often. Bean bags are good, but sofas are the best!
Check this out for the complete low down on how to nap, when to nap and for how long to nap.
Tuesday, 19 August 2008
At the Jubilee Hills Checkpost Traffic signal in Hyderabad, they've been trying to sell paintings and murals for months now, and I'd always wonder why anyone would buy stuff at a traffic signal!? Especially a paintings and sculptures... Until one day, when something actually caught my eye... I found myself having a closer look at a mural of Ganesha. The altruist in me joined hands with the supporter of arts in me (that does not surface too often). Also, I was bored, waiting for the signal to turn green.
Lesson : It's a number's game! Approach a 100 cars, you WILL find at least 5 customers!
Lesson : Relevance! Sell relevant stuff... Try to be there when the customer is facing the problem that your product can solve... So you can give him some instant gratification when he buys your product! Try to catch him in that environment at the very least... So he remembers his needs/pains and can easily see/test how the product will solve his problems.
Selling car cleaning cloth is also a good idea... Also tissue paper... They should also sell car air fresheners... Stuff that we need/want in the car, thats not urgent/significant enough that we'll go into a shop specifically to buy...
We bargained... somewhat...
Hawker : 250 Rupees.
Me : Too expensive...
Hawker : How much will you give?
Me : 150
Hawker : Ok fine.. Take it! Deal.
I was like... Dang it... I shoulda said 100!
Lesson : When you manage to get a good profit from a customer... Don't start celebrating in front of him! Let the customer feel satisfied that he got a good bargain! You won, let him "win" too.
I could have haggled further, but in keeping with my Haggling Principle... I let it go... : )
Sunday, 22 June 2008
I've been recording "cool app ideas" since the past 4 years now, and I'm fed up of seeing new startups stealing them one by one by one... Its time to take action!
Baby Step 1 : Flesh out 3 ideas... Alright... at least 1 idea!
Baby Step 2 : Discuss ideas with smart people...
Baby Step 3 : Research, iterate and get a spec ready.
Boy Step 4 : Build a proof of concept (PoC).
Boy Step 5 : Unleash PoC on early adopters (namely friends and family ; ))
Boy Step 6 : Gather feedback and re-evaluate.
Idea still sounds good? Go on to the next step.
Not quite? Start over... (Step 1 is the most fun and requires the least hard work any way!)
BigBoy Step 7 : Get a team of awesome people together.
Man Step 8 : Now it's time to Start Up!
I'm on Baby Step 1.5 right now...
Are you brilliant? Are you Done and Get Things Smart? Are you Super Smart and Get The Right Things Done?
Most importantly, do you have similar motivations to mine for doing a startup?
[Bonus criterion] Do you possess a sense of humor?
Then talk to me, and get started on Baby Step 1 already!
Saturday, 21 June 2008
1. To create something useful, valuable, delightful, and most importantly something absolutely awesome!
2. To solve a problem that really could use solving.
3. [Bonus] To make the world a better place... ; )
Pleasant side effects of doing an awesome startup...
1. Work with an awesome team of passionate people, and create together.
2. See the faces of delighted customers. (Satisfied ain't nearly enough)
3. Learn! Learn! Learn!
The becoming rich and famous bit is not too bad either... : )
I've been recording ideas since the past 4 years now, and I'm fed up of seeing new startups stealing them one by one! Its time to take action, one baby step at a time...
Tuesday, 17 June 2008
I've been meaning to write down some insights from College ever since I gave an "inspirational talk" to the younger students in AIT last year...
I better write down these invaluable, hard earned insights lest I forget them and have to learn them all over again...
Oh and maybe you'll find them useful if you're in college...
If you're done with college, and have become an overflowing source of (unsolicited) advice like me, feel free to comment and add some tips!
Some of the topics that come to mind are...
- Everyone does not have to be a C programming God!
- Lessons from Engineering...
- How to get 62% with 1 week of studying...
- How to bag a kickass BE project...
- How to bang the living daylights out of a Google/Microsoft Interview...
- Where has the perfectionist gone?
- Exams are just a game...
- 5 simple things that separate a Rockstar Developer from the Average Programmer...
- Going from an Infy Resume to a Microsoft Resume... OR Going from "I'm a clueless kid just outa college, please hire me" resume to a "I love what I do & I'd like to do some great work with you" resume.
- If I was in college again...
- Pratik's Guide to kicking ass in college
- So why are you at college in the first place!?
- Pratik's List of Must Read Articles for anyone in Software!
Friday, 16 May 2008
First the Zen...
Walk in like you're the hottest thing in programming since Joel Spolsky...
Translation - Be calm, cool and confident! (not arrogant!) Imagine that this company really, REALLY wants you... and you're gonna go in and evaluate whether its a cool company to work at...
Of course you need to back this up with some quick thinking and some even quicker coding/answering.
Then the Basics...
You need to go and
revise study all the "Data Structures & Algorithms" stuff you'd (hopefully) done back during your second year of engineering!
You need to be able to play with pointers in C...
You need to be able to analyse algorithm complexity... yes the big O is important!
And you need to really grok recursion!
And of course...Object Oriented Programming concepts...
I'd recommend Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss & Object Oriented Programming in C++ by Balgurusamy.
The Next Level...
What you need to really seal the deal is some advanced programming techniques like Dynamic Programming, Memoization, Backtracking etc.
Just reading a couple of tutorials on these & solving a couple of the problems in your head is not going to work. You really need to get your hands dirty and practice coding these. The best place to get cracking at the "advanced techniques" is at the TopCoder Algorithm Contests. They've got tons of practice rooms that are made for this!
They've also got the best tutorials...
Course stuff... (for those fresh out of college)
Depending on who's interviewing you, they might ask you about the fundamentals of Networking, DBMS & Operating Systems if you've studied these courses. You should be able to talk about you're Degree Project. Why you chose it... and what you've done in it...
Work / Project stuff...
You should be able to talk about the area in which you've worked... and about you're specific contributions to the projects.
You should be abreast with the latest in the field... and you should also know about the domain of the company you're interviewing with.
Also... you REALLY should be able to explain how the Internet works today!
Must Read Articles... (apart from this one...)
Joel Spolsky's Guerrilla Guide to Interviewing
Steve Yegge On Interview Preparation (SteveY read my original post, drank some wine and basically elaborated on all of my points...; ))
General Interview Strategy...
Lessons from a Microsoft Interview...
There's lots more to add... but get the basics handled first... then we'll talk about the rest...
Feel free to comment and ask me anything...
Note : All these "Interview Tips" will help only when applied on top of an already solid base of interest, curiosity, passion and skill in programming and building software.
Don't think you're gonna be able to fake your way through multiple tech interviews.
(So what if I managed to do that both at Google and at Microsoft? ; ) )
We need to hire a dev vendor in my team at Microsoft IDC, for the (top secret ; ) ) project I'm working on.
I was waiting with anticipation for some candidates to show up... because I'd just finished my "Smart Hiring @ Microsoft Interviewer Training", and I couldn't wait to get my hands on a smart but nervous, unsuspecting candidate... to experiment with! Bwahahaha!
One fine (late) morning I strolled into office to see a Candidate being interviewed by my teammates. The first bakra (erm bakri), had arrived! *evil grin*
Lets call her Candidate. Her resume said that she has a Masters in Computer Applications, and 3 years of work experience in "ITServicesCompany" . It also said that she was proficient in .NET, C#, ASP.NET etc...
They had asked her a few questions about C# etc, and she seemed to have done decently, though she had no clue about ASP.NET or web programming!
So we (My Dev Lead Kiran and I) decided test her "problem solving skills", "object oriented concepts" etc. We dint ask them what they thought of her cos we wanted to form my own independant opinion of her.
The First Question...
After some small talk, we gave her a simple warm up question -
Q. Write a function "IsSmaller" to compare 2 dates, where the dates are represented as integers with the 4 most significant digits being the year, then the month, then the day.
eg. int todaysDate = 20080516;
int tomorrowsDate = 20080517;
// Today's date will be smaller than tomorrow's.
She took 5 mins to settle down and understand the required function signature. (For some reason she wanted to print the smaller date in the function instead of returning a bool - reminding me of our college programming assignments...lol).
She : Ventures a guess - "We can use the .net class Date and its Convert function".
We : "Erm... How?"
She : Rambles unclearly about Date.Convert.
We : "We're glad you know about the Date class, but is there any other simple way of doing it... really simple... without any library classes? Use any language, even pseudo code is fine."
She : "We can convert it into string and then compare the year."
We : "Uh huh" (gave her some examples to work out...)
She : "We'll also need to parse the month."
We : "That's it? Only year and month?" (gave some more contradicting examples)
She : (still lost...)
We : "Apart from strings and converting...any other way?"
She : "Date Class"
We : *sigh* "Ohk... can you write a function to convert the integer to a string?"
She : "We can use the Int.ToString() method."
We : "Erm, we meant without using that library method!"
Struggling, she finally figured how to convert a single digit number to a character after lots of prodding and hinting. But she failed to realise why or how it wouldn't work if the number was more than one digit, say 12.
We gave up : "Ok... we'll get back to this problem... Moving on..."
The Next Question...
Q : How would you sort an array of a million integers where all the integers are within the range from 1000 to 2000?
She : (goes into QuickSort, MergeSort etc.)
We : "Ohk.. what all sorting techniques do you know?"
She : "QuickSort, MergeSort, BubbleSort... erm... umm... InsertionSort..."
We : "Complexities? "
She : "Quick and Merge are O(nlogn)... Bubble is erm... O(2n)"
We : (Scared to ask her what the "Big Oh" meant...)
We : "Are you sure... about BubbleSort... how many loops are there?"
She : (after fumbling for 2 mins) "N squared!"
We : Phew!
We : "Ohk... what if i have an array of 20 numbers all between 1 and 4?"
She had no clue we were trying to get her to think of CountingSort/BucketSort!
Then I had her sort 10 numbers manually... Still she couldn't describe the BucketSort Algorithm that she used!
We : "Ok... If you had to write a routine to sort 10 numbers, what would you use?"
She : "InsertionSort"
We : "1 million numbers?"
She : "QuickSort"
We : "10,000 numbers?"
She : "InsertionSort"
We : "Good...Why?"
She : Thinking... Struggling... "I had read this long back in a book... but I cant remember now!"
We : AARGH!
I gave up...
Kiran gave her some very basic, typical problem on inheritance, and overriding functions, and again she had no clue!
Frankly, I wouldn't hire her to write code if someone paid me for it! Cos I'd have to sit and clean up all her crap, after spending a day trying to explain to her what she needs to do and how!
It's not that the Candidate was stupid. The problem is that she probably doesn't care about programming and/or doesn't have very much of an aptitude for it. She probably just studied MCA to get a job in the "hot" IT industry.
I came out thinking...
"What a waste of time... She wasn't even cute! How can someone be so clueless?!
WHOA! I am SOOO much better than her! Ouch... did I just compare myself with her?
Now I know why it is so hard to find good programmers and why Microsoft/Google etc pay us so much!"
The interview gave me a brand new appreciation not only of my own programming skills, but of everyone at MS... Especially those guys who we sometimes judge for not being as sharp or fast or good programmers... Every single developer, every single tester and almost every PM at MS understands, likes, and "gets" software!
This is one of THE reasons I love working at Microsoft! I'm surrounded all day by awesome, supersmart, or at the very least super intelligent people who love what they do!
What about you? Can you answer the "super-tough" questions we asked our candidate? ; )
Which reminds me, I need to import my post on "Microsoft/Google Tech Interview Tips" from My Space to this Blog.
Thursday, 1 May 2008
"The hallmark of an architecture astronaut is that they don't solve an actual problem... they solve something that appears to be the template of a lot of problems."Well, I have seen a fair bit of this from Microsoft... and the big companies in general...
They tend to become so obsessed with being the "platform", and "enabling developers to make the coolest apps" etc, that they forget that the bright young kids they hire could possibly make "the coolest apps" inside Microsoft itself!
Its as if they'd rather leave the "creative", "awesome", "remarkable" apps that users love and need for the start ups and high school kids to write on top of their platform. And then they gloat about how their platform enables people to realise their potential!
(No wonder MS branding is not everything it could be...)
They'd rather attack the technically tougher challenge of building the platform, than the more creative challenge of dishing out killer apps!
But then again, that's one of their strengths isn't it? All the complex architecture and technology... That's something MS can do and a high school drop out start up simply can't.
Me thinks Joel's right about "solving a real problem and giving the customers what they need and want". Thats brilliant advice for everyone... From start ups and small companies... to the gigantic Microsoft, Google, IBM etc...
But on the other hand, someone's gotta be building the next big platform! Microsoft built the last big platform... Windows! And look what that got them... (a vibrant eco-system of software and developers... and... um... also billions of dollars year after year!)
They're out trying to build the next big platform - "The Cloud", and Live Mesh is an integral part of that strategy. They're simply leveraging their strengths (tons of experience and brilliant programmers), and following a tried and tested and successful strategy.
MS should continue building all these "cool new" platforms, but along with them, they should think about what the consumer wants, and deliver that killer app!
Look at Google... their "cloud strategy" started with Gmail (email had been done to death before that), then they added docs and spreadsheets, and reader, and tons of other really useful apps.
They've now gone all the way with Google Apps and AppEngine... Both cunsumers and developers love Google!
Microsoft could take a page out of their book...
The Next Big Thing?
Well, I can see where Joel's coming from here...
"It sort of bothers me, intellectually, that there are these people running around acting like they're building the next great thing who keep serving us the same exact TV dinner that I don't want night after night.
...it's a fun programming exercise that you're doing because it's just hard enough to be interesting but not so hard that you can't figure it out."
One of my friends, Archis actually works on Live Mesh, and I had been hearing "top secret" things about it since 2 years before I saw the demo...
I couldn't help but feel that it was... well... a teeny weeny little bit overhyped!
It dint make me go "WOW!"... I was like..."NICE! This thing does have some potential...!"
Though I have access to it, I haven't yet tried Live Mesh... Which goes to show that its not really super compelling to me...
But having said that, I do definitely plan to check it out soon... (I AM kinda struggling with keeping my files in sync and sharing files with friends... And Live Mesh does sound pretty cool!)
I know file syncing and sharing has been done. But "the idea's been done before", is just not enough reason to NOT do something cool and raise the bar while you're at it... Both Microsoft and Google have done this successfully time and again!
Live Mesh Potential...
Apart from "building a platform, and not just an app", I think the cool new thing about Live Mesh is connecting all your computing devices (computers, mobile phones, music players, xboxes etc) together seamlessly.
Ashutosh puts this point pretty well...
"Our desktops and other devices (e.g. phone) are like big silos of applications, data and information. They exist as isolated entities that connect to the net primarily through browser. That's the reason we see a crop of these web based applications (even a so called OS) that hardly integrate closely with the rest of my desktop.And it gets cooler...
I think Mesh is trying to break that model and open up those silos so that all my devices and their content is always accessible to me wherever I am."
The part I really like is the promise of customising the experience of the same app/data for different devices to make optimum use of the devices' capabilities, thus leveraging each devices unique advantages while making room for the weaknesses.
I can't wait to see some killer apps here!
Why's Joel Ranting?
I think Joel has some super revolutionary ideas (like Wasabi!?), but just can't afford the brilliant programmers to implement them... And is pissed off cos MS & Google have tons of them working on stuff he feels is over hyped...
The fact that MS and Google are driving up the cost of brilliant, apart from hoarding all of them seems to have pushed him over the edge!
I "get" you're pain Joel... But I'm one of them "unsuspecting comp-sci college grads" right now...
I've been "victimised" by both Google and Microsoft...
And I like it!
ReactOS® is an advanced free open source operating system providing a ground-up implementation of a Microsoft Windows® XP compatible operating system. ReactOS aims to achieve complete binary compatibility with both applications and device
drivers meant for NT and XP operating systems, by using a similar architecture and providing a complete and equivalent public interface.
ReactOS is the most complete working model of a Windows® like operating system available. Consequently, working programmers will learn a great deal by studying ReactOS source code and even participating in ReactOS development.
ReactOS has and will continue to incorporating features from newer versions and
sometimes even define the state of the art in operating system technology.
In short, ReactOS is aiming to run your applications and use your hardware,
a free operating system for everyone!
I found this old (July 2006) but useful review of ReactOS...I'm no Operating Systems expert... but I love their smart and pragmatic approach!
They're rebuilding the Windows Kernel from scratch. They realise that Windows NT Architecture is modern, and that NT has learned from and improved upon design flaws in UNIX. So they're incorporating the latest in OS design, and keeping the code lean. (Or at least they're trying to)
Through a windows clone, they lower the cost of switching from MS Windows to ReactOS, while keeping some of Windows' biggest advantages :
- Over 90% of computer users are comfortable & familiar with the Windows user experience (and hence also ReactOS)
- Windows has an amazing eco-system of software and developers writing for the platform.
They also get all the advantages of being Open Source...
Interesting... Definitely more interesting than Linux!
Should Microsoft be worried? Not yet methinks...
Friday, 25 April 2008
I just heard on StackOverflow Podcast 2 that Jeff Atwood does not know C!
I was like....WHOA!!!
Joel's reaction was along the same lines... He tried his best to disguise it politely, but the opinionated software guru inside of him couldn't resist telling Jeff to learn C...
Joel is right… Go learn C Jeff! Not having ever worked with C? Now THAT is CodingHorror!
Alright... for an Evangelist or a Program Manager, it doesn't really matter that much whether you know C or not...
But for a hardcore developer, I’d always prefer someone who’s done some C programming at some point in his life! The odds of finding a "rock star coder" who doesn't know C just seem very, very low to me...
I don't remember the inner details of C anymore, but those “basic” concepts & lessons from C programming have been invaluable to me as a developer!
Lets take an example…
Consider an array of strings “abc”,”def”,”ghi” etc…
and I want to concatenate them…
I could run a loop and use a string like so...
string alphabet = “”;
alphabet = alphabet + strArr[i] ;
Or I could use a StringBuilder and append to it.
StringBuilder alphabet = new StringBuilder();
Which method will be more efficient? Why?
If you don't know the answer, both intuitively & logically, I'm guessing you haven't ever been a decent C programmer...(yet)!
I just thought of a somewhat relevant analogy...
One doesn't really HAVE to know all the deeper details of photography like exposure, shutter speeds, apertures etc to take good photos... Because modern digital cameras simplify (abstract) all this for the amateurs (like me!). Also, we can always go and tweak the photos on PhotoShop...
But do you have any doubt that there are lotsa things that expert photographers can do, that ignorant amateurs simply won't even be able to think of...
Similarly, one doesn't HAVE to have learned C to make a useful program/application.
Yet, at the same time, knowing C gives a developer this sort basic fundamental programming insight, that comes only from coding closer to the machine level. He can use the simplified and abstracted features of higher level languages like C#,VB.net much more skillfully. This gives him a much better chance of writing "technically" beautiful software.
Quick Question : How important is the "technical beauty of code"...?
Short Answer : It depends... Could be absolutely essential in some project, and absolutely unessential in another...
Bottom Line : When hiring a "hardcore developer", I'd love to have one that has lots of potential for producing beauty!
Disclaimer : Though "potential for producing beauty" or knowing C is not always the most important requirement in a developer!
Wednesday, 23 April 2008
I was TEDing around today when I came across this awesome talk by Barry Schwartz, who's also written a book on the topic.
More Choice = More Happiness?
The notion that Freedom + Choice = Happiness + Welfare... is widely accepted as common sense. Also, we assume that More Freedom + More Choice = More Happiness + More Welfare...
And this is exactly what Barry contradicts!
Choices make people feel miserable?
Barry says that too much choice leads to "Analysis Paralysis", and decreased satisfaction!
We set unreasonably high expectations, question our choices before we even make them, and blame our failures entirely on ourselves.
I was thinking about situations in my life... and Barry is right on!
What blog platform should I use?
I was paralysed for months, first in trying to narrow down the options to the best 3 or 4. Then I had to find out all about each of their features and decide which features were more important to me. Then finally I had to choose the best platform!
I took a month to come up with a name for my blog!
I took another month to decide whether I will have one blog for everything, or one tech blog, another personal blog, and yet another hobby blog... etc...
Then I took yet another month deciding on names for each of these!
(Just today I was thinking that "WebbingMyWay" is way too loong a name... and it has no good/easy to say short form... WMW? NYAAH!)
Car or Bike?
Every morning I waste time and energy thinking about whether I should
take my bike (+get to work 5-10 mins faster, +be eco-friendly, +save money, -eat dust along the way, -bake in the sun, -risk getting stopped by the traffic cops)
take the car (+comfort, +music, -take a little longer, -less eco-friendly, - more expensive).
Now that the sun's out in all its glory here in Hyderabad I've gotten too used to the car. I don't feel like getting caked with dust while biking to work anymore. I think I'm gonna stop thinking about this every morning. Dang it! That's another choice to make!
This weekend or the next?
Man...! You don't wanna know the number of hours I've spent thinking about whether it will be better to go to Pune this weekend, or the next..., or maybe the one after that! My thumb gets sore from all the coin tossing even!
So what to choose?
Some choice is better than none, but it doesn't follow that more choice is better than some choice. There's some magical amount of choice though... that is just right. And we need to find it!
The first time I went to get a Subway Sandwich I was sooo overloaded, I took half an hour to decide what I wanted. And I dint go back to Subway for a while after! (Though today I'm sort of a Subway pro, and Subs are almost like a staple diet for me now! did they make it simpler? I'm not sure...)
As far as customer/user experience is concerned, there's a huge "Keep it Simple/Less is More" movement going on all over the web, and elsewhere lately...
The point of it all is that we need to look for that tipping point... the right balance between too much choice and too few options.
On the other hand, as a person, who makes choices everyday, I guess you need to make a quick decision, and forget about the other options immediately... It just doesn't serve you to think about it once the choice has been made, and then become miserable...
If it turns out to be the less optimal choice, go
"Hmm... *shrug* So next time I'll try that other choice. I just learned something! : )
But if only I'd trusted my instinct and done it earlier, I wouldn't have had to learn it the hard way! : (
OK... no point getting miserable now... you can still choose to be happy! : )
Choose?! Again!? I give up! : "
[I am now considering whether to post this in my personal blog or on WebbingMyWay!]
AAARRRGH! I need to have just one blog! Maybe... not...
Tuesday, 15 April 2008
Welcome to my first (of many) "GetOffMyAss Challenge"...
I've been meaning to do a LOT of things in the past year... This year, I'm getting them done!
One of them is to sharpen my Software Design skills by participating in TopCoder Design Competitions...
The other day I mentioned (yet again) wanting to start TC Design, and my friends were like, "There he goes again..." with the full on eye roll and everything. That's when I was like "Alright, I HAVE to stop procrastinating on this already!"
One source of inspiration for me was Harsha, a fellow Code4Bill finalist... This guy is something else I tell you! He just won the "Design Digital Run" at TopCoder!
The main source though is that I need to learn design, and the best (and only) way to learn design is to practice! Also I know I'll kick ass at it if only I get off my ass first!
But this time I really wanted to follow through... (I'll show them doubting, eye rolling friends!) : )
So this time, to give myself some more leverage, I set up my "Design Challenge" on the 11th of April...
1 week goal : Have TopCoder Design set up with all software, and read the "Getting Started" tutorials.
1 month goal : Make at least one design submission that passes minimum rating.
3 month goal : Win my first design contest!
The condition is that if I succeed in the 1 month goal, they take me for a huge treat, else I treat them. The treat gets bigger for the 3 months goal.
This shouldn't be too difficult...
I've already got a copy of "Head First Design Patterns"... And I will NOT hit the sack tonight before getting the TopCoder Design Environment etc set up!
There's a fair number of important/useful/significant things I've wanted to do for over a year now... but I just haven't gotten down to doing them!
I want to do this, and I'm interested in that... I want to read more than 20 different books, finish more than 2 unfinished projects, start another 3 new projects, learn 3 technologies that I should have mastered last year, pick up some new skills etc etc etc...
All good things I enjoy... But I've just never gotten down to them...
...till NOW! And this is where I start shooting down these things in my "Important but not Urgent" ToDo list...
How do I get off my arse and cut through the inertia?
By getting leverage... And that's where this post comes in...
This is the start of a number of "Challenges"... Once I've put them up on my blog, I HAVE to get off my arse and conquer them already! : )
Let the challenge begin!
Monday, 14 April 2008
The web is revolutionising the world...
We have so much information at our fingertips, and soo many services, all for FREE...
How do web companies afford to give away soo much for free?
How does this work? Why is this happening?
How is the web changing business and economic models?
And more importantly, how can one kick ass in the "free" world?
In a brilliant article, Chris Anderson, Editor of Wired Magazine answers these questions and more...
My "free" notes...
The Traditional Free...
Gillete invented "The Cross Subsidy", by giving away razors for free and making money on disposable blades...
They shift the costs from one product to another...Give away the cell phone, sell the monthly plan; make the videogame console cheap and sell expensive games; install fancy coffeemakers in offices at no charge so you can sell managers expensive coffee sachets.
The New Free..
There's a freeky new model emerging based on the fact that the cost of products themselves is falling fast.
Bandwidth, storage and processing power are becoming cheaper and cheaper..."too cheap to meter". The web is all about scale... and the falling prices are bringing the marginal costs of technology, from the point of view of individual consumer consumption closer and closer to zero.
Different models of Free...
Technology is giving companies greater flexibility in how broadly they can define their markets, allowing them more freedom to give away products or services to one set of customers while selling to another set. Every business that touches digital networks feels the effect of falling costs. Practically everything Web technology touches starts down the path to gratis, at least as far as we consumers are concerned.
Between new ways companies have found to subsidize products and the falling cost of doing business in a digital age, the opportunities to adopt a free business model of some sort have never been greater...
What's free: Web software and services, some content. Free to whom: users of the basic version.
(think Flickr and the $25-a-year Flickr Pro).
What's free: content, services, software, and more. Free to whom: everyone.
(pay-per-click text ads, pay-per-page-view banner adds)
What's free: any product that entices you to pay for something else. Free to whom: everyone willing to pay eventually, one way or another.
(give away the cell phone, make money on the plan)
· Zero marginal cost
What's free: things that can be distributed without an appreciable cost to anyone. Free to whom: everyone.
(online distribution of music)
· Labor exchange
What's free: Web sites and services. Free to whom: all users, since the act of using these sites and services actually creates something of value.
(rating stories on Digg, voting on Yahoo Answers, or using Google's 411 service)
· Gift economy
What's free: the whole enchilada, be it open source software or user-generated content. Free to whom: everyone.
Ok... But where's the money!?
To follow the money, you have to shift from a basic view of a market as a matching of two parties — buyers and sellers — to a broader sense of an ecosystem with many parties, only some of which exchange cash. The most common of the economies built around free is the three-party system. Here a third party pays to participate in a market created by a free exchange between the first two parties.
In the traditional media model, a publisher provides a product free (or nearly free) to onsumers, and advertisers pay to ride along. Radio is "free to air," and so is much of television. Likewise, newspaper and magazine publishers don't charge readers anything close to the actual cost of creating, printing, and distributing their products. They're not selling papers and magazines to
readers, they're selling readers to advertisers. It's a three-way market.
What about the Economics?!
Look at any traditional Economics text, and it will tell you that Economics is "the social science of choice under scarcity." But in this "free" world of falling costs, money isn't that scarce anymore...
What then? This is where the concept of "externalities" comes in. This concept holds that money is not the only scarcity in the world. Chief among the others are your time and respect, two factors that we've always known about but have only recently been able to measure properly. Thanks to Google, we now have a handy way to convert from reputation (PageRank) to attention (traffic) to money (ads). Anything you can consistently convert to cash is a form of currency itself, and Google plays the role of central banker for these new economies of "attention" and "reputation".
There is, presumably, a limited supply of reputation and attention in the world at any point in time. These are the new scarcities — and the world of free exists mostly to acquire these valuable assets for the sake of a business model to be identified later.
Free shifts the economy from a focus on only that which can be quantified in dollars and cents to a more realistic accounting of all the things we truly value today.Marketing in the Free World...
Seth Godin says that "The most precious commodity on a momentary basis is attention."
Chris Anderson notes that...
If you want someone's attention, you're going to have to earn it. To pay for it. To do something that makes the person who just gave you this attention feel like a fair bargain was struck. You can do that by creating a remarkable service or product. You can do it by paying them with cash. Or you can do it with free. Free undermines the typical human's proclivity to ignore every offer. Even if it's a penny, we'll ignore it. Buying attention becomes a marketing expense.
From the consumer's perspective, there is a huge difference between cheap and free. Give a product away and it can go viral. Charge a single cent for it and you're in an entirely different business, one of clawing and scratching for every customer...
...Zero is one market and any other price is another. In many cases, that's the difference between a great market and none at all.
The interesting thing about most products and services is that we won't buy them until we know what they are and what they do. And often the best and only way to do that is to use them. For some products (like music) using them once and owning them are very close to the same thing. Hence, free. You can view that as a problem or you can see it as an opportunity. Up to you.
Marketing is not advertising, not any more. It is often found in the way you make something, talk about it and yes, price it.
Wednesday, 9 April 2008
Stanford is just awesome!
The brilliant people, the entrepreneurial pulse... There's something about the energy there... that's
calling shouting out to me!
They have an "Entrepreneurship Week" every year, and the last one was in Feb 08.
They got some seasoned entrepreneurs together to interact with the students, to inspire them, and to share some of their hard earned entrepreneurial wisdom.
They also had "The Stanford Innovation Tournament"...
You HAVE to check out the winners!
Your challenge is to create as much value as possible using rubber bands.
You can use as many as you want, of any size, shape, or color. Value can be measured on any scale you choose.
Remember, value comes from actually implementing your ideas and delivering results.
To be successful, challenge assumptions, seize opportunities, be creative, and Make it Happen!
My favourite is... umm... lets save it for another post...
In my last post, I explored some "Naming Guidelines for Web Apps and Companies"...
I'd been hunting for the right name for my blog for almost a week... But I wasn't getting anywhere closer to finding THE name yet.
I knew what my blog was going to be about... "Notes, thoughts, and ramblings on software, entrepreneurship and the web".
So all that was left was to find a name thats...
- easy to spell,
- fun to pronounce etc etc.
- AND manages to signify what my blog is about,
Oh and the last little detail... the domain name must be available!
I looked at some of my favourite blogs for inspiration.
I dint want to use PratikStephen.com for this blog (a la Paul Graham).
I dint want to call it pratikstephen.blogspot.com(a la Steve Yegge and Seth Godin).
PratikOnSoftware dint quite sound right (a la Joel Spolsky).
I thought about PratikOnTheWeb... but nyeaahh...
I liked RandsInResponse and CodingHorror as names... but couldn’t think of anything there...
...till “PseudoProgrammer” struck me.
Ok, not short, kinda catchy, definitely not sexy, but it does kinda summarise my blog, in that it’s not a hardcore tech blog about multithreading, compilers and assembly language.
I thought it’d be cool... that when the blog takes off, people might say “The PseudoProgrammer wrote this brilliant, insightful and entertaining post about...”
But when I asked a couple of people, most were like it’s too long, and pointed out that “pseudo” has too much of a negative connotation...
Plus I liked it, but dint love it.
Next was PseudoTech! As in Pratik’s PseudoTech Blog... but pseudotech.com was taken!
Then came PseudoTechie... which was nyeaaaahhh!
Then came WebWay, which was not available, TheWebWay wasn’t available either...
WeavingTheWeb, WebWeaver, WebSlice (Mahen’s suggestion) and WebbingTheWay were all taken!
That’s when “WebbingMyWay” hit me... and it was available!
I snapped it up immediately... It sounds good... and it summarises my blog pretty well too!
Tuesday, 8 April 2008
The amount of time I've spent thinking about the right name for my blog is insane!
But then again, having the right name IS super important!
Ask Mr. Lakshmi Kiran Khadalavda... or Aparshakti... or Sage Moonblood (Sylvester Stallone's kid), and they'll tell you...
(I guess some parents just love being creative more than they love their kids...)
No offense parents/kids! Those are... well... unique names!
Anyways, I love my blog, and I don’t want other blogs to make fun of my blog when my blog becomes big. So I put a good deal of thought into the name.
There are a number of “Naming Guidelines” for websites like keeping it simple, short n easy to spell. These made sense before the google age, when people used to (had to) actually type out the url... Also, back then, every “PerfectName.com” you thought of wasn’t already taken.
Lately though, its all about “NamingGuidelines 2.0” with all the web2.0 fluff...
The name has to be unique, googlable, full of keywords etc.
Also, it positively must look like a 5 year old got the spelling wrong! (So that you have a decent chance of getting “PurrfectName.com”... Which also happens to be cute and hence resonates with customers.)
One interesting thing I noticed is that most of the most popular Web Apps/Sites out there have names that follow the same pattern...
They all have two syllables, one stressed syllable followed by an unstressed syllable.
To have added effect throw in some alliteration... like Google, PayPal, YouTube etc.
These words "sound nice" and tend to roll off the tongue easy.
But then again, that’s all about naming web applications and companies... What about naming a blog?
What should I name my blog!?