<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7937326</atom:id><lastBuildDate>Sun, 28 Jun 2026 06:46:04 +0000</lastBuildDate><category>altcanvas</category><category>android</category><category>readerscope</category><category>googlereader</category><category>svg</category><category>GUI</category><category>inkface</category><category>maemo</category><category>python</category><category>inkscape</category><category>mobile</category><category>twitter</category><category>Openmoko</category><category>javascript</category><category>debugging</category><category>fretsonfire</category><category>google</category><category>html5</category><category>news</category><category>open-source</category><category>programming</category><category>pygame</category><category>reader</category><category>social</category><category>c</category><category>clutter</category><category>fedora</category><category>graphics</category><category>htc</category><category>linux</category><category>magic</category><category>movie</category><category>music</category><category>n810</category><category>nokia</category><category>opengl</category><category>opensource</category><category>quotes</category><category>rss</category><category>animation</category><category>apple</category><category>authentication</category><category>business</category><category>cairo</category><category>chrome</category><category>chromeos</category><category>code</category><category>crash</category><category>design</category><category>dropbox</category><category>foss</category><category>freerunner</category><category>gae</category><category>git</category><category>guitar</category><category>java</category><category>macbook</category><category>multithreading</category><category>n900</category><category>node.js</category><category>phone</category><category>podcast</category><category>review</category><category>science</category><category>sdk</category><category>text-to-speech</category><category>ubuntu</category><category>APL</category><category>Einstein</category><category>LVM</category><category>OSiM</category><category>OSiM mobile open-source nokia Openmoko</category><category>accelerometer</category><category>airtravel</category><category>apt-get</category><category>art</category><category>asserts</category><category>async</category><category>audio</category><category>bash</category><category>battery</category><category>beatifier</category><category>bono</category><category>book</category><category>books</category><category>browser</category><category>bug</category><category>c++</category><category>cache</category><category>canvas</category><category>cli</category><category>cloud</category><category>coding</category><category>command-line</category><category>comments</category><category>commit</category><category>css</category><category>deb</category><category>debian</category><category>demo</category><category>desktop</category><category>digg</category><category>dvcs</category><category>eclipse</category><category>economics</category><category>economy</category><category>email</category><category>enlightenment</category><category>errors</category><category>evas</category><category>evolution</category><category>extension</category><category>featurecreep</category><category>festival</category><category>flattr</category><category>fonts</category><category>fragmentation</category><category>friendfeed</category><category>game</category><category>gdata</category><category>gmail</category><category>goobook</category><category>google-app-engine</category><category>googlenews</category><category>growlnotify</category><category>hack</category><category>hero</category><category>hollywood</category><category>hosting</category><category>html</category><category>icons</category><category>idealistic</category><category>image</category><category>india</category><category>ipad</category><category>iphone</category><category>itunes</category><category>johnmayer</category><category>languages</category><category>lyrics</category><category>mashup</category><category>memory leak</category><category>micropayment</category><category>microsoft</category><category>music ipod</category><category>mutt</category><category>networking</category><category>notify-send</category><category>nvidia</category><category>offline</category><category>opengl-es</category><category>openmoko android neo1973 hacking</category><category>opinion</category><category>packaging</category><category>palmpre</category><category>patents</category><category>payment</category><category>plugin</category><category>politics</category><category>pre</category><category>processing</category><category>processingjs</category><category>python xmlrpc apache</category><category>random</category><category>reading</category><category>reddit</category><category>repository</category><category>search</category><category>share</category><category>show</category><category>silicon-valley</category><category>software</category><category>source</category><category>sprint</category><category>stackoverflow</category><category>stacktrace</category><category>storage</category><category>subversion</category><category>tabs</category><category>technology</category><category>television</category><category>testing</category><category>text2speech</category><category>themes</category><category>thoughts</category><category>thunderbird</category><category>time</category><category>toolchain</category><category>travel</category><category>tsa</category><category>tts</category><category>typeface</category><category>ux</category><category>vcs</category><category>vim</category><category>visualization</category><category>webapps</category><category>webdesign</category><category>webgl</category><category>webworkers</category><category>wifi</category><category>wikipedia</category><category>xml</category><category>youtube</category><category>zoom</category><title>Code Overtones</title><description></description><link>http://jyro.blogspot.com/</link><managingEditor>noreply@blogger.com (Jayesh)</managingEditor><generator>Blogger</generator><openSearch:totalResults>218</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-2125973885471443683</guid><pubDate>Tue, 25 Aug 2015 11:42:00 +0000</pubDate><atom:updated>2015-08-25T04:51:00.093-07:00</atom:updated><title>Before fixing performance issues</title><description>We, in computing, have come across the phrase &quot;Premature optimization is the root of all evil&quot; one time or another. But sadly we don&#39;t seem to internalize it in our work. I&#39;m reminded of this whenever a developer proposes a performance fix in the code.&lt;br /&gt;
&lt;br /&gt;
Before fixing any performance problem, I like to reconsider it because of following two reasons.&lt;br /&gt;
&lt;br /&gt;
1. Performance problems may be easy/difficult to solve depending on the situation, however all of them have one thing in common - they have a very clear goal. There&#39;s a number that we have to optimize - be it response time, FPS or memory footprint of the app. This makes the performance problem very rewarding to solve, just like a video game. There&#39;s a score to be achieved and we just have to find a way to achieve it. The developer can focus on that single number and forget everything else, in order to get a rush of endorphin. Therefore I think &lt;b&gt;developers are biased towards fixing the performance problems&lt;/b&gt; than any other kind of issues.&lt;br /&gt;
&lt;br /&gt;
2. When developers strive to achieve that magic number while fixing the performance problem, they tend to sacrifice a lot of other important things. Software design principles, coding guidelines, readability of code, documentation - all are considered secondary during the exercise. As a result, even though the software might run faster or lighter after the fixes, the maintainability of the code has been sacrificed during the process, which is a greater loss in long term.&lt;br /&gt;
&lt;br /&gt;
I don&#39;t want to undermine the importance of performance issues, because the speed and memory footprint of a software are very important for it to be usable. However not all performance fixes achieve the same improvement in software usability. Therefore they should be evaluated carefully before fixing.&lt;br /&gt;
&lt;br /&gt;
I take the &lt;a href=&quot;https://plus.google.com/u/0/115212051037621986145/posts/HajXHPGN752&quot;&gt;advice&lt;/a&gt; of Guido Van Rossum, when it comes to evaluating performance issues:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
* Are you sure it&#39;s too slow? Profile before optimizing!&lt;br /&gt;
* The universal speed-up is rewriting small bits of code in C. Do this only when all else fails.﻿&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://jyro.blogspot.com/2015/08/before-fixing-performance-issues.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-5800886372126957341</guid><pubDate>Wed, 17 Jun 2015 23:39:00 +0000</pubDate><atom:updated>2015-06-17T16:39:07.944-07:00</atom:updated><title>No exams, Yes video games</title><description>The psychological studies on the subject of self esteem show that when children are criticized at an early age for their behavior, it affects their self esteem negatively for the rest of their lives. If that&#39;s the case, what effect does it have on children when they are told that their answers to the questions in the exam were wrong. This obviously leads a child to believe that he/she has done something wrong. Moreover, they find that they have done things &quot;wrong&quot;, while others have done them &quot;right&quot;. Although, all that has happened is they haven&#39;t understood the concept of the subject matter sufficiently. An adult can appreciate how minor this small lack of understanding is; but for a child it could represent a &quot;social status&quot; in their social circle of friends. It could represent their validation in the eyes of their parents. When they are told that they are wrong, it definitely registers as a negative feeling with them. The failure registers more strongly in their mind, than the reason behind that failure. This doesn&#39;t help them getting the correct understanding of the subject.&lt;br /&gt;
&lt;br /&gt;
How can we then teach the children in a way that will convey to them that their understanding of the subject is not right, and yet reinforce this in a positive manner?&lt;br /&gt;
&lt;br /&gt;
I look towards the video games for answer to this question.&lt;br /&gt;
&lt;br /&gt;
In a video game, you cannot make progress through a level unless you have gotten the rules of the game right and have beaten the game AI. If these games of rules represent the concepts in academic subjects, then they will be the best replacement for exams. This mechanism of discovering your own mistake doesn&#39;t stress on the fact that you were wrong before, it instead highlights the fact that you eventually got it right and lets you proceed to next puzzle/level. Try to remember the excitement you felt, when you beat a game level on your own after failing at it many times. This definitely registers as a positive event in the player&#39;s mind. Also while figuring out how to beat the game, the player automatically realizes his/her own mistake thus understanding why he/she was wrong before.&lt;br /&gt;
&lt;br /&gt;
It will take time to creatively translate academic material into a playful and artistic manner, and then design puzzles on top of them. But it is definitely worth doing. It&#39;s the right application of the computing technology to further the educational system of our society.&lt;br /&gt;
&lt;br /&gt;
I am very hopeful looking at the games like &lt;a href=&quot;http://wewanttoknow.com/elements/&quot;&gt;Dragonbox Elements&lt;/a&gt;&amp;nbsp;that in not too distant future video games will rid our educational system of that nightmarish phenomenon called &#39;Exam&#39;.</description><link>http://jyro.blogspot.com/2015/06/no-exams-yes-video-games.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-725999631228292965</guid><pubDate>Sat, 21 Feb 2015 14:48:00 +0000</pubDate><atom:updated>2015-02-21T06:55:27.953-08:00</atom:updated><title>Podcasts Français</title><description>Voila! J&#39;ai réussi l&#39;examens de français hier. Une grande étape attiente.&lt;br /&gt;
&lt;br /&gt;
Voici les podcasts qui m&#39;ont aidé beacoup améliorer ma compréhension de langue.&lt;br /&gt;
&lt;br /&gt;
Utilisez votre logiciel préféré (comme iTunes) pour les écouter.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11645.xml&quot;&gt;Voyage, mode d&#39;emploi&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_12676.xml&quot;&gt;Les uns pour les autres&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11584.xml&quot;&gt;Les pourquoi&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_10586.xml&quot;&gt;Les sense de l&#39;info&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_12576.xml&quot;&gt;Les carnet d&#39;economie&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11603.xml&quot;&gt;La pratique du 2 roues&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11602.xml&quot;&gt;Jardin&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_13814.xml&quot;&gt;L&#39;histoire á la carte&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11617.xml&quot;&gt;C&#39;est mon boulot&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_18998.xml&quot;&gt;Nouveau monde&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_13819.xml&quot;&gt;Cartoon Story&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11074.xml&quot;&gt;Info sciences&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_13824.xml&quot;&gt;Ils ont fait l&#39;actu&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_13789.xml&quot;&gt;Crimes á bronzer&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11171.xml&quot;&gt;Tout et son contraire&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_12453.xml&quot;&gt;Histoires littorales&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_13821.xml&quot;&gt;Histoire d&#39;une vie&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_18996.xml&quot;&gt;Chronicles du ciel&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11591.xml&quot;&gt;A livre ouvert&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://radiofrance-podcast.net/podcast09/rss_11584.xml&quot;&gt;Du côté des étoiles&lt;/a&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www1.rfi.fr/radiofr/podcast/journalFrancaisFacile.asp&quot;&gt;RFI - Journal en français facile&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Découverez plus á&amp;nbsp;&lt;a href=&quot;http://www.radiofrance.fr/espace-pro/podcast-radio-france&quot;&gt;http://www.radiofrance.fr/espace-pro/podcast-radio-france&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://jyro.blogspot.com/2015/02/podcasts-francais.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-5505253703680299279</guid><pubDate>Sun, 12 Oct 2014 01:45:00 +0000</pubDate><atom:updated>2014-10-11T18:45:08.829-07:00</atom:updated><title>Quotable quotes</title><description>&lt;div&gt;
Memorable quotes from some books I read in recent past&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;It is the spectator, and not life, that art really mirrors&quot;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&quot;You know more than you think you know, just as you know less than you want to know.&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;To get back one&#39;s youth, one has merely to repeat one&#39;s follies&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B0084AXZK0/ref=r_soa_w_d&quot;&gt;The Picture of Dorian Gray&lt;/a&gt; - Oscar Wilde&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;“The only thing you &lt;i&gt;have to do&lt;/i&gt; in this life is die,... Everything else is a choice.”&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B006VIFVIG/ref=r_soa_w_d&quot;&gt;The Age of Miracles&lt;/a&gt; - Karen Thomson Walker&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;Without Pain, How Could We Know Joy? (This is an old argument in the field of Thinking About Suffering, and its stupidity and lack of sophistication could be plumbed for centuries, but suffice it to say that the existence of broccoli does not in any way affect the taste of chocolate.)&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;... all felt Romantic, but not romantic.&quot;&lt;br /&gt;&lt;br /&gt;&quot;The dead are visible only in the terrible lidless eye of memory.&quot;&lt;br /&gt;&lt;br /&gt;&quot;You don’t get to choose if you get hurt in this world, old man, but you do have some say in who hurts you.&quot;&lt;br /&gt;&lt;br /&gt;&quot;quantum entanglement of tubes and bodies&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B007Z8ZKS2/ref=r_soa_w_d&quot;&gt;The Fault in Our Stars&lt;/a&gt; - John Green&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;A man’s life was five dogs long, Cortland believed. The first was the one that taught you. The second was the one you taught. The third and fourth were the ones you worked. The last was the one that outlived you.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B001RF3U9K/ref=r_soa_w_d&quot;&gt;UR&lt;/a&gt; - Stephen King&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;It is better to be lucky. But I would rather be exact. Then when luck comes you are ready.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B007679858/ref=r_soa_w_d&quot;&gt;Old Man And the Sea&lt;/a&gt; - Earnest Hemingway&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;No one in the world ever gets what they want and that is beautiful&quot;&lt;br /&gt;&lt;br /&gt;&quot;People who live in glass houses should shut the fuck up&quot;&lt;br /&gt;&lt;br /&gt;&quot;I’d come to see my rig for what it was: an elaborate contraption for deceiving my senses, to allow me to live in a world that didn’t exist. Each component of my rig was a bar in the cell where I had willingly imprisoned myself&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B004J4WKUQ/ref=r_soa_w_d&quot;&gt;Ready Player One&lt;/a&gt; - Ernest Cline&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;magic formula of a great game — easy to learn, difficult to master&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B000FBFNL0/ref=r_soa_w_d&quot;&gt;Masters of Doom&lt;/a&gt; - David Kushner&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;You’d be happy, in the same pitiful way someone like our friend Ritchie is. Nothing affects you, and you affect nothing.&quot;&lt;br /&gt;&lt;br /&gt;&quot;Maybe she’s afraid that if I can’t have her, I won’t want her.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B001BZRUR4/ref=r_soa_w_d&quot;&gt;I Am the Messenger&lt;/a&gt; - Markus Zusak&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;I’m reminded of a wise man who once said that he would never want to join a club that would have him for a member.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B003GK21B2/ref=r_soa_w_d&quot;&gt;The Ghost Brigades&lt;/a&gt; - John Scalzi&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;Because substitutes that cannot be substituted are generally called identities&quot;&lt;br /&gt;&lt;br /&gt;&quot;Bobby seems to be asking, in bold Helvetica type and in all earnestness&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B00BW8L13Y/ref=r_soa_w_d&quot;&gt;Self-Reference Engine&lt;/a&gt; - Toh EnJoe&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;... you’ve seen a room where the gravity has failed twice in different directions&quot;&lt;br /&gt;&lt;br /&gt;&quot;You love because you want to need someone the way you did when you were a child, and have them need you too.&quot;&lt;br /&gt;&lt;br /&gt;&quot;It struck me that if you could train your mind to operate when awake as it does in your sleep, then you could dream while you were awake, and see a different world&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B003IDMUOA/ref=r_soa_w_d&quot;&gt;Only Forward&lt;/a&gt; - Michael Marshall Smith&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;No one ever sees what is behind the mirror.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;Unknown&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;That which, being added to another does not make it greater, and being taken away from another does not make it less, is nothing&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B008TVM2NA/ref=r_soa_w_d&quot;&gt;The History of Calculus and its conceptual development&lt;/a&gt; - Carl Boyer&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;People thought languages were just substitution puzzles&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B00AOBGZBI/ref=r_soa_w_d&quot;&gt;Damocles&lt;/a&gt; - S. G. Redling&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;The only way to beat the competition is to stop trying to beat the competition.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B004OC07F8/ref=r_soa_w_d&quot;&gt;Blue Ocean Strategy&lt;/a&gt; - W. Chan Kim, Renee Mauborgne&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;Alicia made her mouth into a ~&quot;&lt;br /&gt;&lt;br /&gt;&quot;Immortality is a mass event&quot;&lt;br /&gt;&lt;br /&gt;&quot;Anticlimax is the currency of mortality&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B005DKSG9Y/ref=r_soa_w_d&quot;&gt;Anticopernicus&lt;/a&gt; - Adam Robers&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;... number-one goal of all computer users is to not feel stupid.&quot;&lt;br /&gt;&lt;br /&gt;&quot;The essence of good interaction design is to devise interactions that let users achieve their practical goals without violating their personal goals.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;a href=&quot;http://www.amazon.com/dp/B000OZ0N62/ref=r_soa_w_d&quot;&gt;The Inmates are running the Asylum&lt;/a&gt; - Alan Cooper&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://jyro.blogspot.com/2014/10/quotable-quotes.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-3663169353640485779</guid><pubDate>Sun, 06 Apr 2014 13:31:00 +0000</pubDate><atom:updated>2014-04-06T06:31:56.988-07:00</atom:updated><title>Conned?!</title><description>There is a Men&#39;s restroom right across the Service Canada office in Guy-Favrau complex in downtown Montreal. I happened to visit it one morning. As I was washing my hands, a shabbily dressed man besides me tried to get my attention. He asked if I speak English. As usual my first instinct was to ignore the man who looked like a homeless bum. But if this guy was asking for help just because he couldn&#39;t speak french, I didn&#39;t see any harm talking to him. We just stepped out of the restroom after drying our hands under the hot air blower. Suddenly he started speaking in very good English. That&#39;s not usual on the streets of Montreal.&lt;br /&gt;
&lt;br /&gt;
He said, &quot;I arrived last night by a bus from Halifax, Nova Scotia. My bus arrived at Berry UQAM and I was supposed to go to Boston on a connecting bus as soon as I arrived. But the bus got cancelled and they misplaced my luggage. So my bags haven&#39;t arrived yet. I&#39;m going to Boston to do a procedure on the tumor in my stomache.&quot; This is where it got confusing to me. He opened his jacket, pulled up his sweatshirt and showed a big tumor sticking out of his stomache. It was big. The size of his head maybe. I tried my best to not show my disgust. He covered it up and continued telling his story.&lt;br /&gt;
&lt;br /&gt;
&quot;I need to get my medications. The pharmacist here told me that my Insurance provider in Halifax will not work here. Since I didn&#39;t expect getting stranded in Montreal, I didn&#39;t bring much money with me. I had $120 with me. The pharmacist asked for $148.&quot;&lt;br /&gt;
&lt;br /&gt;
All this time, he was showing me a paper, which had something written on it in blue pen. I could make out words like &#39;Berry UQAM&#39;, timings, the sum total of some dollar figures, etc. Everything else was in very illegible handwriting.&lt;br /&gt;
&lt;br /&gt;
&quot;I&#39;m running $28 short.&quot;&lt;br /&gt;
&lt;br /&gt;
... At this point, I found myself confused. Since the beginning I assumed this is a homeless man trying to get some money from me. But I wasn&#39;t prepared for such an elaborate story, certainly not one substantiated so well. Turning down a homeless man is pretty easy, but ignoring a stranded sick traveler can definitely make you feel guilty.&lt;br /&gt;
&lt;br /&gt;
I tried to rationalize the situation. To begin with, I cannot say whether this man is lying or saying the truth. The probability that a given unknown person would lie or tell the truth will be 50%. Then in my mind I drew a table. On the left all the things that indicated he was lying and on the right all the things that could prove he wasn&#39;t. I was filling this table as he was presenting me his story. The actual tumor (or what he showed me of it), was a big entry in the right column. Eventually I decided that even if there is a possibility that he is telling the truth and I walk away; I&#39;ll always feel guilty for being a skeptic and valuing $28 more than the helplessness of a sick person. After I seeing the situation in this way, I knew what to do. I wasn&#39;t as worried about being fooled for $28 as I was about being irrational. Also, I wanted to know the truth.&lt;br /&gt;
&lt;br /&gt;
So I took out my wallet and gave him $30. He asked for my phone number to return the money, which of course I didn&#39;t give. And then I started looking for his reaction to get a hint of the truth.&lt;br /&gt;
&lt;br /&gt;
He said, &quot;Thank you. It&#39;s good to know there are people.. blah blah&quot; I cut him short and made my exit.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
To me it appeared textbook response. If you are asking strangers for money to treat the pain from an illness, because you are stranded in a foreign city, then you are in a very stressful situation. And then you find a person who just solves that problem by giving you all the money you need. ...and you don&#39;t show any emotion. You give a boilerplate response. It was at this moment that I thought I had enough data to prove to myself that he was lying.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Later, I tried to put myself in his shoes as a conman and tried to imagine how such situation could be set up.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
It is easy to gain sympathy as a stranded Anglophone in Montreal who can&#39;t speak or understand french. Showing someone a big tumour in your stomach, increases your credibility a lot and gains you lot of sympathy instantly. Moreover, anyone would want to avoid looking at an abnormal growth in someone&#39;s body, so most people won&#39;t tend to overanalyse it, if at all. Putting everything he was saying on a piece of paper, somehow made it more credible. I overlooked the fact that all of it was written by hand and in illegible handwriting. He could have scribbled all of it on his own. Furthermore, the price he was asking was just right. Not too small, to raise the doubt that he was just a petty beggar. Not too large, to outweigh my conscience.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Yes, most likely I was conned. ... I would never know.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://jyro.blogspot.com/2014/04/conned.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-8857499188058907711</guid><pubDate>Sat, 14 Dec 2013 16:23:00 +0000</pubDate><atom:updated>2014-03-13T08:10:08.898-07:00</atom:updated><title>Uruguay&#39;s President</title><description>Some snippets from this &lt;a href=&quot;http://www.theguardian.com/world/2013/dec/13/uruguay-president-jose-mujica?CMP=twt_gu&quot;&gt;great news story about Uruguay&#39;s President&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&quot;I&#39;m not the poorest president. The poorest is the one who needs a lot to live,&quot; he said. &quot;My lifestyle is a consequence of my wounds. I&#39;m the son of my history. There have been years when I would have been happy just to have a mattress.&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&quot;My country is not particularly open. These measures are logical,&quot; he said. &quot;With marijuana, this is not about being more liberal. We want to take users away from clandestine dealers. But we will also restrict their right to smoke if they exceed sensible amounts of consumption. It is like alcohol. If you drink a bottle of whisky a day, then you should be treated as a sick person.&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&quot;Contemporary politics is all about short-term pragmatism. We have abandoned religion and philosophy … What we have left is the automatisation of doing what the market tells us.&quot;&lt;/span&gt;&lt;/blockquote&gt;
</description><link>http://jyro.blogspot.com/2013/12/uruguays-president.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4468754063533083593</guid><pubDate>Tue, 03 Dec 2013 13:34:00 +0000</pubDate><atom:updated>2013-12-03T05:34:44.325-08:00</atom:updated><title>New rules for Formula 1</title><description>There are many aspects of our culture that can be called flamboyant, lavish and egregiously wasteful; yet we just love them. Take &quot;Formula 1&quot; for example. The amount of fuel these cars burn and the amount of cash their manufacturers spend to design and manufacture them, is shocking. But like many others I am a huge fan of Formula 1 races. Almost inhuman speed, unimaginable power, glamorous look and the sound that literally shakes you to the core - what&#39;s there not to like. Despite the guilt of burning so much precious fuel, I would definitely want to be in one of these super cars.&lt;br /&gt;
&lt;br /&gt;
So this morning, it was very satisfying to read &lt;a href=&quot;http://www.bbc.com/sport/0/formula1/25158104&quot; target=&quot;_blank&quot;&gt;the news about the new F1 rules and the motive behind them&lt;/a&gt;. The new rules require the teams to use different engines in the cars (V6 instead of V8). There are more restrictions on the total fuel they can use and the rate at which they can use them. There is more emphasis on use of electric motors (2 instead of 1), or what&#39;s called the &quot;Energy recovery system&quot;. What&#39;s most notable however is the motive behind these new restrictions.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;The idea is to bring F1 into line with cutting-edge road-car technology, and to stimulate research and development in that area.&amp;nbsp;The name of the game is efficiency - using much less fuel to generate the same performance. The idea is to increase fuel efficiency by as much as 40%.&lt;/span&gt;&lt;/blockquote&gt;
This is a way of channeling the competition of a sport towards the betterment of our society. The new feats of engineering happen when they are pushed to the limits and then some more. Then over time they become commonplace and part of everyday life - in this case improving the car we drive to the shopping mall.&lt;br /&gt;
&lt;br /&gt;
It gives some meaning to our celebration of Formula 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://jyro.blogspot.com/2013/12/new-rules-for-formula-1.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-1151493089238763672</guid><pubDate>Sun, 01 Dec 2013 21:45:00 +0000</pubDate><atom:updated>2013-12-01T13:45:27.752-08:00</atom:updated><title>Software Engineering Code of Ethics and Professional Practice</title><description>&lt;div class=&quot;tr_bq&quot;&gt;
The other day I was reading a book on Mechanical engineering. The introductory chapter of the book had sections with terms like &quot;engineering responsibility&quot;, &quot;professionalism&quot;, &quot;ethics&quot;. In traditional engineering disciplines these terms have been significant, because the product you design may directly harm or kill someone. In Software engineering however these aspects haven&#39;t been imprinted on the minds of practitioners of this profession.&lt;/div&gt;
&lt;br /&gt;
I was glad therefore to see this link on Hacker News today: &lt;a href=&quot;http://www.acm.org/about/se-code&quot;&gt;Software Engineering Code of Ethics and Professional Practice&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the quoted short version:&lt;br /&gt;
&lt;br /&gt;&lt;blockquote&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;The short version of the code summarizes aspirations at a high level of the abstraction; the clauses that are included in the full version give examples and details of how these aspirations change the way we act as software engineering professionals. Without the aspirations, the details can become legalistic and tedious; without the details, the aspirations can become high sounding but empty; together, the aspirations and the details form a cohesive code.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles:&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;1. PUBLIC - Software engineers shall act consistently with the public interest.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;3. PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;4. JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;6. PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.&lt;/span&gt;&lt;/blockquote&gt;
</description><link>http://jyro.blogspot.com/2013/12/software-engineering-code-of-ethics-and.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-8837818823998032504</guid><pubDate>Fri, 12 Apr 2013 01:34:00 +0000</pubDate><atom:updated>2013-04-11T18:34:17.625-07:00</atom:updated><title>Something&#39;s Missing</title><description>&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
When autumn comes, it doesnt ask. &lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
It just walks in, where it left you last.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
And you never know, when it starts&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Until there&#39;s fog inside the glass around your summer heart&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.youtube.com/watch?feature=player_detailpage&amp;amp;v=NCxtHCV0N-M#t=215s&quot; target=&quot;_blank&quot;&gt;Something&#39;s Missing - John Mayer&lt;/a&gt;&lt;/div&gt;
</description><link>http://jyro.blogspot.com/2013/04/somethings-missing.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4067966590495155809</guid><pubDate>Sat, 24 Nov 2012 09:24:00 +0000</pubDate><atom:updated>2012-11-26T04:21:21.910-08:00</atom:updated><title>Coffeescript: To switch or not to switch</title><description>For a long time during the development of &lt;a href=&quot;http://www.3dtin.com/&quot;&gt;3DTin&lt;/a&gt; I was toying with the idea of switching to Coffeescript (&lt;i&gt;&quot;CS&quot; henceforth&lt;/i&gt;) from Javascript (&lt;i&gt;&quot;JS&quot; henceforth&lt;/i&gt;). I was looking for a comprehensive guide about what are the pros and cons for such move. I didn&#39;t find any such document at the time. Now I have been using CS on-and-off for &lt;a href=&quot;http://www.3dtin.com/&quot; target=&quot;_blank&quot;&gt;3DTin&lt;/a&gt; in past 6 months. I have learnt a lot about the potential benefits and pitfalls of CS. This blog post is a collection of what I&#39;ve learnt. Hopefully it will benefit those who are wondering whether to jump the boat. But note that, my experiences are not conclusive. I am still not sure that complete switch to CS is a good thing for every JS project.&lt;br /&gt;
&lt;br /&gt;
Let&#39;s get started...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Coffeescript is &lt;i&gt;not&lt;/i&gt; a language&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
A better characterization of CS is a set of preprocessor macros (think of C preprocessor). It&#39;s just that Coffeescript is such a complete set of macros that it can pass as a language. It&#39;s more like a shorthand for JS. Why is it important to think it like this? For two reasons:&lt;br /&gt;
&lt;br /&gt;
1. You cannot get away from learning (or better mastering) Javascript. One of CS&#39;s design goals is to stay as close to JS as possible and not implement language features that JS cannot natively support. That means even if you use CS everywhere in your project, you should have good understanding of JS.&lt;br /&gt;
&lt;br /&gt;
2. You can use CS alongside JS. Since CS is merely a shorthand for JS, some files in your project can be written in CS, while other are written in plain JS. That helps in adopting CS in already big Javascript codebase, like ours.&lt;br /&gt;
&lt;br /&gt;
If you call Coffeescript a language written on top of Javascript, many people right away assume it&#39;s bound to be slower than corresponding Javascript (which is never true). (Do C preprocessor macros inherently make the generated C code slower? Not unless they are defined so)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The iterations&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Iterating is something we do so many times. Therefore writing &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;for(int i=0, l=arr.length; i&amp;lt;l; i++) { ... }&quot;&lt;/span&gt; every time is very painful, especially if you are used to Python&#39;s way of iteration &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;for obj in arr: ...&quot;&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
In pure JS you have to use the long form &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;for&lt;/span&gt; incantation. There is `&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;forEach&lt;/span&gt;` in modern JS implementations, but who knows in which browser it breaks in what way. Our solution for this problem is &lt;a href=&quot;http://underscorejs.org/&quot;&gt;underscore.js&lt;/a&gt;&#39;s &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;_.each&lt;/span&gt; function. It is everywhere in our code.&lt;br /&gt;
&lt;br /&gt;
Only recently however I realised, that liberal use of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;_.each&lt;/span&gt; can lead to significant slow downs. If the loop count is very large compared to the time spent in the body of the loop, you will see clear improvement in speed by using old-fashing for loop instead of _.each. CS gives you a compact way of iterating over an array and it automatically converts it to the most efficient JS code for doing it.&lt;br /&gt;
&lt;br /&gt;
This iteration in CS&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=2.coffee&quot;&gt;&lt;/script&gt;

translates to this in JS&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=2.js&quot;&gt;&lt;/script&gt;
Best of both the worlds.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Named arguments&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Naming the arguments is the best way to implicitly document the source code.&lt;br /&gt;
&lt;br /&gt;
Moreover, in an ever-evolving environment the function signatures keep changing very often. If you rely on positional arguments, every time you add a new argument to the function, you have to check all the places from where it&#39;s already being invoked and check that the new argument doesn&#39;t break them. In JS, most of the times such new arguments are optional for the logic of the function, i.e. they can be &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;undefined&lt;/span&gt;. Therefore they can normally added at the end of the argument list, so that the existing invocations won&#39;t need any change. For example, your current function signature is &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function foo(arg0, arg1)&lt;/span&gt;. You decide to accept another optional argument &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;newArg&lt;/span&gt;. You can change definition of&amp;nbsp;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;foo&lt;/span&gt; to&amp;nbsp;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function foo(arg0, arg1, newArg)&lt;/span&gt;. All the existing invocations of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;foo&lt;/span&gt; won&#39;t have to be changed, provided the body of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;foo&lt;/span&gt; handles newArg being &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;undefined&lt;/span&gt; properly. But what if it makes sense to add &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;newArg&lt;/span&gt; before &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;arg0&lt;/span&gt;?&lt;br /&gt;
&lt;br /&gt;
In such circumstances, it helps to have named arguments. JS doesn&#39;t support them.&lt;br /&gt;
&lt;br /&gt;
For that matter CS also doesn&#39;t support them seamlessly, but it&#39;s easy enough to do. You can also add a line of code to gracefully define default value for an argument.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=3.coffee&quot;&gt;&lt;/script&gt;

&lt;span style=&quot;font-size: x-small;&quot;&gt;I learnt this trick from this &lt;a href=&quot;http://stackoverflow.com/questions/5238398/default-function-parameter-ordering&quot;&gt;Stackoverflow question&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Built-in classes&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There are many ways to define Classes in JS, because they aren&#39;t natively supported. We use &lt;a href=&quot;http://dean.edwards.name/weblog/2006/03/base/&quot; target=&quot;_blank&quot;&gt;Base.js&lt;/a&gt; in 3DTin. With CS, classes are supported as part of language definition. You can define your classes in a more familiar OO syntax without worrying about all the black-magic with prototypes.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=4.coffee&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;b&gt;Avoids variable leaking&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In JS it&#39;s very easy to forget to add &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var&lt;/span&gt; before a variable, resulting in that variable getting defined in global namespace. Do not think that creating scopes with &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;(function() { ... })()&lt;/span&gt; blocks is going to help. It helps only if you define the variable with &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var&lt;/span&gt;, then it won&#39;t be visible outside that scope. But if you forget to add &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var&lt;/span&gt;, it will leak and will get defined as member of the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;window&lt;/span&gt; object. Here&#39;s a proof.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWhGV60Miqza5669SyMqI5LyYLnDDivIX6WoIqcLqLboHbC8H5t0TFMFo3QHtKQ9btgjMLPX-on2OELUR0ctPC2yEOsE88bhQOXx8dNXZ5zMvQ_PMQ5rJExcLT2FNA-jCtKoPOJA/s1600/Screen+Shot+2012-11-24+at+9.55.31+AM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;114&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWhGV60Miqza5669SyMqI5LyYLnDDivIX6WoIqcLqLboHbC8H5t0TFMFo3QHtKQ9btgjMLPX-on2OELUR0ctPC2yEOsE88bhQOXx8dNXZ5zMvQ_PMQ5rJExcLT2FNA-jCtKoPOJA/s320/Screen+Shot+2012-11-24+at+9.55.31+AM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In CS you don&#39;t have to worry about explicitly declaring any variables. The CS compiler automatically generates the necessary &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var&lt;/span&gt; declarations for all the variables you use. IMO this is one of the biggest advantages of CS.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;this.&lt;/i&gt; becomes &lt;i&gt;@&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In object oriented JS code, you are always going to access members of the class from inside it using &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;this.&lt;/span&gt; prefix. If there was a more compact way to do this, it could save a lot of keystrokes and source code real-estate. CS designers realized that and have provided a shorthand for this usage.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The Fat arrow&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There are lots of callback functions in typical JS code. Classes are also functions in JS. That leads to a problem with the use of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;this&lt;/span&gt; keyword sometimes. Inside the body of a function,&amp;nbsp;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;this&lt;/span&gt; refers to the context of that function. Inside the body of a function that is part of a prototype, this context is the instance of the object. Therefore if you have written &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;this&lt;/span&gt;, inside a callback function body, that is defined inside a prototype member function, which is it going to point to? It points to the callback function&#39;s context. But many times you assume it&#39;s referring to the instance of the object. This is a common mistake a &amp;nbsp;developer makes while starting with JS. If you want to refer to the instance of the object from inside the callback function, then this is the solution for it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=1.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
CS Fat arrow notation lets you write this in a more compact manner.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=1.coffee&quot;&gt;&lt;/script&gt;

The use of fat arrow &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;automatically tells CS compiler to define a reference to outer context, so that the code inside the closure body can use simple @ notation and still resolve to the right context. We have such pattern all over the code. It&#39;s easy to imagine then how cleaner our CS code looks than the original implementation.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;i&gt;return&lt;/i&gt; is not necessary&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
CS automatically adds a return wherever it deems it necessary (and also unnecessary). This is a huge benefit while writing functional code.&lt;br /&gt;
&lt;br /&gt;
You can write&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=5.coffee&quot;&gt;&lt;/script&gt;

instead of&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=5.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;String formatting&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Are you tired of writing&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=6.js&quot;&gt;&lt;/script&gt;

CS makes it easy for you.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138237.js?file=6.coffee&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Parenthesis during function calls - can be skipped (almost)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
CS lets you skip Parenthesis during function invocations. This can be a good thing or a bad thing. It can make your code look more beautiful, but its overuse can make it confusing. Also the skipping rules are not consistent. Take a look.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138819.js?file=7.coffee&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Braces and commas for dictionaries - can be skipped&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Similar to parenthesis, you don&#39;t have to use braces while defining dictionaries / maps / objects. CS will automatically infer their structure based on context or indentation. This contributes a lot towards cleaning up redundant tokens from your source. If you are going to put each name-value pair on new line, you can get rid of commas too.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138819.js?file=8.coffee&quot;&gt;&lt;/script&gt;

Translates to
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138819.js?file=8.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Spanning source lines&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Since CS infers a lot of things from indentation, when you try to break a long line of source into multiple lines, you can trigger compilation failures or at worse mis-interpretation.&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4138819.js?file=9.coffee&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;In closing&lt;/b&gt;&lt;br /&gt;
In past 6 months I have used CS for all new source code and rewritten some JS code in CS if it made sense. I clearly saw certain benefits, but also some pitfalls. Not sure which path I will continue on. But I hope this post will help you make your own decisions.&lt;br /&gt;
&lt;br /&gt;
It&#39;s of enormous help to have a continuously running watch script that compiles coffeescript files as you save them. I&#39;ve written such script that watches all coffee, jade and less.css files in a directory tree and compiles them as soon as they change. You can find it &lt;a href=&quot;https://gist.github.com/3083080&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.</description><link>http://jyro.blogspot.com/2012/11/coffeescript-to-switch-or-not-to-switch.html</link><author>noreply@blogger.com (Jayesh)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWhGV60Miqza5669SyMqI5LyYLnDDivIX6WoIqcLqLboHbC8H5t0TFMFo3QHtKQ9btgjMLPX-on2OELUR0ctPC2yEOsE88bhQOXx8dNXZ5zMvQ_PMQ5rJExcLT2FNA-jCtKoPOJA/s72-c/Screen+Shot+2012-11-24+at+9.55.31+AM.png" height="72" width="72"/><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-1567491739261797911</guid><pubDate>Fri, 23 Nov 2012 06:22:00 +0000</pubDate><atom:updated>2012-11-22T22:22:18.671-08:00</atom:updated><title>The single most reason that keeps me using Vim</title><description>I&#39;ve wanted to use all new and cool Code editors that have come around in past few years. Many times I have switched to them determinedly, only to switch back to Vim after a few days. All the fancy features that I see in the screencasts of these code editors are irresistibly inviting. Yet I can&#39;t let go of Vim. After thinking a lot about it, I think it boils down to one single reason.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;The h-j-k-l-b-e and Ctrl+w, Ctrl+u, Ctrl+d key sequences.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
These are key sequences for moving around inside a code window and then switching between multiple code windows. They are what I use the most in Vim (except for typing actual text). Over years my muscles have deeply memorized these keyboard movements. Every other code editor forces me to use arrow keys or mouse to do these navigations. I cannot get used to it even if I try it for a month. Therefore I switch back to Vim.&lt;br /&gt;
&lt;br /&gt;
Of course I diligently install the Vim emulation plugins that come with the respective new code editor I am trying. But the code navigation key sequences are so frequently used that even a slightest departure from the original Vim behavior creates a lot of cognitive friction.&lt;br /&gt;
&lt;br /&gt;
I&#39;m not saying that h-j-k-l is the most intuitive way to do code navigation, but once your fingers memorize those movements it seems impossible to find anything else that can feel as satisfactory.</description><link>http://jyro.blogspot.com/2012/11/the-single-most-reason-that-keeps-me.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-3968609746830116324</guid><pubDate>Fri, 23 Nov 2012 06:16:00 +0000</pubDate><atom:updated>2012-11-22T22:16:16.347-08:00</atom:updated><title>Water from air</title><description>It&#39;s fascinating how a really simple idea can change life as we know it. Today I read this &lt;a href=&quot;http://www.loe.org/shows/segments.html?programID=12-P13-00046&amp;amp;segmentID=8&quot;&gt;news&lt;/a&gt;&amp;nbsp;via slashdot about a new startup &lt;a href=&quot;http://www.nbdnano.com/&quot;&gt;NBD nano&lt;/a&gt;, that is building a device that can extract water from air. The most interesting part is its implications and applications.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;i&gt;we can somehow have a way to tap into one of the largest reservoirs of water, and that being the air&lt;br /&gt;...&lt;br /&gt;And we see this being applicable to anything from marathon runners to people in third world countries, because we realize that water is such a large issue in the world today&lt;br /&gt;...&lt;br /&gt;We’re actually investigating a type of device that can be used for drip irrigation. And we are looking to incorporate this in greenhouses or green roofs in the immediate future&lt;br /&gt;...&lt;br /&gt;We actually see the maritime environment as really a very large market for us because humidity is actually constantly regenerated over a large body of water and then we can pull that humidity from the air to support people who possibly take long trips on yachts, or provide a sort of potable water source that can be run off a solar panel while at sea.&lt;/i&gt;&lt;/blockquote&gt;
And the underlying technology seems convincing. Amazing stuff!</description><link>http://jyro.blogspot.com/2012/11/water-from-air.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-8992827426823084065</guid><pubDate>Sun, 18 Nov 2012 14:50:00 +0000</pubDate><atom:updated>2012-11-18T06:55:41.896-08:00</atom:updated><title>Time travel fiction</title><description>This year I read two very gripping thriller novels based on Time Travel.&lt;br /&gt;
&lt;br /&gt;
First one was back in January. &lt;a href=&quot;http://www.amazon.com/gp/product/1451627297/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1451627297&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;11/22/63&lt;/a&gt;&amp;nbsp;By Stephen King&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.amazon.com/gp/product/1451627289/ref=as_li_ss_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1451627289&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=1451627289&amp;amp;Format=_SL160_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=myfreq-20&quot; /&gt;&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=myfreq-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1451627289&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;

&lt;/div&gt;
&lt;br /&gt;
and recently the twin tomes &lt;a href=&quot;http://www.amazon.com/gp/product/0345519833/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0345519833&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;Black Out&lt;/a&gt; and &lt;a href=&quot;http://www.amazon.com/gp/product/0553592882/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0553592882&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;All Clear&lt;/a&gt; by Connie Willis.&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.amazon.com/gp/product/0345519833/ref=as_li_ss_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0345519833&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=0345519833&amp;amp;Format=_SL160_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=myfreq-20&quot; /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=myfreq-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0345519833&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;

&lt;a href=&quot;http://www.amazon.com/gp/product/0553592882/ref=as_li_ss_il?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0553592882&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;amp;ASIN=0553592882&amp;amp;Format=_SL160_&amp;amp;ID=AsinImage&amp;amp;MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;WS=1&amp;amp;tag=myfreq-20&quot; /&gt;&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=myfreq-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0553592882&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
They belong more appropriately to thriller genre than Science fiction, despite the Time travel theme.&lt;br /&gt;
&lt;br /&gt;
Building a huge plot where the timelines and characters are interwoven brilliantly is quite a challenging task. Adding time travel to it makes it even more interesting. Not to mention the awkward paradoxes that arise in the Universe where time travel is possible.&lt;br /&gt;
&lt;br /&gt;
Both (actually all three) novels, are highly recommended if you like reading stories that keep you at the edge of your seat most of the time. Last sentence of almost every chapter is bound to surprise you. (My personal observation: Such novels are really good to improve your reading speed)&lt;br /&gt;
&lt;br /&gt;
In&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/1451627297/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1451627297&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;11/22/63&lt;/a&gt;&amp;nbsp;Stephen King tells the story from a man&#39;s point of view who has found a portal through time that opens in the past - more accurately in the year 1958. The entire novel is based on this man&#39;s attempt to exploit this portal in order to stop the Kennedy Assassination in 1963. King&#39;s description of the America in 60&#39;s is very inviting (if only we knew of such portal). The ups and downs in the whole novel keep you entertained all of the time. Here is one of my favorite quotes:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;I saw that most of the passengers were smoking. The atmosphere in there must have been roughly akin to the atmosphere on Saturn&quot; [in reference to popularity of smoking in the 60&#39;s]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.com/gp/product/0345519833/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0345519833&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;Black Out&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/gp/product/0553592882/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0553592882&amp;amp;linkCode=as2&amp;amp;tag=myfreq-20&quot;&gt;All Clear&lt;/a&gt;&amp;nbsp;are two novels continuing the same storyline. The story is about a group of students of history from the year 2060, who travel back to the years of World War II, to study the history first hand (as part of their research assignments) and get trapped in the past. The narration of London during the entire period of war is quite fascinating. The characters of the story live through the London bombings because their portals back to their time stop working for some reason.&lt;br /&gt;
&lt;br /&gt;
Although in 11/22/63, Stephen King has conveniently dumbed down the paradoxical implications of time travels; Connie Willis bravely weaves her story on top of them. Of course no one can give foolproof resolution for the impossible issues that arise with the concept of time travel. However Connie has been fairly successful in building a maze of mysteries and then using her flavor of Time travel theory to explain those mysteries satisfactorily. You have to admire how much work she must have put into these two novels.&lt;br /&gt;
&lt;br /&gt;
Highly recommended.&lt;br /&gt;
&lt;br /&gt;</description><link>http://jyro.blogspot.com/2012/11/time-travel-fiction.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-200116932040757009</guid><pubDate>Thu, 11 Oct 2012 14:49:00 +0000</pubDate><atom:updated>2012-10-11T07:50:23.254-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">commit</category><category domain="http://www.blogger.com/atom/ns#">git</category><title>When your git branch diverges from your remote</title><description>This is a tricky state and in past when I occasionally got myself into it I could never cleanly recover from it. Until now. I just found a clean way.&lt;br /&gt;
&lt;br /&gt;
What&#39;s this tricky problem?&lt;br /&gt;
&lt;br /&gt;
You know that &lt;code&gt;git commit --amend&lt;/code&gt; is a very useful way to make changes to your last commit. You can add a couple of diffs to it or just change the commit message. It works great as long as you haven&#39;t pushed that commit to any remote. If the remote already has your last commit and now you make changes to it locally, your local branch and the remote branch are going to diverge. You will get a message like this&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;# On branch master
# Your branch and &#39;origin/master&#39; have diverged,
# and have 1 and 1 different commit(s) each, respectively.

&lt;/pre&gt;
If you try to push to remote, git won&#39;t let you (if I recall correctly). Therefore I almost always check whether I&#39;ve pushed the commits to origin/master before I try to invoke --amend. But sometimes accidentally I forget to check and end up in this tight situation. Well today I got a way to resolve it.&lt;br /&gt;
&lt;br /&gt;
The state of your git repository is like this&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;Remote: A --&amp;gt; B
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  \
Local: &amp;nbsp;A --&amp;gt; C

&lt;/pre&gt;
After commit A, you created commit B and pushed it to the remote. Then you accidentally did --amend on commit B and changed it to commit C. Here are the steps to recover.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Rewind C. In the past I described &lt;a href=&quot;http://jyro.blogspot.in/2012/05/rolling-back-latest-git-commit.html&quot;&gt;different ways of undoing a commit&lt;/a&gt;. One of them helps us here. We run &lt;code&gt;git reset --soft HEAD^&lt;/code&gt;
to rewind commit C. That is, the changes in commit C come back to the staged state. Now these changes are sum of the diffs that went in commit B and the changes you added with --amend.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Note the changes you did in --amend (copy them somewhere, hopefully they weren&#39;t many).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now either erase these changes with &lt;code&gt;git checkout&lt;/code&gt;
or stash them away with &lt;code&gt;git stash save&lt;/code&gt;
.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now do a git pull. This will bring your local repo in sync with remote. i.e. your repo&#39;s HEAD will now be at commit B.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now do the changes that you were trying to commit with &lt;code&gt;--amend&lt;/code&gt; (that you saved somewhere earlier).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now commit them as a new separate commit D.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;If you had stashed the old mixed changes, do a &lt;code&gt;git stash clear&lt;/code&gt; to loose them.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
That&#39;s it. Now your local and remote branches will look like this after you push&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre&gt;Remote: A --&amp;gt; B --&amp;gt; D
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  
Local: &amp;nbsp;A --&amp;gt; B --&amp;gt; D

&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://jyro.blogspot.com/2012/10/when-your-git-branch-diverges-from-your.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4603777597289143401</guid><pubDate>Fri, 05 Oct 2012 03:53:00 +0000</pubDate><atom:updated>2012-10-04T20:53:48.344-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lyrics</category><category domain="http://www.blogger.com/atom/ns#">music</category><title>Something like Olivia - John Mayer</title><description>One of the best lyrics in John Mayer&#39;s latest album - &quot;Born and Raised&quot;.&lt;br /&gt;
&lt;br /&gt;
You find a deeper meaning when you ask why he says &quot;Something&quot; and not &quot;Someone&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/izkqPdVAdL4&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
(and yes, I would like to believe he means Olivia Wilde :)</description><link>http://jyro.blogspot.com/2012/10/something-like-olivia-john-mayer.html</link><author>noreply@blogger.com (Jayesh)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/izkqPdVAdL4/default.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4966556711502707208</guid><pubDate>Tue, 31 Jul 2012 03:43:00 +0000</pubDate><atom:updated>2012-07-30T20:43:10.177-07:00</atom:updated><title>Kelsey Grammer is spectacular</title><description>After watching 11 seasons of &lt;a href=&quot;http://www.amazon.com/gp/product/B000VDDE18/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000VDDE18&amp;amp;linkCode=as2&amp;amp;tag=codeovertones-blog-20&quot;&gt;Frasier&lt;/a&gt;, I couldn&#39;t imagine &lt;a href=&quot;http://en.wikipedia.org/wiki/Kelsey_Grammer&quot;&gt;Kelsey Grammer&lt;/a&gt; could be anyone but a comedian. When I watched &lt;a href=&quot;http://www.amazon.com/gp/product/B005S97ULU/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B005S97ULU&amp;amp;linkCode=as2&amp;amp;tag=codeovertones-blog-20&quot;&gt;Boss&lt;/a&gt; I was glad to be wrong. The character of Tom Kane is as diametrically opposite of Frasier as possible and Kelsey has packed it with genuine terror of the scale I have rarely seen.</description><link>http://jyro.blogspot.com/2012/07/kelsey-grammer-is-spectacular.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-783668243560273259</guid><pubDate>Tue, 19 Jun 2012 03:33:00 +0000</pubDate><atom:updated>2012-06-18T20:33:46.602-07:00</atom:updated><title>Why Patriotism doesn&#39;t make sense</title><description>Imagine you are one in a group of young students who are going on a field trip across the country in a plane. This is first time on a plane for most of you and everyone is eager to get the window seat to see how the world looks from high up in the sky. As the seating arrangement in a typical plane goes, some seats are in the middle which obviously can&#39;t offer the beautiful view that the window seats can. The teacher is going to make seat assignments and her decision is perfectly arbitrary. It is clear to everyone that, if you get the window seat you will get a magnificent view and if you get to sit in the middle row all you will see is the back of the seat before you.&lt;br /&gt;
&lt;br /&gt;
Being unconditionally proud of the country of your birth means getting the seat in the middle row and claiming that it has the most spectacular view that anyone in the entire plane has.&lt;br /&gt;
&lt;br /&gt;
Which country you are born in is as arbitrary as an unbiased teacher allocating seats on the plane. In that case, if you are born in a country that is not good at something, but you decide to stand up for it just because you were born there then you are fooling no one but yourself.&lt;br /&gt;
&lt;br /&gt;
One should glorify or villify one&#39;s country based upon the logical/ethical/moral reasoning and not because one was born or not born in that country.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
Here are some great quotes on the subject:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Patriotism is your conviction that this country is superior to all other countries because you were born in it&lt;/i&gt; -&amp;nbsp;&lt;b&gt;George Bernard Shaw&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-size: 15px; text-align: left;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-size: 15px; text-align: left;&quot;&gt;&lt;i&gt;A nation is a society united by a delusion about its ancestry and by common hatred of its neighbours&lt;/i&gt;&amp;nbsp;-&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white;&quot;&gt;William Ralph Inge&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: 15px; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;i&gt;It is not easy to see how the more extreme forms of nationalism can long survive when men have seen the Earth in its true perspective as a single small globe against the stars&lt;/i&gt; - &lt;b&gt;Arthur C Clarke&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: white; font-size: 15px; text-align: left;&quot;&gt;&lt;i&gt;Can anything be stupider than that a man has the right to kill me because he lives on the other side of a river and his ruler has a quarrel with mine, though I have not quarrelled with him?&lt;/i&gt; -&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;b style=&quot;background-color: white;&quot;&gt;Blaise Pascal&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://jyro.blogspot.com/2012/06/why-patriotism-doesnt-make-sense.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4255767042838417369</guid><pubDate>Mon, 11 Jun 2012 01:56:00 +0000</pubDate><atom:updated>2012-06-10T18:56:25.313-07:00</atom:updated><title>Prometheus</title><description>Prometheus in IMAX 3D was a great experience. Some of the scenes were mind blowing. Only regret is there weren&#39;t more of them.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The IMAX 3D experience is worth for some initial scenes - ones right after the opening titles - the sprawling and calm lake, roaring waterfalls of murky water. The most breath taking scene is watching the Prometheus ship hung in the middle of space and some time later watching it in the backdrop of the planet and its rings. I would like to watch it again and again. Too bad it only lasts 5-10 seconds in the movie. Also the scenes where the humans and human-made objects are shown besides the gigantic alien structures are also awe-inspiring.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
These things are worth a trip to the theatre. But besides that, the story is lame. Characters and actors are good, but their motives and actions could have used more thought. A work of fiction is more appealing if it can be easily extrapolated from the reality we know.&lt;/div&gt;</description><link>http://jyro.blogspot.com/2012/06/prometheus.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-3643934510282138404</guid><pubDate>Sun, 10 Jun 2012 04:14:00 +0000</pubDate><atom:updated>2012-06-09T21:14:11.134-07:00</atom:updated><title>Why sea steading is important to pursue?</title><description>&lt;br /&gt;
For decades now, people have feared that the explosion of global population is going to harm the planet because we won&#39;t have enough space for all of them to live and not enough food to feed them. The population of the planet is now about 7 billion (A number that some scifi authors foresaw to happen when we inhabited entire galaxy). Yet there is enough food and enough space for everyone to live - on land itself. The only problem is that, the food and space is not distributed evenly. The problem is not about producing enough food, but to empower all individuals of the planet to earn their fair share of it. The problem of growing population has less to do with technology, and more to do with social sciences.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;We do not need sea-steading because we are running out of space on land. We need sea-steading because there is no space left on land to do experiments that will build a better society.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In any scientific field, when we want to test our theories about new inventions, we do experiments. If you have an idea for a radical drug that will cure cancer then you won&#39;t be able to test it on real patients right away. Because there are laws that restrain you from doing tests of unproven drugs on humans. Instead, you first try it on rats and if things prove promising then after several years of research the refined drug is sanctioned for human testing. If you have an idea for self driving car, then you don&#39;t let your prototype loose on crowded streets. You take your prototypes in deserts for experiments. Only after years of testing in deserts, can someone drive a semi-autonomous Prius on streets of Mountain View under manual supervision. For testing radical world-changing ideas we need a test environment. This is as true for socio-economic experiments as it is for technological ones.&lt;br /&gt;
&lt;br /&gt;
For successfully tackling the exploding population of the world, we need to do radical social and economic experiments. At present we try to find the solutions only in the framework that is allowed by the laws of Governments. Governments are democratically elected entities. They enforce the policies that only masses can approve. Radical and world-changing ideas are by definition not agreeable by consensus. Therefore if you have some social policy - like free health care to everyone, social security based on carbon footprint, or a variant of capitalist economy that won&#39;t lead to Wall Street - you cannot try it.&lt;br /&gt;
&lt;br /&gt;
In 1947, India became an independent nation. At the time, it didn&#39;t have a clue what kind of economic policy it wanted to execute. The world had two strong economic philosophies - Socialism and Capitalism. Both of them were unproven at the time. India implemented a mixed policy - allowing private sector industries, but keeping the Government stake in major infrastructure projects. In 1980s, with the fall of Soviet Union, it became clear a Socialist economic policy with total Government control is doomed. Therefore in the 90s, India (among other countries) opened its policies gradually. Letting private sector and multinational investments in major infrastructure projects. Countries learn from each other for creating their social and economic policies. If one country can execute a social experiment and prove that it works, other Governments will be able to convince their population that it works and eventually adopt the policies themselves. &lt;b&gt;Better solutions can only be found if one can experiment.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now that populations are growing and are connecting more closely, they enforce the consensus more effectively. In many obvious cases of social welfare, it works greatly. But due to massive public opinion, even the greatest leaders in the Office think twice before implementing a radical change in nation&#39;s policies.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;If we want to develop better policies, we have to be able to start from scratch. We need petri dishes to test our experiments. There remains no land to create these petri dishes, so we need to go on water.&lt;/b&gt; We need to build cities and towns on water where we can implement new laws and rules. Not all of them will be successful, but they will give the terrestrial nations a data point to correct their policies.&lt;br /&gt;</description><link>http://jyro.blogspot.com/2012/06/why-sea-steading-is-important-to-pursue.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-6730454712710329106</guid><pubDate>Thu, 17 May 2012 07:49:00 +0000</pubDate><atom:updated>2012-05-17T00:49:04.332-07:00</atom:updated><title>Rolling back latest git commit</title><description>It&#39;s surprising how difficult it&#39;s to undo the latest commit you accidentally made in git repository. It&#39;s not difficult, but the commands are obscure.&lt;br /&gt;
&lt;br /&gt;
Depending upon the situation you can do one thing or the other.&lt;br /&gt;
&lt;br /&gt;
1. You have already pushed the commit to remote. Then only safe way I know is to do &quot;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git revert &lt;commit&gt;&lt;/commit&gt;&lt;/span&gt;&lt;commit&gt;&quot;. It will create a new commit that essentially negates the effect of the given commit. This will leave two self-cancelling commits in your git history, but it&#39;s a safe choice in case you are in doubt.&lt;/commit&gt;&lt;br /&gt;
&lt;br /&gt;
2. You haven&#39;t pushed the commit to remote and you only want to change the message of the last commit or only want to add some more files to the last commit. Then you can run &quot;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git commit --amend&lt;/span&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
3. You haven&#39;t pushed the commit to remote. You can still use &quot;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git revert &lt;commit&gt;&lt;/commit&gt;&lt;/span&gt;&quot;, but you have another option. You can run &quot;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;git reset --soft HEAD^&lt;/span&gt;&quot;. This will undo your last commit and leave the files from that commit in &quot;staged&quot; status. Now if you didn&#39;t want some of those files in that commit, you can unstage them.&lt;br /&gt;
&lt;br /&gt;
Before you use any of the above commands however, here&#39;s an advice. Git commands are abstruse and coding scenarios vary enormously. My situation may have been different when I used above commands from yours. Some git commands can cause loss of work if not performed correctly (git reset flavors especially). Here is the best way to go about.&lt;br /&gt;
&lt;br /&gt;
Create a temporary directory, do &quot;git init&quot;, create some mock files and mock commits. Then try the git commands you are doubtful about. Once assured about what they do is what you want, apply them to your working repository.</description><link>http://jyro.blogspot.com/2012/05/rolling-back-latest-git-commit.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-183199840040798208</guid><pubDate>Fri, 20 Apr 2012 11:07:00 +0000</pubDate><atom:updated>2012-04-20T04:07:55.835-07:00</atom:updated><title>Google Lunar X Prize</title><description>Came across this &lt;a href=&quot;http://www.xconomy.com/san-francisco/2012/04/18/in-googles-moon-race-teams-and-x-prize-foundation-face-a-reckoning/?single_page=true&quot;&gt;long article&lt;/a&gt; about how the teams in &lt;a href=&quot;http://www.googlelunarxprize.org/&quot;&gt;Google Lunar X Prize&lt;/a&gt; are faring so far. It looks like many teams are finding it hard to secure funding for the project and may not make it to the 2015 deadline. Many are dropping out.&lt;br /&gt;
&lt;br /&gt;
After I learnt about &lt;a href=&quot;http://www.googlelunarxprize.org/prize-details/rules-overview&quot;&gt;the things that these teams will have to achieve&lt;/a&gt; in order to claim the prize, I thought the whole thing was unnecessarily over-ambitious.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;The $30 million Google Lunar X PRIZE will be awarded to the first privately funded teams to build robots that successfully land on the lunar surface, explore the Moon by moving at least 500 meters (~1/3 of a mile), and return high definition video and imagery&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;
It means the team has to accomplish a number of difficult things like&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;launching successfully from earth&lt;/li&gt;
&lt;li&gt;landing safely on moon&amp;nbsp;&lt;/li&gt;
&lt;li&gt;building a rover that can at least move 1/2 km, autonomously or remotely&lt;/li&gt;
&lt;li&gt;communication system with robot for control and video transmission&amp;nbsp;&lt;/li&gt;
&lt;li&gt;robust packaging of the rover during the flight and landing&lt;/li&gt;
&lt;/ol&gt;
If the goal of the competition is to further the Space exploration technologies, the prize should have focused only on first two things - launch from earth and land safely on moon. There are other competitions to promote advancement in robotics. Why waste limited funding resources on technologies that are not directly related to Space. They should have limited the scope of the competition to launching a piece of rock from earth and safely landing it on moon. That still would have been a massive achievement in itself.&lt;br /&gt;
&lt;br /&gt;
If a team successfully puts a rover on Moon and fails to drive it, who cares? Driving a robot and recording a video is trivial, compared to landing on moon.&lt;br /&gt;
&lt;br /&gt;
The most important obstacle to space exploration is the exorbitant costs involved in just escaping the gravity well. We need to focus solely on that single portion of the problem first.</description><link>http://jyro.blogspot.com/2012/04/google-lunar-x-prize.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4869909364378557702</guid><pubDate>Sat, 31 Mar 2012 13:56:00 +0000</pubDate><atom:updated>2012-03-31T06:56:06.271-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">errors</category><category domain="http://www.blogger.com/atom/ns#">itunes</category><title>iTunes Download stopped (err =9006)</title><description>It&#39;s pretty frustrating to see this error in iTunes when you have spent a long time downloading some stuff over a slow network. You hit that re-download button, hoping that it will just immediately mark it alright after it has found the already downloaded content, but it starts the download all over again.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc8UhHTqqseC6iRJJR7g1FSR9yd-k_Ilvc-3Si5uFtx6FDAT9GmcBa8XKRtxIfnpQWIo52Np2r4yFUxJ1u9dgciiikT08IyoKKw-B7s_S5K3wZpdSR_33da4N5Bh3U4oK1EZoanA/s1600/Screen+shot+2012-03-31+at+7.15.09+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;74&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc8UhHTqqseC6iRJJR7g1FSR9yd-k_Ilvc-3Si5uFtx6FDAT9GmcBa8XKRtxIfnpQWIo52Np2r4yFUxJ1u9dgciiikT08IyoKKw-B7s_S5K3wZpdSR_33da4N5Bh3U4oK1EZoanA/s320/Screen+shot+2012-03-31+at+7.15.09+PM.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Don&#39;t click that re-download icon.&lt;br /&gt;
&lt;br /&gt;
In my case when I saw the above error after the download was complete, I found the files hidden in the iTunes folder. I could copy them elsewhere and open the content in VLC.&lt;br /&gt;
&lt;br /&gt;
The folder you will find it in is &lt;br /&gt;
&lt;pre&gt;$HOME/Music/iTunes/iTunes Media/*&lt;/pre&gt;</description><link>http://jyro.blogspot.com/2012/03/itunes-download-stopped-err-9006.html</link><author>noreply@blogger.com (Jayesh)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc8UhHTqqseC6iRJJR7g1FSR9yd-k_Ilvc-3Si5uFtx6FDAT9GmcBa8XKRtxIfnpQWIo52Np2r4yFUxJ1u9dgciiikT08IyoKKw-B7s_S5K3wZpdSR_33da4N5Bh3U4oK1EZoanA/s72-c/Screen+shot+2012-03-31+at+7.15.09+PM.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-3912550842055937978</guid><pubDate>Sun, 18 Mar 2012 15:09:00 +0000</pubDate><atom:updated>2012-03-18T08:09:30.226-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">design</category><category domain="http://www.blogger.com/atom/ns#">ux</category><title>Good essay on user centric software design</title><description>Came across this long post &quot;&lt;a href=&quot;http://www.scottberkun.com/essays/46-why-software-sucks/&quot;&gt;#46 – Why software sucks&lt;/a&gt;&quot; by &lt;a href=&quot;http://www.scottberkun.com/about/&quot;&gt;Scott Berkun&lt;/a&gt;&amp;nbsp;via Hacker news.&lt;br /&gt;
&lt;br /&gt;
It discusses how software developers don&#39;t think about software design from their users&#39; point of view and eventually create a product that sucks. There is nothing new in the writeup that I haven&#39;t read elsewhere before, but it&#39;s well written and it seems to explain the problem quite clearly. Here is a quote that I especially found appealing - it addresses the difference between good code and good product.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;One illustration of the philosophical differences between love of construction and love of good things is the belief that code should be beautiful. I’m a fan of beautiful things: the world can use more of them, including more lines of beautiful code. But the trap is that code is an artifact of constructing software. When code is well written (beautiful or homely), it compiles. And it’s the output of the compiler (or browser) that people see. It’s the complied code that changes the world. The beauty of the code is relevant only to people that look at code. &lt;b&gt;To worry about code aesthetics more than the aesthetics of the product itself is akin to a song writer worrying about the aesthetics of the sheet music instead of the quality of the sounds people hear when the band actually plays&lt;/b&gt;.&lt;/span&gt;&lt;/blockquote&gt;...&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Computer science is taught with a construction mentality. Even the theory and philosophy that are covered support construction, not higher level design, or how to make good software in the sense I’ve described. Aspects of design are covered, but at an internal level, the design of object models, data structures and networks, not at the level of what happens when the technology meets the world or the people in it&lt;/span&gt;&lt;/blockquote&gt;</description><link>http://jyro.blogspot.com/2012/03/good-essay-on-user-centric-software.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-5111114848213581693</guid><pubDate>Sun, 27 Nov 2011 18:53:00 +0000</pubDate><atom:updated>2011-11-27T10:54:24.811-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">art</category><category domain="http://www.blogger.com/atom/ns#">movie</category><category domain="http://www.blogger.com/atom/ns#">random</category><category domain="http://www.blogger.com/atom/ns#">show</category><category domain="http://www.blogger.com/atom/ns#">television</category><title>Master pieces from screen</title><description>A key characteristic of memorable movies/shows is they have a dense storyline.&lt;br /&gt;
&lt;br /&gt;
They tell a lot of things in very short span of time. When you recall individual parts of these stories, they seem a lot bigger by themselves. Over time different plots from the &amp;nbsp;movie bubble up in your memory and as you review them at your own pace you see the details and angles you missed before. The separate scenes appear much longer in your mind, when they actually take few minutes on screen. After years when you watch the movie again, you feel surprised that all those things happened in the span of mere couple of hours.&lt;br /&gt;
&lt;br /&gt;
A classic example is Godfather. Many times I find it hard to believe that Michael Corleone turns from a soldier to the head of mafia family only in Godfather-I. That scene when he protects his father in hospital, that scene when he fumbles for revolver in restaurant bathroom before making his first kill, his exile in Italy when he gets married first time and subsequently looses her, the scene when Vito Corleone dies while chasing his grandson, the scene when Michael makes an offer to Moe Greene and dominates Fredo, the scene of baptism ceremony with killings of his competitors interspersed. Each one of these scenes makes deep impression in our memories, but only take few minutes on screen.&lt;br /&gt;
&lt;br /&gt;
Recently I had the same experience when I watched first episode of Mad Men again. So many things happen in that first episode. It gives the first glimpse of every character&#39;s character. A dialog, a casual comment, a side glance or even a pause tells so much about the character. None of it is unintended. There is great meaning even in non-action, like when Don won&#39;t take Pete&#39;s extended hand calling him &quot;Buddy&quot;. Of course you don&#39;t get it the first time. But after you have watched the characters for four seasons and you have known their true natures, you really appreciate how their first appearance in that first episode was thoughtfully composed to give you hints of their attitudes and aptitudes. It must take a master mind to compose and direct such potent work.&lt;br /&gt;
&lt;br /&gt;
I plan to watch the first four seasons of Mad Men again, before the fifth one starts in March next year.</description><link>http://jyro.blogspot.com/2011/11/master-pieces-from-screen.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7937326.post-4680022496715159799</guid><pubDate>Fri, 23 Sep 2011 02:49:00 +0000</pubDate><atom:updated>2011-09-22T19:52:26.944-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cli</category><category domain="http://www.blogger.com/atom/ns#">command-line</category><category domain="http://www.blogger.com/atom/ns#">node.js</category><title>How to write interactive CLI utility in node.js</title><description>Node.js is mainly a server development framework - accepting requests and responding to them over network. But sometimes need arises to write a CLI utility using node.js. The asynchronous nature of node.js can make it difficult to write a simple CLI utility that will ask series of questions and accept answers from the user. Recently I ran into such situation, here is how I wrote one. (Learnt about the &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ask&lt;/span&gt; function from this &lt;a href=&quot;http://st-on-it.blogspot.com/2011/05/how-to-read-user-input-with-nodejs.html&quot;&gt;post&lt;/a&gt;)&lt;br /&gt;
&lt;a href=&quot;https://gist.github.com/1236634&quot;&gt;gist&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/1236634.js?file=node-cli.js&quot;&gt;
&lt;/script&gt;</description><link>http://jyro.blogspot.com/2011/09/how-to-write-interactive-cli-utility-in.html</link><author>noreply@blogger.com (Jayesh)</author><thr:total>0</thr:total></item></channel></rss>