Blog

  • Javascript image slideshow

    My Impressive Animations blog is a collection of impressive images as the name suggests :-). I keep on adding images, in-spite of the fact that the blog page grows longer, and takes a while till all images are shown. This was a problem. Could all my images just become a slideshow without any changes to my blog?

    This made me search on WordPress, and on Internet for any simple, easy to use slideshow tools. In fact, I found quite a few, but these were a little over-complicated to use. Some were using Flash, some pure Javascript, but the trouble I had was (perhaps due their maturity) too many options, or few installations to get them using. Being somewhat impatient, I thought maybe I could create this for myself. And that’s what I did.

    I give you Image SlideShow (Javascript, CSS). It’s very easy to use, just follow these 3 simple steps-

    1. Add jQuery
    2. Add Image SlideShow (Get Javascript, CSS here)
    3. Change your existing <img> tags to include class=”slideshow”
    4. [Optional] For multiple separate slideshow blocks on same page, enclose your set of images with <p></p>, or <div></div> tags
    5. That’s it!

    Take a look at my blog where I’ve used this, and you’ll get the idea on how it works. This has made it a lot easier for me to add new images to my blog, and let everyone enjoy the slideshow.

  • Setting tabindex in HTML for arbitrary, disparate elements

    I hit upon a picky need by a user to have specific tab-order for a HTML page. For most part we usually would organize the layout itself to allow for default left to right, top to bottom tabbing of elements. Or we could always explicitly set tabindex to specific order.

    Trouble was, having limited capability to influence the HTML generated by the package, the only option was do some post UI alteration using JS, or CSS only. Not surprisingly, CSS is about formatting, not navigation hence there isn’t any CSS property for tabindexes. The only option in hand was JS, so I was playing with a couple of approaches to look at the problem

    • Request user to live with the default tab order – Not an option ЁЯЩВ
    • Use CSS – Not possible to set navigational properties such as tabindex
    • Use JS
    • Hack onfocus, onblur to attach/de-attach custom tabindex – didn’t work for set of controls, since one can enter any control using mouse, still custom tab order needs to be maintained. Another issue was controls appearing after custom tabindexed controls didn’t get any focus any more.
    • Use onkeyup, onkeydown events, detect TAB – didn’t work because onkeydown, onblur occurred on element having focus, then onfocus, keyup occurred on element receiving focus. While logically correct, my sample code quickly became a mess of booleans tracking keyup and tab key, then clearing it onfocus, but again similar to previous issue this didn’t work either.
    • From a completely different perspective, surround required elements in containers, like div, span or fieldset. This would automatically take care of tab order, but trouble is the elements I had to work on were in table row cells, and HTML doesn’t allow interleaving of containers (which is logical).
    • Had to work simply across all browsers without differences in implementation. I came across some posts suggesting setting required tab order through java script for all known elements. Another post improved this thought by suggesting to have tabindexes with incremental gaps say 10, so that additional elements could be put in tabindex later on.
    • So my final working approach took both of the above, and mistakes in approach to come up with a very simple solution as below
      <script type="text/javascript" language="javascript" src="prototype-1.7.min.js"></script>
      <script type="text/javascript" language="javascript">
      //<![CDATA[<!--
      // Requires prototype.js
      document.observe("dom:loaded", function() {
      /* Specify elements in order of required tab index, cte= custom tab elements */
      var cte= $('select7', 'select9', 'select10', 'searchkb', 'select8');
      /*
      * Logic to set custom tabindexes for elements
      * First set tabindexes for all known input-able elements in with gaps in between
      * For required elements, set tabindex in that gap range
      */
      var idx= parseInt(1000), incr= parseInt(10); // Begin with any suitable base number, idx= index, incr= suitable increment gap to allow assigning tabindexes in sequence
      $$('input', 'select', 'option', 'textarea').each(function(el) { try { el.writeAttribute('tabindex', idx+=10); } catch(err) { void(0); } });
      var fi= parseInt(cte[0].readAttribute('tabindex')); // fi= tabindex of first element
      cte.each(function (el) { el.writeAttribute('tabindex', fi+=1); }); // Rest of the elements receive sequential tabindex
      });
      //-->]]>
      </script>

    I was leaning on using jQuery’s attr to write tabindex, but for some reason (I know that’s not an excuse) it didn’t work. Perhaps it should, however prototype’s writeAttribute, readAttribute worked, so I ended up using that. Also note that not all elements support tabindex,┬а though I’ve limited to input-able elements, so setting this throws error which I’ve deftly gobbled up; not a good practice but if someone knows an elegant way to find if element supports some property that would be great. On other hand, I would prefer jQuery, or prototype hiding such intricacies behind their APIs instead of me having to do it since it’s javascript anyways. The try, catch could be altogether removed though.

    BTW, I used YUI’s excellent javascript compressor to minify prototype’s javascript. Google’s CDN didn’t provide a minified prototype.js, I wonder why …?

    I believe my goal of having a simple, yet elegant way to override tabindex, taborder especially if you have no control over HTML was achieved. Perhaps this helps you in some way as well.

  • Jazzersice Performance by Amrita, Nicolas at Lala Garden, Tsukuba on Mother’s Day

    Mother’s Day, May 13th was a celebration in Lala Garden, Tsukuba. The junior jazzersice group had a dance performance where Amrita, and Nicolas gave the public a short sweet performance on music.

  • Gaarwa for drunken masters

    A parody on original Gaarwa by Milind Ingale. Especially for all drunken masters out there.

    рджрд╛рд░рд╡рд╛

    рджрд╛рд░реВ рдЬрд░рд╛ рдХрдореА рдкрдбрддреЗрдп, рджрд░ рд╡реЗрд│реА рд╡рд╛рдЯрддрдВ,
    рд░рд┐рдХрд╛рдореНрдпрд╛ рдкреЗрд▓реНрдпрд╛рдЪреНрдпрд╛ рднреАрддреАрдЪрдВ, рдЖрднрд╛рд│ рдордирд╛рдд рджрд╛рдЯрддрдВ,
    рддрд░реА рдкрд╛рд╡рд▓реЗ рдЪрд╛рд▓рдд рд░рд╣рд╛рддрд╛рдд, рдорди рдЪрд╛рд▓рдд рдирд╛рд╣реА
    рд╡реНрд╣рд┐рд╕реНрдХреАрд╢рд┐рд╡рд╛рдп рд╢рд░реАрд░рд╛рдордзреЗ рдХреБрдгреАрдЪ рдмреЛрд▓рдд рдирд╛рд╣реА..
    рддрд┐рддрдХреНрдпрд╛рдд рдХреБрдареВрди рдПрдХ рдорд┐рддреНрд░ рдмрд╛рдЯрд▓реА рдШреЗрдКрди рдпреЗрддреЛ
    рддрд┐рддрдХреНрдпрд╛рдд рдХреБрдареВрди рдПрдХ рдорд┐рддреНрд░ рдмрд╛рдЯрд▓реА рдШреЗрдКрди рдпреЗрддреЛ
    рдЪрдХрдгреНрдпрд╛рддрд▓рд╛ рдХрд╛рд╣реА рднрд╛рдЧ рдШрд╢рд╛рдЦрд╛рд▓реА рдШрд╛рд▓рддреЛ
    рджреБрд╕рд░рд╛ рдорд┐рддреНрд░ рдЙрдирд╛рдб рдореБрд▓рд╛рд╕рд╛рд░рдЦрд╛ рд╕реИрд░рд╛ рд╡реИрд░рд╛ рдкрд│рдд рд░рд╣рд╛рддреЛ
    рдкрд╛рдирд╛ рдлреБрд▓рд╛ рдЭрд╛рдбрд╛рдВрд╡рд░рддреА рдЫрдкрд░рд╛рд╡рд░рддреА рдЪрдвреВрди рдкрд╣рд╛рддреЛ
    рджреБрдкрд╛рд░ рдЯрд│реВрди рд╕рдВрдзреНрдпрд╛рдХрд╛рд│рдЪрд╛ рд╕реБрд░реВ рд╣реЛрддреЛ рдкреБрдиреНрд╣рд╛ рдкреЗрдЧ
    рдкреЗрдЧ рдорд╛рдЧреВрди рдЪрд╛рд▓рдд рдпреЗрддреЗ рдЧрд╛рд░ рдЧрд╛рд░ рдмреАрдЕрд░рдЪреА рд╡реЗрд│
    рдЪрдХреНрдХ рдбреЛрд│реНрдпрд╛рд╕рдореЛрд░ рдХреЛрдгреА рдПрдХ рдЙрд▓рдЯреА рдХрд░реВрди рдпреЗрддреЛ
    рдЧрд╛рдВрдзреА рдЬрдпрдВрддреАрд▓рд╛ рдЧреНрд▓рд╛рд╕ рдордзреНрдпреЗ рдХреЛрдг рджрд╛рд░рд╡рд╛ рднрд░рддреЛ

    рджрд╛рд░рд╡рд╛…………
    рджрд╛рд░рд╡рд╛…
    рд╡рд╛рд░реНтАНрдпрд╛рд╡рд░ рднрд┐рд░рднрд┐рд░рднрд┐рд░ рдмреЗрд╡рдбрд╛ рдирд╡рд╛ рдирд╡рд╛
    рдкреНрд░рд┐рдпреЗsssssssss рджрд╛рд░реВрддрд╣реА рдЧреЛрдбрд╡рд╛ рдирд╡рд╛ рдирд╡рд╛
    рджрд╛рд░рд╡рд╛….
    рдЦреЛрд▓реАрдд рд╕рд╛рд░реЗ рдЭреБрд▓рддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рдЦреЛрд▓реАрдд рд╕рд╛рд░реЗ рдЭреБрд▓рддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╡реЛрдбрдХреНрдпрд╛рдд рд╕реЛрдбрд╛ рдУрддрддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╡реЛрдбрдХреНрдпрд╛рдд рд╕реЛрдбрд╛ рдУрддрддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╕реЛрдбрд╛ рдирдХреЛ рдЕрддрд╛ рдЪрд▓рд╛ рдиреАрдЯрдЪ рдорд╛рд░рд╛ рднрд░рд╛ рднрд░рд╛
    рдкреНрд░рд┐рдпреЗsssssssssss рдордирд╛рддрд╣реА рдЧреНрд▓рд╛рд╕ рд╣рд╛ рднрд░рд╛ рднрд░рд╛

    рджрд╛рд░рд╡рд╛тАж
    рдЖрдХрд╛рд╢ рд╕рд╛рд░реЗ рд╣рд▓рддреЗ рдХрд╛ рд░реЗ, рдЖрддрд╛ рд╕реБрдЧрдВрдзреА рдЭрд╛рд▓реЗрдд рд╡рд╛рд░реЗ..
    рдЖрдХрд╛рд╢ рд╕рд╛рд░реЗ рд╣рд▓рддреЗ рдХрд╛ рд░реЗ, рдЖрддрд╛ рд╕реБрдЧрдВрдзреА рдЭрд╛рд▓реЗрдд рд╡рд╛рд░реЗ..
    рдкреЗрд▓рд╛рднрд░ рднрд░рднрд░ рд░рдо рднрд░ рдкрд╛рдорд░рд╛ рдЬрд░рд╛ рдЬрд░рд╛
    рдкреНрд░рд┐рдпреЗsssssssssss рдмрд░реНрдлрд╛рддрд╣реА рдЧрд╛рд░рд╡рд╛ рдЬрд░рд╛ рдЬрд░рд╛

    рджрд╛рд░рд╡рд╛….
    рд╡рд╛рд░реНтАНрдпрд╛рд╡рд░ рднрд┐рд░рднрд┐рд░рднрд┐рд░ рдмреЗрд╡рдбрд╛ рдирд╡рд╛ рдирд╡рд╛
    рдкреНрд░рд┐рдпреЗsssssssss рджрд╛рд░реВрддрд╣реА рдЧреЛрдбрд╡рд╛ рдирд╡рд╛ рдирд╡рд╛
    рджрд╛рд░рд╡рд╛….
    рджрд╛рд░рд╡рд╛….
    рджрд╛рд░рд╡рд╛

    рджрд╛рд░реВ рдЬрд░рд╛ рдХрдореА рдкрдбрддреЗрдп, рджрд░ рд╡реЗрд│реА рд╡рд╛рдЯрддрдВ,
    рд░рд┐рдХрд╛рдореНрдпрд╛ рдкреЗрд▓реНрдпрд╛рдЪреНрдпрд╛ рднреАрддреАрдЪрдВ, рдЖрднрд╛рд│ рдордирд╛рдд рджрд╛рдЯрддрдВ,
    рддрд░реА рдкрд╛рд╡рд▓реЗ рдЪрд╛рд▓рдд рд░рд╣рд╛рддрд╛рдд, рдорди рдЪрд╛рд▓рдд рдирд╛рд╣реА
    рд╡реНрд╣рд┐рд╕реНрдХреАрд╢рд┐рд╡рд╛рдп рд╢рд░реАрд░рд╛рдордзреЗ рдХреБрдгреАрдЪ рдмреЛрд▓рдд рдирд╛рд╣реА..
    рддрд┐рддрдХреНрдпрд╛рдд рдХреБрдареВрди рдПрдХ рдорд┐рддреНрд░ рдмрд╛рдЯрд▓реА рдШреЗрдКрди рдпреЗрддреЛ
    рддрд┐рддрдХреНрдпрд╛рдд рдХреБрдареВрди рдПрдХ рдорд┐рддреНрд░ рдмрд╛рдЯрд▓реА рдШреЗрдКрди рдпреЗрддреЛ
    рдЪрдХрдгреНрдпрд╛рддрд▓рд╛ рдХрд╛рд╣реА рднрд╛рдЧ рдШрд╢рд╛рдЦрд╛рд▓реА рдШрд╛рд▓рддреЛ
    рджреБрд╕рд░рд╛ рдорд┐рддреНрд░ рдЙрдирд╛рдб рдореБрд▓рд╛рд╕рд╛рд░рдЦрд╛ рд╕реИрд░рд╛ рд╡реИрд░рд╛ рдкрд│рдд рд░рд╣рд╛рддреЛ
    рдкрд╛рдирд╛ рдлреБрд▓рд╛ рдЭрд╛рдбрд╛рдВрд╡рд░рддреА рдЫрдкрд░рд╛рд╡рд░рддреА рдЪрдвреВрди рдкрд╣рд╛рддреЛ
    рджреБрдкрд╛рд░ рдЯрд│реВрди рд╕рдВрдзреНрдпрд╛рдХрд╛рд│рдЪрд╛ рд╕реБрд░реВ рд╣реЛрддреЛ рдкреБрдиреНрд╣рд╛ рдкреЗрдЧ
    рдкреЗрдЧ рдорд╛рдЧреВрди рдЪрд╛рд▓рдд рдпреЗрддреЗ рдЧрд╛рд░ рдЧрд╛рд░ рдмреАрдЕрд░рдЪреА рд╡реЗрд│
    рдЪрдХреНрдХ рдбреЛрд│реНрдпрд╛рд╕рдореЛрд░ рдХреЛрдгреА рдПрдХ рдЙрд▓рдЯреА рдХрд░реВрди рдпреЗрддреЛ
    рдЧрд╛рдВрдзреА рдЬрдпрдВрддреАрд▓рд╛ рдЧреНрд▓рд╛рд╕ рдордзреНрдпреЗ рдХреЛрдг рджрд╛рд░рд╡рд╛ рднрд░рддреЛ

    рджрд╛рд░рд╡рд╛…………
    рджрд╛рд░рд╡рд╛…
    рд╡рд╛рд░реНтАНрдпрд╛рд╡рд░ рднрд┐рд░рднрд┐рд░рднрд┐рд░ рдмреЗрд╡рдбрд╛ рдирд╡рд╛ рдирд╡рд╛
    рдкреНрд░рд┐рдпреЗsssssssss рджрд╛рд░реВрддрд╣реА рдЧреЛрдбрд╡рд╛ рдирд╡рд╛ рдирд╡рд╛
    рджрд╛рд░рд╡рд╛….

    рдЦреЛрд▓реАрдд рд╕рд╛рд░реЗ рдЭреБрд▓рддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рдЦреЛрд▓реАрдд рд╕рд╛рд░реЗ рдЭреБрд▓рддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╡реЛрдбрдХреНрдпрд╛рдд рд╕реЛрдбрд╛ рдУрддрддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╡реЛрдбрдХреНрдпрд╛рдд рд╕реЛрдбрд╛ рдУрддрддрд╛рдпрдд рдХрдзреАрдЪреЗ
    рд╕реЛрдбрд╛ рдирдХреЛ рдЕрддрд╛ рдЪрд▓рд╛ рдиреАрдЯрдЪ рдорд╛рд░рд╛ рднрд░рд╛ рднрд░рд╛
    рдкреНрд░рд┐рдпреЗsssssssssss рдордирд╛рддрд╣реА рдЧреНрд▓рд╛рд╕ рд╣рд╛ рднрд░рд╛ рднрд░рд╛

    рджрд╛рд░рд╡рд╛тАж
    рдЖрдХрд╛рд╢ рд╕рд╛рд░реЗ рд╣рд▓рддреЗ рдХрд╛ рд░реЗ, рдЖрддрд╛ рд╕реБрдЧрдВрдзреА рдЭрд╛рд▓реЗрдд рд╡рд╛рд░реЗ..
    рдЖрдХрд╛рд╢ рд╕рд╛рд░реЗ рд╣рд▓рддреЗ рдХрд╛ рд░реЗ, рдЖрддрд╛ рд╕реБрдЧрдВрдзреА рдЭрд╛рд▓реЗрдд рд╡рд╛рд░реЗ..
    рдкреЗрд▓рд╛рднрд░ рднрд░рднрд░ рд░рдо рднрд░ рдкрд╛рдорд░рд╛ рдЬрд░рд╛ рдЬрд░рд╛
    рдкреНрд░рд┐рдпреЗsssssssssss рдмрд░реНрдлрд╛рддрд╣реА рдЧрд╛рд░рд╡рд╛ рдЬрд░рд╛ рдЬрд░рд╛

    рджрд╛рд░рд╡рд╛….
    рд╡рд╛рд░реНтАНрдпрд╛рд╡рд░ рднрд┐рд░рднрд┐рд░рднрд┐рд░ рдмреЗрд╡рдбрд╛ рдирд╡рд╛ рдирд╡рд╛
    рдкреНрд░рд┐рдпреЗsssssssss рджрд╛рд░реВрддрд╣реА рдЧреЛрдбрд╡рд╛ рдирд╡рд╛ рдирд╡рд╛

    рджрд╛рд░рд╡рд╛….
    рджрд╛рд░рд╡рд╛….

  • .NET v4.0 building missing targets

    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(847,9): warning MSB3644: The reference assemblies
    ┬аfor framework “.NETFramework,Version=v4.0” were not found.

    If you end up building .NET projects outside of Visual Studio, just using the .NET v.40 runtime, you may (will?) hit the above warning, but who likes warnings from systems, anyways? You have the option of either installing Visual Studio, but then what’s the point if you had to ship build files in the first place. This is not an option on production systems, and needs resolution.

    It seems, the full framework alone doesn’t install the correct target libraries when using a non-VS build environment (MSBuild.exe). I was lucky to find in a forum about a working fix, and it works like a charm.

    1. Download and save the┬а Windows SDK v7.1 32-bit x86 ISO image from Microsoft.

    2. Copy the ISO image to the server using the local network

    3. Download Virtual CD-ROM Control Panel v2.0.1.1 from Microsoft

    4. Unzip Virtual CD-ROM Control Panel and follow readme.txt instructions to install and mount the ISO image.

    5. Uncheck everything except .NET Development > Intellisense and Reference Assemblies in the installer.

    6. Finsh the install.

    If you now try to build, no more warnings are generated, and you’re good to go.

  • Paradigm shift

    Something got me thinking about how we think to handle a problem. This happened yesterday when I was watching a McGill University videocast on “Inflammation and Cancer – by Maya Saleh“. The video was interesting, technical enough, though confusing if you start focusing too much on lingo, or try to remember every acronym the speaker remembers.

    To summarize the whole video as I understand – the human body responds to any injury, disease by inflammation (soreness, heat, itch, numbness) as a self-protective measure. The amount of inflammation reaches an appropriate stage, disease is curbed, and┬а inflammation vanishes. In an imperfect world, there are exceptions, and this is same with inflammation. Sometimes, the inflammation worsens and why does it worsen is the point explained with over-intricate details in the videocast.

    But even with the details, all the research & effort spent on finding this, what struck to me as odd was the fact that it concludes with same point as it started with, namely the question about why does inflammation worsen? In other words, yet there is no answer.

    And this is where it got me thinking about our paradigm bias with which we approach a (or any) problem. The ultimate goal of our approach is to prevent something bad from happening through process of understanding details on why bad happens. Isn’t that the way we see things by attempting to understand, and interpret it by comparing with something tangible? Even in software (which is my main area, not medicine :-)) the pattern of thought is exactly similar. Bug prevention, disaster recovery, backup strategies … and it goes on.

    Trouble is the focus of this approach is protect from bad.

    Instead, something else got me thinking. Could this approach be changed? Say, instead of prevent could we prepare. For instance, instead of a malicious data entry corrupting our system, trying to prevent, could we detect and use this to our advantage by injecting more bad data to shutdown the system itself? This is like putting bad guys in charge of taking care of other bad guys … but the analogy may give you a wrong impression.

    I believe my thought is based on the same fundamental desire to protect, but by trying to take advantage of allowing things to happen. Instead of fighting against, fight using them.

    As another example for analogy, in outsourced IT systems, things often go against clients expectations because of clients desire to control more of the outsourced vendor process. Be it a goal to achieve cost cutting, squeeze out more work, or even the noble notion of making systems better in long run (anybody thinking “win-win”), I think the reason we aren’t succeeding in any industry with this thought paradigm.┬а The main players are presence of control over something, prevention of something (safe guarding interests etc).

    What if we could still have control, but in a way that doesn’t get in the way of preventing something bad to happen? Could we shift the focus from preventing bad to something inside out way of reversing this idea?

    Maybe the idea of medicine preventing inflammation by curbing some microflora, or cells, then discovering heuristically that medicine needs to improve to target something else seems a little waste of time to my appeal. That said, the promise lies if 80%-90% of disease cases being cured, while 10% are exceptions seems an accepted, un-challenged pattern in any field we see today. Majority wins, minority loses.

    I want to start fresh off with something simple, something which is already present – in nature. The moment someone claims we know something completely be it medicine or technology, that is the tipping point for me to confidently say that we are already lost going totally┬а someplace else. Our world, with it’s eco-system, with the human beings inhabiting it, with the environment surrounding it, with all it’s nature is designed to be self-sustainable. We have unnecessarily over-complicated everything imaginable with our falsely impressed thirst for knowledge, more so because our focus always has been finding problems, then going in circles finding answers to the same, and creating more problems that didn’t originally exist.

    I have a simple question – why hasn’t nature changed anything for so long? why are we same as many generations before have been? why don’t we see anything new in nature than what previous generations have seen? If we focus on understanding this, without trying to intervene with man-made heuristic approaches, we could have a much thorough, and guaranteed way of living in harmony with the way we humans are – imperfect yet perfect.

    I admit I am going all over the place with this. And I admit that I am not satisfied with the way things are today. There is something I sense is not fundamentally answered, and looked over.

  • 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.

  • Impressive animations

    Some animations are breath-taking, maybe it’s a good time to collect these here