1986 Bill Gates Interview

Chanced upon a Bill Gates interview back in 1986. It's very interesting to see his view points on various things - from programming/programmers to mathematics to CD ROM. Bill Gates has suggested a few technologies to come to the fore front; a few have succeeded, a lot haven't.

 

Original interview: http://programmersatwork.wordpress.com/bill-gates-1986/

 

Excerpts (more of notes to self than anything else):

 

Great programmers are critical to create software products. But we don’t believe in a prima donna approach, where just because somebody’s good we let him not comment his code, or not communicate with other people, or impose his beliefs on everyone else.

 

 At certain levels we’ve got business managers, but we don’t have non-programmers really managing programming projects.

 

... but I think you’d find that the programmers who sit down and code at the beginning are only using that as a scratch pad. It’s what’s going on in their heads that’s most important.

 

Little inefficiencies can slip into the program along the way, and if you want to really feel good about it, you’ve got to maintain the thought that you’re not going to let that stuff creep in. …. I’d go back and recode other people’s sections of code, without making any dramatic improvement. That bothers people when you go in and do that, but sometimes you just feel like you have to do it.

Excerpts:

 

Some people just jump in and start coding, and others think it all through before they sit down, but I think you’d find that the programmers who sit down and code at the beginning are only using that as a scratch pad. It’s what’s going on in their heads that’s most important.

 

Well, first of all, the programming team has got to be made up of people who respect each other, because the work is really intimate; it’s like being in the same play together. So much judgment and creativity goes into a programming project. Some of the great programmers can’t work on teams; they just like to work on their own. But I think there’s an element of greatness that comes in learning how to work with other people and teach them.

 

Things have changed from what used to be the case with BASIC but high level languages haven't really gone any far on this one:

Software tools are getting so much better. It is possible that we will eventually be able to take just specifications and a description of what the machine is efficient at, and then have some super high-level compiler do a lot of the work that programmers do now.

 

Its like people who play cress. When you’re really into playing chess, it’s easy to memorize every move in ten chess games, because you’re involved in it. Other people look at that recall in chess players, or in programmers, and they think it’s like some freak show. But it’s completely natural.

 

I still think that one of the finest tests of programming ability is to hand the programmer about 30 pages of code and see how quickly he can read through and understand it.

 

INTERVIEWER: Is studying computer science the best way to prepare to be a programmer?

GATES: No, the best way to prepare is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating system.

 

If you ever talk to a great programmer, you’ll find he knows his tools like an artist knows his paintbrushes.

 

I doubt this ever took off to such a large scale. I keep hearing one or two people talk about rule-based programming but that's about it:

What’s going to really be different is rule-based programming. It’s different, because instead of just writing the program and saying: “If this happens, do this and if this happens, do this,” which is the way programs work now, you’ll write rules, and then you have this little reasoning engine that looks at the current set of facts and the rules. Then it tries to derive new facts and act appropriately.

 

This is the master piece:

Our goals are very simple. We’re going to create the software that puts a computer on every desk and in every home.

 

And then there's a whole lot of discussion about CD ROM - funny to read it now.

We really believe we’re going to have CD ROM machines in every car and in every house. And when you go to a new area of the country, you’re going to stick that little disk in there and pan around and have it show you routes, and have it tell you about points of interest.

Grass root enterprise indeed!

What Sony Ericsson service said would take one week, total data wipe out and Rs. 12K to replace the entire board and resurrect my K790i was done by a vendor in a 2.5ft wd shop in Richie Street in 1hr and the phone was restored back to the exact same state before it went dead/dormant for a year.

http://shekharkapur.com/blog/2010/07/a-blackberry-addict-discovers-grassroots...

Paul Graham's Hackers & Painters

Paul Graham’s Hackers & Painters is a very interesting read for anyone looking to make a living out of programming. Here is an interesting quote:

Great software, likewise, requires a fanatical devotion to beauty. If you look inside good software, you find that parts no one is ever supposed to see are beautiful too. I'm not claiming I write great software, but I know that when it comes to code I behave in a way that would make me eligible for prescription drugs if I approached everyday life the same way. It drives me crazy to see code that's badly indented, or that uses ugly variable names.

BankBazaar is looking for Superstar Engineers

Contact Info: Iype Isac (CTO), 98844 12060, careers [at] bankbazaar [dot] com.

Do you know any company which has done the following within a span of 15 months (with a core engineering team of just 10 people)

Built a system which has completely replaced the online acquisition platform of:
- India's biggest home loan lender
- India's biggest auto loan lender
- India's biggest personal loan lender
- India's biggest credit card issuer

Why would leading portals (MSN, Economic Times) route their entire customer base to us for loan related information?

Why are leading banks asking us to rebuild their internal banking systems using our platforms?

The reason: Our superior platform has trumped existing platforms in delivering better results at much lower costs. And what's behind the platform - a world class team of engineers who have it in their DNA to improve & excel. We are expanding rapidly and are looking for more super stars to join us.

About BankBazaar
BankBazaar.com is a technology centric company providing innovative products/services in the retail banking space.  Started by team that built Amazon.com's online credit card product pioneering in real time credit delivery, our team today is 35 strong with the top online technology specialists from Amazon.com, Microsoft, and Trilogy from universities such as CEG, REC-Trichy, Columbia, Georgia Tech, Virginia Tech, ISB and other top rung universities. BankBazaar has secured funding in July 2008 and we are showing strong revenue growth month over month.

What do we do?
We develop products that power www.bankbazaar.com and online loan/credit-card delivery systems of top Indian banks like HDFC Bank, ING Vysya, ABN AMRO, HDFC LTD and the finance section of popular sites like MSN India, Economic Times.  The core work involves building the BankBazaar platform and highly scalable applications on top of it. This includes development of business rule engines, business process automation workflows, highly customizable web site platforms and intelligent credit decisioning and fraud detection systems.  In addition, we are extending the usage of the same platform in branch banking and mobile banking.

Why work for BankBazaar?
You will be a part of a small core engineering team that is revolutionizing the banking software/services industry.  We maintain a flat organization and an agile work environment. Each engineer carries a lot of ownership and adds tremendous value by working on high impact problems using innovative methods.  Being a startup, everyone is exposed to the big picture and gets the opportunity to be a part of the big decisions. We are a fast growing company providing excellent learning and growth opportunities.

Want to join us?
We are seeking smart programmers who are gung ho about building large scale systems that are going to have a big impact on millions of customers around the world.  These are the skills/qualifications that are preferred:

    * Bachelors or Masters engineering degree from a reputed college
    * Strong grasp of CS fundamentals and excellent problem solving abilities.
    * Experience with hands on coding and independent ownership of software components
    * Advanced knowledge in performance, scalability, enterprise system architecture, and engineering best practices.
    * Web savvy, Experience with Java, PHP, MySQL and Javascript

Send your resumes to careers [at] bankbazaar [dot] com if you are interested and spread the word around :)

Car loan - Challenges

As some of you might have noticed BankBazaar’s portfolio is growing rapidly. The recent addition is car loan. As with any other business there were various challenges at various stages. First it was convincing the banks that our model is unlike any other lead aggregation model and that it is much cheaper and efficient. As would have known already BankBazaar doesn’t “sell” a loan. A loan application at BankBazaar is highly transparent and intent driven. The user has the option to compare various banks by the single most important parameter, the total cost of a loan, which includes interest rates, taxes and fees; pretty straightforward. In spite of the convenience provided it has never been easy to convince customers. This challenge gets compounded in the case of car loans. The dealer (who gets a significant cut of the loan, btw) hand holds the customer through the loan process. Customers fall for it not realising that the interest rate provided need not be the lowest and there is a lot of bargaining to do to get the best deal. One solution that has currently been put out at BankBazaar in association with HDFC is a discount in interest rate and processing fee. Let’s see how it goes. Do spread the word.

Moving on - Clojure

Until recently, I was a staunch believer in Java; of course, not without reasons. Here is a short list of things I found useful & convenient. Note that this list is as per my expectations as a naïve & novice programmer.

  1. Strong type system meant that I know what is in hand. This resulted in eliminating quite a lot of errors at compile time.
  2. No pointers. This was kind of a shock for me. I had always appreciated the ability to store links especially when it comes to data structures. Once I figured out the trick to live without pointers life was much easier. One more source of errors is eliminated from my code. No more debugging segfaults.
  3. Strong exception system let me anticipate errors and handle them gracefully. 
  4. A rather well defined OOP. List all advantages of OOP here. Java did a little *cleanup* of C++. Confusions and those that hamper readability of code like operator overloading and multiple inheritance were removed.
  5. Other strong advantages. A great set of library, platform independence, strong IDE support (of course the above points played a major role here)…etc.

But as you approach “I know what I’m doing” these advantages would rather become sources of frustration. Code would be verbose than required; you feel strangled by the type system and exception system; you would find yourself having to learning a lot of best practises, industry standards, design patterns …etc. to overcome the inherent deficiencies of the language. There are two routes from here

  1. Religiously believe Java (also name x, y and z which are in the same domain as Java) as the best language out there and never realise that you are indeed at a disadvantage.
  2. Learn a more powerful language; a lisp preferably or a modern language like Scala, Erlang or Groovy.

I was introduced to Erlang and Clojure quite a long time ago. But I was in (i). This coupled with the inertia (a fancy term for laziness), resistance to change and the lack of a place to apply my learning meant that I never took that up. If you are in an established company it is highly likely that you could never introduce a new technology. This is definitely not a bad thing. Of course, every company runs for profit and they don’t want you to be a rather irreplaceable resource. This is where working in a startup became an advantage. The list of language and technologies used in my present company goes on and on: Java/J2EE (struts, spring, hibernate, freemarker, ognl, velocity), Groovy/Grails, Python and now the latest introduction Clojure (not to mention other front end technologies) and introducing a new useful technology fitting a particular problem domain was well accepted and was the general norm. Also, I was exposed to these brilliant and thought provoking articles by Paul Graham: Revenge of the Nerds & Succinctness is Power

I decided to update my toolbox and started learning Clojure. Why Clojure? The reasons are pretty much covered here. My major strong point was that I felt functional programming and lisp are a totally new way of thinking but yet clojure makes them usable in your day to day life. After using clojure for well over 3 months I feel my decision was indeed wise. A direct impact of this is that my Java code is much more succinct and yet readable. The impact was not limited to Java; my entire style of thinking was altered (in a good way). It does help you if you understand the limitations and drawback of the tools/technologies that you use. Functional programming is indeed radical, fancy terms like TDD would be just a way of life. This is a direct advantage of the fact that every function is self-contained and the scope/environment is small and easy to setup. That’s just one example that I felt personally. I definitely feel more satisfied now. Take a look at an example from the book Programming Clojure:

Read the rest of this post »

Gurjap Singh Kohli, VP, BankBazaar.com live on CNBC Awaaz

Gurjap was live on CNBC Awaaz answering various queries about home loans, pre-payment and the process involved.

Part 1:

Part 2:

Review of Zune HD

(Copied from Crunchgear)

Having used Zune HD for over a month now I thought it would be good to write a review about this unfortunate little device shadowed by market leader iPod. No boring long paragraphs; let me quickly list down the pros and cons.

Cons first:

  • Missing features & apps: if you had used any recent generation iPod, there is a chance you would miss the following: Alarm clock, Calendar alert & integration with Outlook, tasks & TODOs, apps & games.
  • One touch pause/play: requires a button press and a screen touch to pause/play; could be an issue outdoors.
  • Battery life: battery life is really good for music/radio but goes down drastically with Wi-Fi on or apps.
  • No USB file support: Yup, you cannot use it as a USB drive.

Pros:

  • OLED screen: excellent in bright environment; enhances battery life. The screen is scratch proof. You would still need a scratch-guard as it’s not really oil/dirt proof. Comes with mutli touch too.
  • Processor/Graphics: Excellent. Tegra processor has real HPJ. Built-in games would demonstrate this well; no hiccups. Had a chance to compare graphics side by side with an iPod touch; Zune HD wins hands down. As an incidental side-effect you get to watch your HD videos in hyper-quality.
  • Radio w/ HD: I know iPod nano 5th generation has brought in radio/FM too. You simply can’t miss the 10+ FM channels if you are in a city like Chennai.
  • No iTunes: not sure many would agree with me; I hate iTunes to the core. Zune software has a refreshing new look& feel. On a related note, there is no lock in: yes, you can sync with multiple computers with guest sync support. Wireless sync lets you go cordless.
  • Intuitive interface: for a change MS has made Zune HD really usable. Try it once to appreciate it.
  • Well built: Well-built and boasts a masculine bold look. I hate the iPod nano esp J.

Other features:

  • Zune pass: while not a real treat if you are outside US; it is indeed a great deal for music lovers. For $14 you can listen to unlimited songs; better yet you get to download 10 songs as well.
  • Browser: Zune’s browser is good enough to access emails/twitter. The fact that it’s a variant of the windows mobile browser would show up in heavy sites. Lacks flash though.
  • Keyboard: Zune’s on-screen touch keyboard is indeed useful. Auto correct feature is really good.
  • Power-off: You can “power-off” for real in a Zune HD.
  • Not really an advantage, but I do like the fact that I can automatically exclude and “remove” songs I hate/dislike. It’s usual for me to copy a whole album, listen to all the songs and after two or three plays mark a song as “dislike” in one click. It would eventually be removed in the next sync. I love this feature; helps me free up a lot of space without much effort.

Useful reviews:

Crunch gear review: http://www.crunchgear.com/2009/09/18/review-zune-hd/

Zune HD’s UI: the full tour: http://www.crunchgear.com/2009/09/16/zune-hds-ui-the-full-tour/

Review of the 3D games: http://www.crunchgear.com/2009/11/11/video-checking-out-the-zune-hds-new-3d-games/

Engadget review: http://www.engadget.com/2009/09/17/zune-hd-review/

CNet review: http://reviews.cnet.com/mp3-players/zune-hd-32gb-platinum/4505-6490_7-33665869.html

 

 

Should English be used in all Software and OS?

An article today grabbed my attention today. It brought one nasty aspect of software; language, not the programming one. The article claims it’s important that you use your software and OS in English. The reason specified was very valid and is perfectly practical. But I disagree that everyone should be forced to use English. I’ll list down my view point and “my” opinion on why it is wrong to enforce English as the only language.

The reason as per the article is that a search for an error message might not be futile in your native language. This IMHO is a limitation of the search engine. Search engines should evolve to search by semantics rather than just plain dumb words. And all indications are pointing that each and every search engine is working hard to achieve that goal. I still remember the very first search I did in Yahoo! in the 90s. The results were mostly dumb. We have come a long way from there and we have miles to go indeed. This process can only be accelerated if more and more people start using the web in their native language; the language they feel more comfortable with. Domain names in non-English languages, Unicode as standard encoding format for everything from your source code file to email, more and more blogs and sites in non-English languages, local versions of major sites…etc. indicate we’ll reach there eventually. Asking the whole world to learn English is neither feasible nor acceptable. If information has to reach people who need it the most, language should not be a barrier.

Deal? No-Deal? and The Gordian Knot

There is no better way to exemplifying “simplicity” than the current block buster program Deal? No-Deal? In SunTV. If they were to telecast a program where a participant is asked to choose a box out of 25 each of them containing an amount between 1 and 25lakh and leave with whatever they win, would anyone watch? Of course, no. And so the all “intelligent” crew behind the show came up with an idea that has no parallels. The participant should not open the chosen box instead they will open the remaining 24 boxes to finally find out the amount in box 25 i.e., their chosen one. Wow! And lakhs of viewers sit in front of their television “engulfed” in the thrill and suspense of the program not willing to spare a minute as otherwise they would miss a box opening ceremony. Anyway, sarcasm and scepticism aside, only Kalanithi Maran can market such an idea and yet be successfulJ.

BTW, it’s not a rare event that I come across similar things in code. A simple example, given a requirement to show one element in addition to list x in the UI, would you create a new list with exactly the same elements as list x plus the extras required or define complex polymorphic code that through some magic adds the extra element only to find out it won’t work in a second place? Of course, complexity is always fun.

Remedy: Read the story of Gordian knot once a day every day before you go to sleep for forty days.