- Ask questions until you get the big picture. Understand as many usage scenarios as possible of the software that you will design.
- Draw block diagrams. Tip: Use simple whiteboard slates. It helps to organize your thoughts.
- Identify data models and interfaces.
- Design modules as individual entities which do 1 thing (only 1 thing) but do it well. Look at *nix commands. Most of them are designed to do 1 and only 1 thing, really really well. That's why it is so easy to create mashup shell scripts.
- Modules should be independent of each other. Avoid unnecessary coupling. Write glue layers if you want to make 2 independent modules talk to each other.
- Draw flow charts.
- Always remember: If a problem looks too big, too difficult to solve, break it down into many smaller problems. Then solve these smaller problems one at a time. Then piece the small solutions together to get your total solution. Divide and conquer.
- Never ever ever stop learning. Never.
- There will be days when you feel dispair, disappointment, failure. Take a break. Sleep it over. Next day, it's go time again.
- Enjoy the work. Feel the accomplishment of your system architecture taking shape. Running flawlessly. Party. When it crashes (and it will), roll back your sleeves and fix it.
- When you have your software architecture (diagrams, sketches etc.) ready, it's time to code. Every time you write a new class or a new function, write comments first. List down, step by step, what your code in that function will do. Then insert code in between those comments.
- Save often!
- Before you compile, review your code. Target: 0 warnings, 0 errors first time and every time.
- Use git. Stage and commit related changes together. Write meaningful commit logs.
- Software architecture is an Art. Master it with practice.
- Think beyond conventions. Learn from what others are doing. Design with an open mind.
- Eat a brownie
Desktop 3D printers will change the world.
A friend's friend pointed out that "This looks like the PC industry in the late 70's" (Edouard Roquette). I think this is a brilliant foresight.
In 2012 we have seen a number of Desktop 3D printers that promise to be quite cheap. If this trend continues (and it will), it won't be too long before desktop 3D printers become a commodity. Every home can have one.
The ecosystem around 3D printers is still nascent but with huge potential. I love what ShapeWays is doing. It's a marketplace for designers to get quick prototypes of their designs, and also sell their designs. Thingiverse is incredible - a place to find printable designs for real world.
I think what really made "PC" a commodity was the easy to use software. The mouse and the graphical user interface. That is how Apple and Microsoft changed the world.
I have an idea. What if we combine depth cameras with desktop 3D printers? What if you could design things on your computer by just moving your hands, and then have them created right away by your 3D printer? What if you could teach your kids to make things on computer instead of just paint them? What if you, a designer, could make designs by hand, like a sculpture? What if you could go to Ebay or Amazon, find something that you like and pay for it, and it gets printed on your desktop, instantly? What if?
Now that WILL change the world. Time to make this happen!
My designer has made 4 design concepts for the sixth sense plug. Pretty excited about concept D. Check them out!
Sixth Sense - my new project. It's a different take on automating things around you. Making conventional everyday equipment smarter.
The promise of smart homes is largely unfulfilled. It costs way too much and requires tricky installation which is usually impractical.
Yet, the convenience of smart home is quite alluring. So Sixth Sense is my attempt to make this convenience available to a broad spectrum of users. Affordable and easy to use, that's what I want to achieve.
Today I've made some progress towards getting some prototypes ready. The design is in place. Now time for some dedication and hard work. Go go go!
After playing around with the Texas Instruments CC2540 Development Kit and writing an iOS app for it, I have some notes I'd like to share.
Heading off to Peng Hu, the little group of islands south of Taiwan! This should be a fun holiday and a welcome break from hectic work.
I'll take this opportunity to play around with the HDR and bracketing features of my little big Canon S95 :-)
Earlier I didn't even mention about some of the other important things to come out of IO.
Nexus7 tablet... Only $199 and it is sleek! It is smart too the way Google has left out a rear facing camera. Who uses it on a tablet anyway? This tablet should be worth every penny.
Android Jelly Bean is here. At first glance it seems like a simple incremental release over ICS. It is, but with important features like offline maps and cards. Check out "Google Now".
Seems like smartphones just got smarter :-)
Not quite sure what to feel about Nexus Q. The orb looks sleek and it's marriage with Android phones is interesting, actually expected too. But let's just see how it fares.
Boy oh boy!! Has that been a blitzkrieg?
Google Glass... Yours for $1500 starting now if you are there at the conference. And that is NOT at all expensive as some wise people think. These are developer only units, meant for geeks and visionary entrepreneurs to pick up and build the next generation of mazing products. $1500 a piece is nothing. It is just high enough to ensure that those who invest will make serious use of it and come out with great apps for Glass.
Google Drive and Chrome go to iOS! Loaded with keyword search, image search, OCR and tons of other features, Drive is on the fast track to leave others behind. And didn't I say how Drive, Chromium and App Engine will dance merry together? It is happening, now! ChromeOS gets Drive as its file system! All content is instantly synced. Now transfiguration is not so far!
And Compute Engine.. That is virtual Linux in the cloud, just like Amazon's I have to say. But this means now you can run a ton of existing apps on the google cloud platform which you previously could not because the App Engine uses a different data storage architecture and framework API. Each had its own uses, but this is definitely good news. This IO 2012 is turning out to be such a big goodie bag!
And look at that stuff about HTML5/CSS3. I told you this is coming :-)
In the previous post titled "Thanksgiving", I mentioned that there have been quite a few earthquakes around here recently. And in addition to that, heavy rains and typhoons as well.
Hmmm, this pretty little island needs some respite...
But this brings me to another thought; how small and helpless we are when confronted with the mighty nature. With all the technology that we have, we are still very very vulnerable to mother nature's wrath. Remember how I mentioned about the vain thought of running out of my apartment when the building was shaking? That thought was basically vain and useless because earthquakes tend to last just a few moments, but they can destroy years and years of human settlement. Had I woken up to the sound of a public alarm, warning the people of earthquake in the next 5 minutes? Well that would have given be enough time to run out of my apartment, just in case the building collapses.
Typhoons, floods, forest fires and other such natural calamities are the real problems facing humanity. These are the problems that still remain unsolved. We still cannot predict earthquakes. We have made progress in weather forecasting technology but more needs to be done. Many lives and billions of dollars are lost every year because of mother nature's wrath.
So here is my promise. One day I will become rich, and I will invest the money I earn to solve such problems that are facing mankind. I will invest it in research. That is my dream.
I live in Taipei and we have witnessed quite a few earthquakes in the last couple of weeks. The first one of them was pretty scary. I woke up with wide eyes staring at the ceiling... For a moment I thought I should run out, but who was I kidding? I was on the 4th floor. This thing will be over before I even reach out of the door.
So I just lied there staring at the ceiling, waiting for it to stop. It did, thankfully.
And then I checked Facebook. Sure enough many of my friends had also woken. It was indeed a big one.
And then what did I do? I thanked. I thanked those who were responsible for the development of earthquake resistant architecture and construction...
Just a few moments back I saw a Facebook update from my friend... She woke up in the morning today thanking God for the newspaper delivery boy, the bread man and the maid because they all turned up that morning despite the crazy heavy rains lashing the part of India where she lives...
It is interesting how such thoughts come to our minds only when faced with adversity. Perhaps that is the nature of human mind. Perhaps I should be more humble...
All the same, I thank my parents for giving me this life and the experiences that it has led me through.