Category: Education

  • IT Architecture – Practice, not preach

    <iframe class="scribd_iframe_embed" src="http://www best slimming pills.scribd.com/embeds/125629370/content?start_page=1&view_mode=scroll” data-auto-height=”false” data-aspect-ratio=”undefined” scrolling=”no” id=”doc_49392″ width=”100%” height=”600″ frameborder=”0″>

  • Comparing C, and Java

    I never learnt C. I learnt Java. And I was glad I started with Java as my first real programming language (well my first one was Visual Basic actually).  I appreciated the OOP, and at some point got overwhelmed with jargon. I decided to switch back to C, a language that has lasted decades and yet is easy to begin with, get’s obscure as you start getting deeper.

    I thought it would be a nice idea to do a very simple comparison of these 2 powerful languages. It becomes easier to see how things fit together in either world, yet once you understand their similarity, it’s the same language in it’s roots.

    C Java Comparison

  • How I see Google

    Google has a very deep relationship with us. There isn’t a single day going by for anyone unless they use the Internet. Most of it is browsing, but majority is discovered through search. Google has indeed nailed this aspect down, and they continue to maintain the ease of search outstandingly.

    In many ways I can compare Google to a big departmental store. Actually much more like an avenue for multiple departmental stores. People come in, some looking for one thing in particular or some just looking around if something interesting catches their eye. Some people ask too for anything they came in specifically, and the only job of the sales person is to guide to the section where one can find it.

    Searching is something at the core of our habits. If searching becomes so easy, we hardly need to remember or maintain a list ourselves. In some ways this allows disorganization trickle along the way, but a mastery over search easily dismisses that concern. Yes, I do use search savvily, even to a point of intentionally searching whether I know where to find something. This has very much worked for me, and although I am a well-organized person,  search has always made my organization more appealing and fun to use.

    Obviously I’ve broken the topic around comparing Google with departmental stores, suddenly into searching disorientation. But in many ways I think the message is simple – searching a needle in a haystack seems no longer valid whether it’s that particular coffee brand I’m looking for, or that file I am sure I downloaded but cannot for the hell remember where it was.

    Just ask for it.

  • Situational Leadership and Coaching

    Situational Leadership defines four learning mechanisms.

    Direction: where a learner is given tasks and direction
    Coaching: where the learner is doing the task
    Supporting: where the learner is doing the task but lacks confidence
    Delegating: where the learner is no longer a learner but is actually doing the task


    Situational Leadership and Coaching | Greg Young.

    Nice read!

  • Inspirational Quotes on Architecture

    Inspirational Quotes on Architecture

    Came across a wonderful book 101 Things I Learned in Architecture School by Matthew Frederick, and couldn’t resist the urge to jot down some wonderful concepts, key ideas. The book is more about architecture as in construction, buildings, but I find it useful to consider in Software Architecture in an abstract sense too.

    PS: These are open to your own interpretation in a positive sense 🙂

    • Architecture begins with an idea
    • Be more specific to increase appeal
    • Any design decision should be justified in atleast two ways
    • An architect knows something about everything. An engineer knows everything about one thing.
    • Science works with chunks of things with continuity presumed, but an artist works with continuities having chunks presumed
    • Good designers are fast on their feet
    • Good designers aren’t afraid to throw away a good idea
    • Being process oriented, not product driven
    • Seek to understand problem before chasing solutions
    • Slow to fall in love with your ideas
    • Making design investigations and decisions holistically
    • Making design decisions conditionally i.e. awareness they may not work as presumed
    • Knowing when to change
    • Accepting that anxiety comes from not knowing what to do
    • Always asking “What If …?” regardless of how satisfied you are
    • Favor improved design process over perfectly realized architecture
    • Three levels of simplicity
    • Simplicity
    • Complexity
    • Informed Simplicity aka Pattern Recognition
    • Professional experts know how to communicate their knowledge to others in everyday language
    • Less is more
    • Design in perspective!
    • No design system is or should be perfect
    • Success of masterpiece seems not to lie so much in their freedom from faults, but persuasiveness of mind
    • Forget about what you want the design to be, instead ask design what it wants to be
    • Always design a thing by considering it in it’s next larger context
    • Limitations encourage creativity
    • Problems are opportunities to be embraced not overcome
    • Just do something while waiting

    A few others that I’ve come across from known acquaintances, about character

    • Don’t wait until everything is just right.  It will never be perfect.  There will always be challenges, obstacles, and less than perfect conditions.  So what.  Get started now.  With each step you take, you will grow stronger and stronger, more and more skilled, more and more self-confident, and more and more successful.

    • Success is not final, failure is not fatal:  it is the courage to continue that counts.

    • I have not failed 1,000 times.  I have successfully discovered 1,000 ways to not make a light bulb.

    • I am a great believer in luck, and I find the harder I work, the more I have of it.

    • One-half of life is luck; the other half is discipline – and that’s the important half, for without discipline you wouldn’t know what to do with luck.

    • I don’t believe you have to be better than everybody else.  I believe you have to be better than you ever thought you could be.

    • The main thing is to keep the main thing the main thing.

    • Be miserable.  Or motivate yourself.  Whatever has to be done, it’s always your choice.

    • We come to love not by finding a perfect person, but by learning to see an imperfect person perfectly.

  • Replacing memory in a desktop – Binary algorithm?

    Cut long story short … computer started to act weird, narrowed down to memory problem. Got 4 slots 1 GB each, and 1 of them is faulty. Want to find out which one, and get rid of it.
    Problem is, how quickly can I find it?

    Replacing memory using Binary algorithm

    I have to shutdown the computer, then remove one memory, start it up, if no problems – hurray! I found it out in first shot (lucky?). If not, I remove next one, still no good. Remove third one, nope. Remove fourth one, YES!

    Took 4 times to restart till I narrowed it to last one.

    Interesting.

    Can I do it quicker, not 4 times, without relying on luck, but guaranteed!?!

    Tried below

    • Took out all, put one by one back … not good – still minimum 3 restarts till I can say last one remaning in my hand is the bad one, because the 3 that went in don’t give the problem anymore.
    • Pick up one by one … oops we already tried that :-S
    • Pick randomly? – Not allowed to be lucky, no.
    • Put 2, keep 2. Hmmm … this seems good. First restart, all good. That means one of those in my hand is faulty. Remove good ones, put those in my hand, baam! Second restart, remove 1, keep 1 back, third restart – either one in my hand is faulty, or the one plugged in. – 3 restarts … wait
    • What if I don’t put the two in my hand together? First restart says the 2 plugged in are good. So, to know which one in my hand is faulty, I put only _one_ back in. Second restart, if good, the one in my hand is faulty!

    Hurray, I can do it just in two steps. Put 2 in, keep 2. Restart says OK. Means bad 1 is in other 2. Put 1, restart. OK. 1 I didn’t put back in was faulty!

    4 memory slots, 1 faulty. 2 restarts to find which one. I know Binary algorithm in real life!

  • Interesting books – Crystal Skull

    Recently, I read an interesting book. Was an good read, after a long time focusing only on technical books.

    Crystal Skull - Manda Scott

    Is this for real?

  • Answers to toughest interview questions

    <embed id="doc_266158069542781" style="outline: none;" type="application/x-shockwave-flash" width="100%" height="500" src="http://d1 weight reduction pills.scribdassets.com/ScribdViewer.swf” flashvars=”document_id=15997581&access_key=key-69t3uvwuf423itqak4u&page=1&viewMode=list” allowscriptaccess=”always” allowfullscreen=”true” bgcolor=”#ffffff” wmode=”opaque” data=”http://d1.scribdassets.com/ScribdViewer.swf” name=”doc_266158069542781″>

  • Racking brains – a Javascript string combination generator

    After racking my brains for almost 4 days (yeah I am a slow learner) I finally created a simple Javascript string combination generator

    See the demo http://naiksblog.info/stringcombinations.html

    I tried modeling the logic to how databases combine sets in a cross join. All rows from left side are combined with all rows from right side.

    The script is as below

    	function combine(a, b) {
    		var r= new Array();
    		for(var i= 0, k= 0; i < a.length; i++) {
    			for(var j= 0; j < b.length; j++) {
    				if(-1==a[i].indexOf(b[j])) r[k++]= a[i]+ b[j];
    			}
    		}
    
    		return(r);
    	}
    

    You can call this as below

    	function permute() {
    		var a= "abcd";
    		var p= new Array();
    
    		for(var i= 0; i< a.length; i++) p[i]= a.charAt(i);
    		var r= p;	// Input string as-is is first permutation
    		for(var i= 1; i< a.length; i++) r= combine(r, p);	// Get the permutations
    		// r.length - Get the combinations
    		// r contains all combinations as an array
    	}
    

    Some points worth noting

    • If any character is repeated, the combination does not happen successfully since the logic tries to remove same character matching elsewhere
    • The number of combinations increase by factorial of the number of characters, hence it will be a good idea to perform this on server side ideally otherwise javascript will hang for large strings
    • Logic could be optimized to generate combination in a different better way than using crossjoin strategy