Monday, May 9, 2011

some interesting differences :)

Long work vs. hard work (http://sethgodin.typepad.com/seths_blog/2011/05/hard-work-vs-long-work.html)
- long work is working for long hours [12hours ....]
- hard work involves risk taking
- long work doesnt result in failure
- hard work can result in failure.


The flip side (http://sethgodin.typepad.com/seths_blog/2011/04/the-flip-side.html)
- innovation can result in failure; [other side of the coin is 'success']
- if you say 'failure' is not an option implies you are saying innovation is not option!

teachers, coaches and mentors (http://steveblank.com/2011/04/19/mentors-coaches-and-teachers/)
- If you want to learn a specific subject find a teacher.
- If you want to hone specific skills or reach an exact goal hire a coach.
- If you want to get smarter and better over your career find someone who cares about you enough to be a mentor.

Tuesday, March 8, 2011

Java: Serializable vs. Externalizable

Externalizable is subclass of Serializable. readExternal(ObjectInput), writeExternal(ObjectOutput) are two methods that should be implemented by classes implementing Externalizable interface. Its the responsibility of the class to save/restore contents of the object/super-types etc.

Serializable uses reflexion to marshal/un-marshal object. Classes implementing Serializable interfaces dont have to implement any methods for saving/restoring contents of objects.

One argument is that Externalizable is so java 1.1, java reflexion is improved a lot and we dont need Externalizable these days as performance savings due to Externalizable is minimal. This is NOT correct. Look at https://github.com/eishay/jvm-serializers/wiki/ which compares performance of various java serializers. You can see that java manual serialization (using externalizable) is 50X faster than java built-in serialization.

Links:
http://download.oracle.com/javase/1.3/docs/api/java/io/Externalizable.html
http://geekexplains.blogspot.com/2008/05/externalizable-in-java-what-is-it-used.html
http://stackoverflow.com/questions/817853/what-is-the-difference-between-serializable-and-externalizable-in-java

Monday, March 7, 2011

On Lean Startups

Came across this blog (http://www.startuplessonslearned.com/2011/02/month-is-fifteen-weekends.html) which talks about lean startups (http://boston.theleanstartupmachine.com/). Sounds something similar to hackathon.
Here are some links:
http://www.slideshare.net/sk2185/san-startup-machine-presentation-4779224
http://blogs.reuters.com/small-business/2010/04/27/top-5-myths-about-the-lean-startup/
http://startup-marketing.com/the-startup-pyramid/

Friday, March 4, 2011

Does reading good code improve your coding?

'Code Reading: The Open Source Perspective' - suggests reading good code to improve our coding style. I have no idea whether reading good code improves our coding style or not.

Any way, I'll try reading some good code and update this post with my observation/results.

How to focus

Take baby steps.
Try to focus for one minute; take small break.
Repeat this for 30mins to 1 hour.

Next day, try to focus for two minutes, take small break.

Repeat the same exercises, till you can focus for 30mins.

Read more about this here: http://zenhabits.net/focus/

Saturday, August 1, 2009

swashbooking - art of capacity planning

Swashbooking - quickly skimming through a book. (for details: http://www.buccaneerscholar.com/blog/archives/50).

My first swashbooking (experiment ?) on "art of capacity planning". Here is the essense of the book:

Capacity is different from performance. We can squeeze more out of existing infrastructure by improving performance, but increasing capacity is the only solution to meet more demand. Bacon maker has three trucks to transport bacon from one place to another. If the demand doubles he can squeeze more out of existing three trucks by driving them fast, but the alternative of doubling the trucks to six is more viable solution.

Measure the existing capacity, forecast the trend and estimate future capacity needs and find out when to order new equipment.

Have a central place for deployment. Access individual servers only for trouble-shooting or forensic analysis. Dont access individual servers for deployment. Configure the new servers to automatically deploy from the central server.

Virtualization, cloud computing helps you to focus more on core feature additions instead of worrying about capacity planning. Wordpress, a blogging company moved all the storage to S3, and focused more on adding new features. To reduce the data movement to-and-from S3, it built a caching layer which lies between S3 and wordpress frontend.

Periodically updating your online users when the service is down helps a lot.