<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" 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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2204864937328889266</atom:id><lastBuildDate>Sat, 18 May 2013 22:11:34 +0000</lastBuildDate><category>flash</category><category>suggestion</category><category>die</category><category>development</category><category>death</category><category>new</category><category>recognition</category><category>reply</category><category>regexp</category><category>api</category><category>phyisics</category><category>upgrade</category><category>horror</category><category>array</category><category>wunderlist</category><category>audio</category><category>rom</category><category>job</category><category>configuration</category><category>git</category><category>rss</category><category>apps</category><category>sparrow</category><category>oreilly</category><category>portal</category><category>video</category><category>virtual</category><category>email</category><category>ice cream sandwich</category><category>nosql</category><category>developer</category><category>macvim</category><category>evil</category><category>sort</category><category>facebook</category><category>sport</category><category>attack</category><category>changelog</category><category>type</category><category>java</category><category>talk</category><category>ics</category><category>nfc</category><category>holiday</category><category>dilbert</category><category>marsedit</category><category>prettify</category><category>philosophy</category><category>screen sharing</category><category>root</category><category>letter</category><category>patent</category><category>ingress</category><category>desktop</category><category>opinion</category><category>mac</category><category>server-side</category><category>darkness</category><category>mario</category><category>the speed of light</category><category>framework</category><category>siri</category><category>blogging</category><category>coffeescript</category><category>love</category><category>stupid</category><category>json</category><category>google</category><category>ruby</category><category>haml</category><category>f8</category><category>operator</category><category>0day</category><category>list</category><category>drive</category><category>divide by zero</category><category>lutebox</category><category>quote</category><category>glasses</category><category>benchmarks</category><category>military</category><category>tumblr</category><category>sgs</category><category>osx</category><category>workspace</category><category>adium</category><category>jekyll</category><category>ebook</category><category>new app</category><category>relativity</category><category>timecop</category><category>browserify</category><category>apocalypse</category><category>plugin</category><category>steve jobs</category><category>extends</category><category>notice</category><category>tweettv</category><category>nodejs</category><category>zen</category><category>irc</category><category>code</category><category>image</category><category>artificial intelligence</category><category>update</category><category>hardware</category><category>share</category><category>hack</category><category>speed</category><category>true</category><category>howto</category><category>fake array</category><category>startup</category><category>reederapp</category><category>music</category><category>lifehacker</category><category>dashboard</category><category>hackers</category><category>private</category><category>regex</category><category>hangout</category><category>client-side</category><category>deeyoon</category><category>sql</category><category>timetravel</category><category>unstable</category><category>slideshow</category><category>run</category><category>health</category><category>gmail</category><category>mobile</category><category>real world</category><category>the end of the world</category><category>galaxy</category><category>unmanned</category><category>nexus</category><category>allourpower</category><category>funny</category><category>relative</category><category>heimdall</category><category>geektool</category><category>gingerbread</category><category>light</category><category>sketchup</category><category>phone</category><category>google docs</category><category>test</category><category>stable</category><category>iphone</category><category>tls</category><category>css</category><category>legendary</category><category>society</category><category>programmers</category><category>sales</category><category>wallet</category><category>function</category><category>zombie</category><category>doodle</category><category>relaunch</category><category>app</category><category>vim</category><category>integer</category><category>backup</category><category>client library</category><category>big brother</category><category>future</category><category>serial</category><category>sensei</category><category>virtualbox</category><category>promote</category><category>rip</category><category>mysql</category><category>security</category><category>aircraft</category><category>linkinus</category><category>textmate</category><category>geek</category><category>game</category><category>redesign</category><category>sample</category><category>movie</category><category>editor</category><category>timezone</category><category>protected</category><category>android</category><category>photo</category><category>scss</category><category>octopress</category><category>software</category><category>html</category><category>stone</category><category>ssl</category><category>hard work</category><category>protolol</category><category>release</category><category>itunes</category><category>samsung galaxy s</category><category>iawriter</category><category>influence</category><category>media</category><category>public</category><category>javascript</category><category>timeline</category><category>courier</category><category>redis</category><category>box.net</category><category>apple</category><category>im</category><category>cern</category><category>skype</category><category>gtalk</category><category>social</category><category>information freedom</category><category>conference</category><category>help</category><category>wahooly</category><category>string</category><category>console</category><category>dart</category><category>picplz</category><category>spreadsheet</category><category>agile</category><category>browser</category><category>official</category><category>internet</category><category>script</category><category>chat</category><category>parallel</category><category>windows</category><category>oauth</category><category>failofculture</category><category>science</category><category>database</category><category>linux</category><category>overtime</category><category>children</category><category>platform</category><category>budget</category><category>sass</category><category>law</category><category>niantic project</category><category>php</category><category>programming</category><category>honey</category><category>valuvalu</category><category>book</category><category>mongodb</category><category>samsung</category><category>googleplus</category><category>learn</category><category>time</category><category>life</category><category>dead</category><category>arrayobject</category><category>running</category><category>wisdom</category><category>inject</category><category>upload</category><category>search</category><category>features</category><category>teach</category><category>bowtie</category><category>joke</category><category>splmaxheap</category><category>file sharing</category><category>fail</category><category>parser</category><category>pomodoro</category><category>fiction</category><category>profile</category><title>Code-Infection Blog</title><description /><link>http://blog.code-infection.com/</link><managingEditor>noreply@blogger.com (Balazs Nadasdi)</managingEditor><generator>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Code-infection" /><feedburner:info uri="code-infection" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-4344651173924348947</guid><pubDate>Thu, 18 Apr 2013 19:41:00 +0000</pubDate><atom:updated>2013-04-18T13:01:49.016-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">api</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">googleplus</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">0day</category><category domain="http://www.blogger.com/atom/ns#">hack</category><title>Google+ Comments on your non-blogger site</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-3yT9i_siBkE/UXBMLapsChI/AAAAAAAAVa8/uJNwLeyYeL4/s1600/gpluscomment.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://2.bp.blogspot.com/-3yT9i_siBkE/UXBMLapsChI/AAAAAAAAVa8/uJNwLeyYeL4/s640/gpluscomment.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Today &lt;a class="g-profile" href="http://plus.google.com/116899029375914044550" target="_blank"&gt;+Google&lt;/a&gt;&amp;nbsp;published a &lt;a class="g-profile" href="http://plus.google.com/101560853443212199687" target="_blank"&gt;+Google+&lt;/a&gt;&amp;nbsp;based commenting system on&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/110587955497525318489" target="_blank"&gt;+Blogger&lt;/a&gt;&amp;nbsp;. This is what I expected so long. I hate when I need to read minified JavaScript but now I could get more stamina to this "&lt;i&gt;awesome"&lt;/i&gt; digging. Finally I found the call with parameters :)&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Call&lt;/h4&gt;
&lt;pre class="prettyprint"&gt;gapi.comments.render(
  target_id:string,             // id of the container
  Options:object {
    href:string                 // url of the page
    view_type:string            // moderated?
    first_party_property:string // BLOGGER
    width:integer               // wothout units (like px)
  }
);&lt;/pre&gt;
&lt;br /&gt;
The &lt;i&gt;&lt;b&gt;first_party_property&lt;/b&gt;&lt;/i&gt; property needs to be &lt;b&gt;BLOGGER&lt;/b&gt; because when I changed that I got a cool &lt;i&gt;400 Bad Request&lt;/i&gt; error from Google. I don't know if there are any other options but the only one options for &lt;b&gt;view_type&lt;/b&gt; that I know is&amp;nbsp;&lt;b&gt;FILTERED_POSTMOD&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Simple way&lt;/h4&gt;
Of course you use &lt;i&gt;&lt;b&gt;plusone.js&lt;/b&gt;&lt;/i&gt; in async method. Just patch your script like this:&lt;br /&gt;
&lt;pre class="prettyprint lang-html"&gt;&amp;lt;script type="text/javascript"&amp;gt;
    window.___gcfg = {lang: '{{ site.lang }}'};

    (function() {
      function _getComputedStyle(el, cssprop){
       if (el.currentStyle) {
        // for IE
        return el.currentStyle[cssprop]
       } else if (document.defaultView &amp;amp;&amp;amp; document.defaultView.getComputedStyle) {
        // Any other normal brwoser (like Chrome, Firefox)
        return document.defaultView.getComputedStyle(el, "")[cssprop]
       } else {
        // Try get inline style
        return el.style[cssprop]
        }
      }


      var script = document.createElement('script');
      script.type = 'text/javascript';
      script.async = true;
      script.onload = function() {
        if (gapi &amp;amp;&amp;amp; gapi['comments'] &amp;amp;&amp;amp; gapi.comments['render']) {
          var gPlusComments = document.getElementById('gpluscomments');
          gapi.comments.render(
            'gpluscomments',
            {
              href: gPlusComments.getAttribute('data-href'),
              view_type: gPlusComments.getAttribute('data-viewtype'),
              first_party_property: "BLOGGER",
              width: parseInt(_getComputedStyle(gPlusComments, "width"), 10)
            }
          );
        }
      };
      script.src = 'https://apis.google.com/js/plusone.js';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(script, s);
    })();
  &amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
After that you can create a simple div with &lt;b&gt;&lt;i&gt;data-&lt;/i&gt;&lt;/b&gt; properties like this &lt;i&gt;(for Octopress)&lt;/i&gt;:&lt;br /&gt;
&lt;pre class="prettyprint lang-html"&gt;&amp;lt;div id="gpluscomments"
     data-href='{{ site.url }}{{ page.url }}'
     data-viewtype='FILTERED_POSTMOD'&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
So, we need to add a &lt;b&gt;href&lt;/b&gt;, &lt;b&gt;view_type&lt;/b&gt;, &lt;b&gt;first_party_property&lt;/b&gt; and &lt;b&gt;width&lt;/b&gt;. First and second come from the div, third is fix &lt;i&gt;(BLOGGER and later site specific string like Google API Client ID)&lt;/i&gt; and we can calculate the fourth parameter.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;Example &lt;/b&gt;&lt;i style="font-weight: bold;"&gt;(my hungarian blog)&lt;/i&gt;&lt;b&gt;: &lt;/b&gt;&lt;a href="http://dev.folyam.info/blog/2013/03/01/csapatmunka-github-segitsegevel/" style="font-weight: bold;" target="_blank"&gt;[Dev] Folyam.info&lt;/a&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;i&gt;(with Octopress)&lt;/i&gt;&lt;/h3&gt;
&lt;br /&gt;
I hope I could help you. Have you got any other solution? Please, share with me.&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/veIXwVVF470" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/veIXwVVF470/google-comments-on-your-none-blogger.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-3yT9i_siBkE/UXBMLapsChI/AAAAAAAAVa8/uJNwLeyYeL4/s72-c/gpluscomment.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/04/google-comments-on-your-none-blogger.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-3823547486277109101</guid><pubDate>Wed, 20 Mar 2013 11:06:00 +0000</pubDate><atom:updated>2013-03-20T04:06:07.062-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ingress</category><title>Ingress unpack v1.21.3 aka. Shields?</title><description>I'm a little bit curious. So today I planned to dig inside Ingress 1.21.3 apk. First of all I unpacked with a simple method: change extension from .apk to .zip and then unzip.&lt;br /&gt;
&lt;br /&gt;
What I found?&lt;br /&gt;
&lt;br /&gt;
The first&amp;nbsp;which came towards me: Shields (mods)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Nj7x5PBoHYI/UUmPvzGPXYI/AAAAAAAAUJU/MLsOd2pCbiQ/s1600/upgrade.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Nj7x5PBoHYI/UUmPvzGPXYI/AAAAAAAAUJU/MLsOd2pCbiQ/s1600/upgrade.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Now we know 3 types of mods. All of them: Shild&lt;br /&gt;
As we can see this image: there are 6 shields&amp;nbsp;+ 1 empty (no-shield).&amp;nbsp;upgrade.atlas file tells me:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;empty: no shield&lt;/li&gt;
&lt;li&gt;RES_SHIELD_EXTRARE: red&lt;/li&gt;
&lt;li&gt;RES_SHIELD_COMMON: green&lt;/li&gt;
&lt;li&gt;RES_SHIELD_RARE: purple&lt;/li&gt;
&lt;li&gt;RES_SHIELD_LESSCOMMON: blue&lt;/li&gt;
&lt;li&gt;RES_SHIELD_VERYCOMMON: white&lt;/li&gt;
&lt;li&gt;RES_SHIELD_VERYRARE: magenta&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
What do you think?&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/an3kAMx9f2w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/an3kAMx9f2w/ingress-unpack-v1213-aka-shields.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Nj7x5PBoHYI/UUmPvzGPXYI/AAAAAAAAUJU/MLsOd2pCbiQ/s72-c/upgrade.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/03/ingress-unpack-v1213-aka-shields.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-5507379189384853904</guid><pubDate>Wed, 20 Feb 2013 15:49:00 +0000</pubDate><atom:updated>2013-02-20T07:49:57.803-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">jekyll</category><category domain="http://www.blogger.com/atom/ns#">oreilly</category><category domain="http://www.blogger.com/atom/ns#">regexp</category><category domain="http://www.blogger.com/atom/ns#">dart</category><category domain="http://www.blogger.com/atom/ns#">plugin</category><category domain="http://www.blogger.com/atom/ns#">octopress</category><category domain="http://www.blogger.com/atom/ns#">regex</category><category domain="http://www.blogger.com/atom/ns#">ebook</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">book</category><title>Promoted Product Box with Octopress</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-4iZrYNbeXyU/USTvyowod9I/AAAAAAAASys/tQvleJ2-N2I/s1600/Screen+Shot+2013-02-20+at+4.45.09+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" src="http://2.bp.blogspot.com/-4iZrYNbeXyU/USTvyowod9I/AAAAAAAASys/tQvleJ2-N2I/s640/Screen+Shot+2013-02-20+at+4.45.09+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Sometimes I try to share a book, a&amp;nbsp;bicycle or mobile app. I tired to write the code for that. I use &lt;a href="http://octopress.org/" target="_blank"&gt;Octopress&lt;/a&gt; and I love it. Octopress built over&amp;nbsp;&lt;a href="http://jekyllrb.com/" target="_blank"&gt;Jekyll&lt;/a&gt;&amp;nbsp;(what I used before) with Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-ruby"&gt;#
# Author: Balazs Nadasdi &amp;lt;yitsushi@gmail.com&amp;gt; (http://blog.code-infection.com/)
#
# Outputs a string with a given attribution as a block about a Product Promotion
#
#  {% product_promo_box %}
#   Title: Name of the product
#   Author: Author (books), Manufacturer, etc
#   Image: Image URL about the product
#   Price: Price of the product
#   PromoPrice: Promotion Price
#   PromoCode: Promotion code
#   Source: Publisher/Seller/Site
#   Url: URL to the product
#   Description: Description of the product (short)
#  {% endproduct_promo_box %}
#  ...
#  &amp;lt;div class="product-box"&amp;gt;
#   &amp;lt;a href="URL to the product"
#    title="Name of the product"&amp;gt;
#    &amp;lt;img class="product-image"
#      src="Image URL about the product"
#      alt="Name of the product"
#      title="Name of the product"&amp;gt;
#   &amp;lt;/a&amp;gt;
#   &amp;lt;div class="product-info"&amp;gt;
#    &amp;lt;div class="product-title"&amp;gt;
#     &amp;lt;a href="URL to the product"
#      title="Name of the product"&amp;gt;
#      Name of the product
#     &amp;lt;/a&amp;gt;
#    &amp;lt;/div&amp;gt;
#    &amp;lt;div class="product-source"&amp;gt;
#     &amp;lt;a href="URL to the product"
#      title="Publisher/Seller/Site"&amp;gt;
#      Publisher/Seller/Site
#     &amp;lt;/a&amp;gt;
#    &amp;lt;/div&amp;gt;
#    &amp;lt;div class="product-author"&amp;gt;
#     by &amp;lt;span&amp;gt;Author (books), Manufacturer, etc&amp;lt;/span&amp;gt;
#    &amp;lt;/div&amp;gt;
#    &amp;lt;div class="product-price"&amp;gt;
#     Old price: &amp;lt;span class="old"&amp;gt;Price of the product&amp;lt;/span&amp;gt;;
#     now: &amp;lt;span class="now"&amp;gt;Promotion Price&amp;lt;/span&amp;gt;
#    &amp;lt;/div&amp;gt;
#    &amp;lt;div class="product-promo-code"&amp;gt;
#     Promotion code: &amp;lt;span&amp;gt;DEAL&amp;lt;/span&amp;gt;
#    &amp;lt;/div&amp;gt;
#    &amp;lt;div class="product-description"&amp;gt;
#     Description of the product (short)
#    &amp;lt;/div&amp;gt;
#   &amp;lt;/div&amp;gt;
#  &amp;lt;/div&amp;gt;
#
# Example CSS:
#  .product-box {
#   overflow: hidden;
#   padding-bottom: 1.5em;
#   padding-top: 1.5em;
#  }
#  .product-box img {
#   float: left;
#   max-width: 25%;
#  }
#  .product-box .product-info {
#   margin-left: 28%;
#  }
#  .product-box .product-info .product-title {
#   padding-top: 10px;
#   padding-bottom: 5px;
#   font-size: 1.6em;
#   font-weight: bold;
#  }
#  .product-box .product-info .product-title a {
#   color: hsl(0, 0%, 30%);
#   text-decoration: none;
#  }
#  .product-box .product-info .product-author {
#   font-style: italic;
#  }
#  .product-box .product-info .product-price {
#   padding: 8px 0;
#  }
#  .product-box .product-info .product-price span {
#   padding: 0 5px;
#  }
#  .product-box .product-info .product-price .now {
#   color: hsl(120, 50%, 40%);
#   font-weight: bold;
#   font-size: 1.3em;
#  }
#  .product-box .product-info .product-price .old {
#   font-weight: bold;
#   font-size: 1.em;
#   text-decoration: line-through;
#  }
#  .product-box .product-info .product-promo-code {
#   font-size: 0.8em;
#  }
#  .product-box .product-info .product-promo-code span {
#   color: hsl(230, 50%, 40%);
#   font-weight: bold;
#   font-size: 1.3em;
#  }
#  .product-box .product-info .product-source {
#   font-size: 0.9em;
#   float: right;
#  }
#  .product-box .product-info .product-description {
#   padding-top: 6px;
#   font-size: 0.8em;
#   font-style: italic;
#  }

module Jekyll

 class ProductPromoBox &amp;lt; Liquid::Block
  Title = /^Title: (.*)$/
  Author = /^Author: (.*)$/
  Source = /^Source: (.*)$/
  Url = /^Url: (.*)$/
  Price = /^Price: (.*)$/
  PromoPrice = /^PromoPrice: (.*)$/
  Image = /^Image: (.*)$/
  PromoCode = /^PromoCode: (.*)$/
  Description = /^Description: (.*)$/

  def initialize(tag_name, markup, tokens)
   @by = nil
   @title = nil
   @source = nil
   @url = nil
   @price = nil
   @promoPrice = nil
   @image = nil
   @promoCode = nil
   @description = nil

   tokens[0].split(/\n/).each do |line|
    line = line.strip
    next if (line.length &amp;lt; 1)

    if line =~ Title
     @title = $1
    elsif line =~ Author
     @by = $1
    elsif line =~ Source
     @source = $1
    elsif line =~ Url
     @url = $1
    elsif line =~ Price
     @price = $1
    elsif line =~ PromoPrice
     @promoPrice = $1
    elsif line =~ Image
     @image = $1
    elsif line =~ PromoCode
     @promoCode = $1
    elsif line =~ Description
     @description = $1
    end
   end

   super
  end

  def render(context)
   promo = "";
   promo += "&amp;lt;div class='product-title'&amp;gt;#{with_link(@title, @url)}&amp;lt;/div&amp;gt;" unless @title.nil?
   promo += "&amp;lt;div class='product-source'&amp;gt;#{with_link(@source, @url)}&amp;lt;/div&amp;gt;" unless @source.nil?
   promo += "&amp;lt;div class='product-author'&amp;gt;by &amp;lt;span&amp;gt;#{@by}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;" unless @by.nil?
   if @promoPrice.nil?
    promo += "&amp;lt;div class='product-price'&amp;gt;&amp;lt;span class='now'&amp;gt;#{@price}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;" unless @price.nil?
   else
    promo += "&amp;lt;div class='product-price'&amp;gt;Old price: &amp;lt;span class='old'&amp;gt;#{@price}&amp;lt;/span&amp;gt;; now: &amp;lt;span class='now'&amp;gt;#{@promoPrice}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;" unless @price.nil?
   end
   promo += "&amp;lt;div class='product-promo-code'&amp;gt;Promotion code: &amp;lt;span&amp;gt;#{@promoCode}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;" unless @promoCode.nil?
   promo += "&amp;lt;div class='product-description'&amp;gt;#{@description}&amp;lt;/div&amp;gt;" unless @description.nil?

   promo = "&amp;lt;div class='product-info'&amp;gt;#{promo}&amp;lt;/div&amp;gt;";

   promo = with_link("&amp;lt;img class='product-image' src='#{@image}' alt='#{@title}' title='#{@title}'&amp;gt;", @url, @title) + "#{promo}" unless @image.nil?

   return "&amp;lt;div class='product-box'&amp;gt;#{promo}&amp;lt;/div&amp;gt;"
  end

  def with_link(content, url, title = nil)
   return content if url.nil?

   title = content if title.nil?

   title.gsub!(/'/, "&amp;amp;#39;")

   return "&amp;lt;a href='#{url}' title='#{title}'&amp;gt;#{content}&amp;lt;/a&amp;gt;"
  end
 end
end

Liquid::Template.register_tag('product_promo_box', Jekyll::ProductPromoBox)
&lt;/pre&gt;
&lt;a href="https://gist.github.com/Yitsushi/4996343.js" target="_blank"&gt;Gist url&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Just put this file into your &lt;code&gt;plugins&lt;/code&gt; directory. So when you write a new article about recommended books for instance I put this into the post:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-markdown"&gt;{% product_promo_box %}
  Title: Regular Expressions Cookbook, 2nd Edition
  Author: Jan Goyvaerts, Steven Levithan
  Image: http://akamaicovers.oreilly.com/images/0636920023630/lrg.jpg
  Price: $39.99
  PromoPrice: $19.99
  PromoCode: DEAL
  Source: O'Reilly Media
  Url: http://shop.oreilly.com/product/0636920023630.do
  Description: Detailed Solutions in Eight Programming Languages
{% endproduct_promo_box %}

some text

{% product_promo_box %}
  Title: Dart: Up and Running
  Author: Kathy Walrath, Seth Ladd
  Image: http://akamaicovers.oreilly.com/images/0636920025719/lrg.jpg
  Price: $14.99
  Source: O'Reilly Media
  Url: http://shop.oreilly.com/product/0636920025719.do
  Description: A New, Tool-Friendly Language for Structured Web Apps
{% endproduct_promo_box %}
&lt;/pre&gt;
&lt;br /&gt;
&lt;a href="http://dev.folyam.info/blog/2013/02/18/par-hasznos-konyv-node-dot-js/" target="_blank"&gt;Example&lt;/a&gt; &lt;i&gt;&lt;span style="font-size: x-small;"&gt;(Hungarian language about english books)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-nHGS_6aJy9g/USTwDaqpZeI/AAAAAAAASy0/q62yPEfpSb0/s1600/Screen+Shot+2013-02-20+at+4.46.29+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/-nHGS_6aJy9g/USTwDaqpZeI/AAAAAAAASy0/q62yPEfpSb0/s640/Screen+Shot+2013-02-20+at+4.46.29+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Feel free to use or modify :) If you got some nice idea for that please share with us.&lt;/div&gt;
&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/2p2iSFncvvs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/2p2iSFncvvs/promoted-product-box-with-octopress.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-4iZrYNbeXyU/USTvyowod9I/AAAAAAAASys/tQvleJ2-N2I/s72-c/Screen+Shot+2013-02-20+at+4.45.09+PM.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/02/promoted-product-box-with-octopress.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-6663937659360111075</guid><pubDate>Tue, 15 Jan 2013 12:50:00 +0000</pubDate><atom:updated>2013-01-15T04:50:58.322-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mysql</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><category domain="http://www.blogger.com/atom/ns#">database</category><title>Node.js - Database connection depends on environments</title><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UngOjjdXPgs/UPVOOHOjB2I/AAAAAAAARoE/yyK9T92hTmM/s1600/node_js.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="172" src="http://3.bp.blogspot.com/-UngOjjdXPgs/UPVOOHOjB2I/AAAAAAAARoE/yyK9T92hTmM/s640/node_js.jpeg" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Image from &lt;a href="http://mikevalstar.com/Blog/106/Coding_with_Nodejs_Part_3_Admin_login_with_Mongo_&amp;amp;_Mongoose" target="_blank"&gt;mikevalstar.com&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
I hate when I need to use the same password on all of my computers only because I develop on multiple machines. For instance, I want to connect to the &lt;a class="g-profile" href="http://plus.google.com/113119480028546789782" target="_blank"&gt;+MySQL&lt;/a&gt;&amp;nbsp;database from my&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/100598160817214911030" target="_blank"&gt;+node.js&lt;/a&gt;&amp;nbsp;application , but my local configuration differs from the production environment &lt;i&gt;(surprising thing is not it?)&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-js"&gt;// If DB env does not exists we need to declare
if (typeof process.env.DB == "undefined" || !process.env.DB ) {
  // Clockwork is my personal computer where I code primarily
  process.env.DB = "clockwork";
}

// If DB env has an unknown value
// override it
if (process.env.DB !== "clockwork" &amp;amp;&amp;amp;
    process.env.DB !== "yitsushisa" &amp;amp;&amp;amp;
    process.env.DB !== "production") {
 process.env.DB = "clockwork";
}

// configurations
var connections = {
  clockwork: {
    host: "localhost",
    name: "xxxxxx",
    password: "xxxxxxx",
    username: "xxxxxxx"
  },
  yitsushisa: {
    host: "localhost",
    name: "xxxxxxyy",
    password: "xxxxxxx",
    username: "yyyyyyy"
  },
  production: {
    host: "master.db.host",
    name: "zzzzzzzz",
    password: "xzzzxzxxxz",
    username: "zzxyxxzxyz"
  }
};

module.exports = (function() {
  return {
    wsdl: {
      priceList: "https://xxxx:xxxx@xxxxxx/ws/pricelist.asmx?WSDL"
    },
    xhr: {
      priceList: "https://xxxxxx:443/ws/pricelist.asmx",
      resources: "https://xxxxxx:443/ws/resources.asmx",
      order:     "https://xxxxxx:443/ws/Order.asmx"
    },
    auth: {
      username: "xxxxxx",
      password: "xxxxxx"
    },
    sql: {
      prefix: "abhu-",
      database: connections[process.env.DB],
      margin: 1.06
    }
  };
})();
// EOF
&lt;/pre&gt;
So I created a simple method to solve it. Now when I call this configuration file then I can point to properties directly.

&lt;br /&gt;
&lt;pre class="prettyprint lang-js"&gt;var configuration = require('../etc/mymodule.js');
console.log(configuration.sql.database.username);
&lt;/pre&gt;
The only thing I need to call the main application like this:
&lt;br /&gt;
&lt;pre class="prettyprint"&gt;DB="production" node app.js parameters
&lt;/pre&gt;
If you have got a better but simple solution, please tell it :)&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/SLEbsxQdobQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/SLEbsxQdobQ/nodejs-database-connection-depends-on.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-UngOjjdXPgs/UPVOOHOjB2I/AAAAAAAARoE/yyK9T92hTmM/s72-c/node_js.jpeg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/01/nodejs-database-connection-depends-on.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-5478196971291253763</guid><pubDate>Sun, 13 Jan 2013 22:15:00 +0000</pubDate><atom:updated>2013-01-13T14:28:22.751-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">niantic project</category><category domain="http://www.blogger.com/atom/ns#">suggestion</category><category domain="http://www.blogger.com/atom/ns#">ingress</category><category domain="http://www.blogger.com/atom/ns#">game</category><title>Ingress Problem</title><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-n3uwS5cVtyY/UPMxeHFqi4I/AAAAAAAARlE/tykmH-A-2Gw/s1600/First-L8-Portal-Ingress.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="207" src="http://1.bp.blogspot.com/-n3uwS5cVtyY/UPMxeHFqi4I/AAAAAAAARlE/tykmH-A-2Gw/s400/First-L8-Portal-Ingress.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Image from &lt;a href="http://decodeingress.me/2013/01/11/ingress-three-l8-portals-in-sf/" target="_blank"&gt;decodeingress.me&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;(&lt;a class="g-profile" href="http://plus.google.com/111701852247617430859" target="_blank"&gt;+DeCode Ingress&lt;/a&gt;)&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Dear&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/103320655754019011706" target="_blank"&gt;+Ingress&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a class="g-profile" href="http://plus.google.com/105211554081025512763" target="_blank"&gt;+Niantic Project&lt;/a&gt;,&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I am an agent. I like this game and try to figure out how can this game more fun. My (and a lot of agents too) problem is the resonator strength.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If we unite and build a portal 2 agent and me and our portal will be L4 then a L1 agent can destroy it in a minute. When I got the mail about the attack, our portal is destroyed. L4 vs L1 is not problem, but the 3 vs 1 is a problem. Please upgrade your equations with this factor.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For instance, each resonator in a portal would get an extra multiplier about the agents number. If a portal has 8 resonators with 3 agents then each resonator get a 1.3 multiplier to their health. This would enhance the teamwork. Teamwork is the most epic line in the game but now teamwork is needed only for capturing. If 10 agents build a lot of portals then 1 agent can destroy all of them. I know you need to calculate about new agents but it is not fair.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;P.level() = Level of Portal &lt;i&gt;(P.level():3&amp;nbsp;= Portal L3)&lt;/i&gt;
P.agents() = Agents on the portal &lt;i&gt;(P.agents():3 =&amp;nbsp;3 agents work on this portal)&lt;/i&gt;
Rx.level() = Level of Resonator #x &lt;i&gt;(R1.level():6 = Resonator #1 L6)&lt;/i&gt;
Rx.portal() = Portal of the Resonator #x
Rx.damage(distance, xmp) = Damage on Resonator #x with an XMP &lt;i&gt;(R1.damage(20, 1):230 = Resonator #1 got 230 unit as damage from 20 meters with a L2 XMP)&lt;/i&gt;


Rx.damage(distance, xmp):
  return super.damage(distance, xmp) / (1 + (self.portal().agents()/10))

&lt;/pre&gt;
&lt;div&gt;
Or something else. But please give us some respect if we unite. Please make a difference between 1x8xL1 and 2x4xL1 resonators.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/4IbmUaDRn-I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/4IbmUaDRn-I/ingress-problem.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-n3uwS5cVtyY/UPMxeHFqi4I/AAAAAAAARlE/tykmH-A-2Gw/s72-c/First-L8-Portal-Ingress.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/01/ingress-problem.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-1334066283045857909</guid><pubDate>Sat, 12 Jan 2013 19:18:00 +0000</pubDate><atom:updated>2013-01-12T12:13:37.619-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">run</category><category domain="http://www.blogger.com/atom/ns#">pomodoro</category><category domain="http://www.blogger.com/atom/ns#">time</category><category domain="http://www.blogger.com/atom/ns#">programmers</category><category domain="http://www.blogger.com/atom/ns#">health</category><category domain="http://www.blogger.com/atom/ns#">workspace</category><category domain="http://www.blogger.com/atom/ns#">book</category><title>3 ways to be a Healthy Programmer</title><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-f6YdmHuSjlE/UPHDiv1E9rI/AAAAAAAARho/g-0obW3ny00/s1600/learning-programming-top.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="156" src="http://2.bp.blogspot.com/-f6YdmHuSjlE/UPHDiv1E9rI/AAAAAAAARho/g-0obW3ny00/s400/learning-programming-top.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Image from&amp;nbsp;&lt;a href="http://devbootcamp.com/learning%20programming/2012/12/04/learning-programming-interview-with-zack-shapiro/" target="_blank"&gt;Dev Bootcamp&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Are you healthy? Stand up! Leave your keyboard for a moment!&lt;br /&gt;
Few days ago I started to &lt;a href="http://pragprog.com/book/jkthp/the-healthy-programmer" target="_blank"&gt;read a book&lt;/a&gt;. My best quote from this book was a short but really intense sentence and I started to think again. Think about my past and my current life.&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
We aren’t born unhealthy — we become unhealthy through a combination of bad habits and environmental pressures
&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: right;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="http://pragprog.com/book/jkthp/the-healthy-programmer" target="_blank"&gt;&lt;b&gt;The Healthy Programmer: Get Fit, Feel Better, and Keep Coding&lt;/b&gt;&lt;/a&gt;&amp;nbsp;by &lt;a href="https://twitter.com/codefinger" target="_blank"&gt;&lt;b&gt;Joe Kutner&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-size: x-small;"&gt;
&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
It's true. When I was young,&amp;nbsp;innocent boy, then I tried to do something new, something interesting. I sat at my Commodore C64 and read books about programming. I loved that, but sometimes I left this desk and I went out to the garden and the park.&lt;br /&gt;
&lt;br /&gt;
Now I grew up &lt;i&gt;(a little bit)&lt;/i&gt; and I have not&amp;nbsp;forgotten&amp;nbsp;this. Sometimes I stand up and go to the nearest park, walk up and down, sit on a bench and sometimes I run just for fun. It's ok. I love that way but how?&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Time To Rest &lt;i&gt;- Pomodoro&lt;/i&gt;&lt;/h3&gt;
If you can't leave your desk&amp;nbsp;because&amp;nbsp;you dug too deep in your code then use tools to manage your time. I tried a lot of methods but the first one that really works for me is&amp;nbsp;&lt;a href="http://www.pomodorotechnique.com/" target="_blank"&gt;The Pomodoro Technique®&lt;/a&gt;. Pomodoro users use this&amp;nbsp;technique&amp;nbsp;to manage their working time. I use this to manage my free time. It's cool to manage my work but I don't have problem with my focusing, but I can't leave my desk if I'm working. I set up 25 minutes to work and 5 minutes to pause and after 4 period I got extra 10 minutes. No it's not for me. I tried again with larger numbers. Oh yeah :) This is my&amp;nbsp;recipe.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;1 hour work&lt;/li&gt;
&lt;li&gt;10 minutes pause&lt;/li&gt;
&lt;li&gt;1 hour work&lt;/li&gt;
&lt;li&gt;10 minutes pause&lt;/li&gt;
&lt;li&gt;1 hour work&lt;/li&gt;
&lt;li&gt;10 minutes pause&lt;/li&gt;
&lt;li&gt;1 hour work&lt;/li&gt;
&lt;li&gt;30 minutes pause&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
And so on. I do it twice a day. This is 8 hours&amp;nbsp;work-time&amp;nbsp;with 2 hours pause. So this is 10 hours. Why is this cool? Because my eyes are not numb and after my rest time I can focus to my work again&amp;nbsp;with clean brain.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Workspace Upgrade&lt;/h3&gt;
My first and best choice was a ball. A Fit-Ball. I love that awesome&amp;nbsp;chair replacement. I sit on a big, really big ball: 75cm &lt;i&gt;(~29.53 inches)&lt;/i&gt;. It's bigger than I need to sit but I don't want to sit always. So now I can sit on the top of the ball and my legs can't reach the floor. Or I can semi-stand at my desk. In the first few days it was&amp;nbsp;uncomfortable, but after it was hard to sit in one place for a long time for me.&lt;br /&gt;
&lt;br /&gt;
Why is this cool? Because my back doesn't ache and my legs and my back are working all the times but lower intensity.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Don't be shy, just run&lt;/h3&gt;
I use a simple method to run. Running is sucks, but what if you need to run away from Zombies? This is the point. I use &lt;a href="https://www.zombiesrungame.com/" target="_blank"&gt;Zombies, Run!&lt;/a&gt; and this awesome app is available on &lt;a href="https://play.google.com/store/apps/details?id=com.sixtostart.zombiesrun" target="_blank"&gt;Google Play&lt;/a&gt;, the &lt;a href="http://itunes.apple.com/us/app/zombies-run!/id503519713?mt=8" target="_blank"&gt;App Store&lt;/a&gt; and &lt;a href="http://www.windowsphone.com/en-us/store/app/zombies-run/f772fc86-96dc-4093-b944-dde8fcd4e8f0" target="_blank"&gt;Windows Phone&lt;/a&gt;. What is it? It's a simple running application. You are the Runner 5 and you have a lot of missions. For instance, you need to run to save a lost child. Or need to run to warn the nearest city about an expected&amp;nbsp;zombie attack. You can see how simple. But it's a good game for your health.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
Sometimes need a rest, sometimes need to rethink our workspace and upgrade to be the most comfortable. Oh and don't forget to move, move your body. Run, walk, climb, cycle, dance etc.&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/ULSPMINA9X0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/ULSPMINA9X0/3-ways-to-be-healthy-programmer.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-f6YdmHuSjlE/UPHDiv1E9rI/AAAAAAAARho/g-0obW3ny00/s72-c/learning-programming-top.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2013/01/3-ways-to-be-healthy-programmer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-6836675990360948410</guid><pubDate>Thu, 20 Dec 2012 15:41:00 +0000</pubDate><atom:updated>2012-12-20T07:41:12.405-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">the end of the world</category><category domain="http://www.blogger.com/atom/ns#">divide by zero</category><title>One thing you need to do before...</title><description>... the end of the world.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
There is one thing that you never dared to try. Oh yeah. Someone who does not think about it, never&amp;nbsp;philosophised or just for a brief moment it does not fumble in their mind... they have never been lived really.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Just pick up a pencil, a big while paper and take a deep breath. Now...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style="text-align: center;"&gt;
&lt;span style="font-size: x-large;"&gt;Try to divide an integer by Zero!&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-53TCbDxIWSM/UNMs2sH7wSI/AAAAAAAAQaw/Po29TiD1mZk/s1600/theendoftheworld_crop.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="135" src="http://4.bp.blogspot.com/-53TCbDxIWSM/UNMs2sH7wSI/AAAAAAAAQaw/Po29TiD1mZk/s640/theendoftheworld_crop.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Cropped from&amp;nbsp;&lt;a href="http://abstrusegoose.com/440" rel="nofollow" target="_blank"&gt;Abstruse Goose's No.440&lt;/a&gt; stip&lt;br /&gt;&lt;i&gt;(currently unavailable)&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/wTRjVFvMxm0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/wTRjVFvMxm0/one-thing-you-need-to-do-before.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-53TCbDxIWSM/UNMs2sH7wSI/AAAAAAAAQaw/Po29TiD1mZk/s72-c/theendoftheworld_crop.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/12/one-thing-you-need-to-do-before.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-2371983874129123551</guid><pubDate>Fri, 09 Nov 2012 19:41:00 +0000</pubDate><atom:updated>2012-11-09T11:41:13.603-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">overtime</category><category domain="http://www.blogger.com/atom/ns#">spreadsheet</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">apps</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">drive</category><category domain="http://www.blogger.com/atom/ns#">script</category><title>Google Calendar and Google Apps Script</title><description>&lt;h2&gt;
Manage Overtime With Google Calendar and Drive with Google Apps Script&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-z79EJ9BOnjA/UJ1bi6QUsSI/AAAAAAAAPMs/Ofu7bFN1ELU/s1600/Screen+Shot+2012-11-09+at+8.37.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-z79EJ9BOnjA/UJ1bi6QUsSI/AAAAAAAAPMs/Ofu7bFN1ELU/s1600/Screen+Shot+2012-11-09+at+8.37.00+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
&lt;b&gt;First of all you need to know:&lt;/b&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;You can create events in Google Calendar&lt;/li&gt;
&lt;li&gt;You can create recurring events in Google Calendar&lt;/li&gt;
&lt;li&gt;You can create Spreadsheets in Google Drive&lt;/li&gt;
&lt;li&gt;You can write scripts for you Spreadsheets in Google Drive&lt;/li&gt;
&lt;li&gt;Your Google Apps Scripts can reach all of you data in other Google Documents&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/h4&gt;
&lt;h3&gt;
Create a Google Calendar event&lt;/h3&gt;
&lt;div&gt;
You need to create a new Calendar and give a name like Overtime. When you or one of your collages works overtime then you create a new event.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-RCf6-_vG_Sg/UJ1Pg8mY2eI/AAAAAAAAPL8/lsEk1dnv_UA/s1600/Screen+Shot+2012-11-09+at+7.45.41+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RCf6-_vG_Sg/UJ1Pg8mY2eI/AAAAAAAAPL8/lsEk1dnv_UA/s1600/Screen+Shot+2012-11-09+at+7.45.41+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
When you entered the &lt;i&gt;What &lt;/i&gt;and selected your&lt;i&gt; Overtime calendar&lt;/i&gt;, click on the &lt;i&gt;Edit event&lt;/i&gt;. You are done :)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Google Drive - Spreadsheet&lt;/h3&gt;
&lt;div&gt;
Now go to Google Drive and create &amp;nbsp;a new&amp;nbsp;Spreadsheet.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-cp11Z7DAjlc/UJ1OVj451DI/AAAAAAAAPL0/lcvjU3qqLoY/s1600/Screen+Shot+2012-11-09+at+7.41.03+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-cp11Z7DAjlc/UJ1OVj451DI/AAAAAAAAPL0/lcvjU3qqLoY/s1600/Screen+Shot+2012-11-09+at+7.41.03+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now you can create &amp;nbsp;your template. I created like this:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-lrIksRVNBzM/UJ1R6XnucbI/AAAAAAAAPME/7m2XWm2PUJo/s1600/Screen+Shot+2012-11-09+at+7.56.10+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://4.bp.blogspot.com/-lrIksRVNBzM/UJ1R6XnucbI/AAAAAAAAPME/7m2XWm2PUJo/s640/Screen+Shot+2012-11-09+at+7.56.10+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Nice :) It's pretty cool. Each row start with a Month and each column start with a Name.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Write a Google Apps Script&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Now we need to create a Script for this sheet with &lt;i&gt;Script editor...&lt;/i&gt; under &lt;i&gt;Tools&lt;/i&gt; menu.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-hGH01tD-jkE/UJ1ShxuZfpI/AAAAAAAAPMU/NIrq10YIseM/s1600/Screen+Shot+2012-11-09+at+7.59.00+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-hGH01tD-jkE/UJ1ShxuZfpI/AAAAAAAAPMU/NIrq10YIseM/s1600/Screen+Shot+2012-11-09+at+7.59.00+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Jump back to your Google Calendar and copy the ID of your recently created Calendar which look like this:&amp;nbsp;&lt;i&gt;fp__lotsofrandomdata__3c@group.calendar.google.com&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Copy that code &lt;i&gt;(below)&lt;/i&gt; into your script editor.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="prettyprint lang-javascript"&gt;var Configuration = {
  calendarId: 'fp__lotsofrandomdata__3c@group.calendar.google.com'
};

function getOvertime(startDate, endDate) {
  var calendar = CalendarApp.getCalendarById(Configuration.calendarId);
  var events = calendar.getEvents(startDate, endDate);
  
  var person = {};
  for(var i = 0, _l = events.length; i &amp;lt; _l; i++) {
    var hours = (events[i].getEndTime()-events[i].getStartTime())/1000/60/60;
    var title = events[i].getTitle();
    
    if (person.hasOwnProperty(title)) {
      person[title] += hours;
    } else {
      person[title] = hours;
    }
  }
  
  return person;
};

function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
};

function updateCurrentLine() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRowIndex();
  
  var startDate = new Date(
    sheet.getRange(
      row,
      getColIndexByName("Month")
    ).getValue().replace(",", " 1,")
  );
  var endDate = new Date(
    startDate.getFullYear(),
    startDate.getMonth()+1,
    startDate.getDate()
  );
  
  var overtime = getOvertime(startDate, endDate);
  
  for (var key in overtime) {
    if (overtime.hasOwnProperty(key)) {
      var name = key;
      var field = sheet.getRange(row, getColIndexByName(name));
      if (field) {
        field.setValue(overtime[key]);
      }
    }
  }
};

function onOpen() {
  var subMenus = [
    {name:"UpdateCurrentLine", functionName: "updateCurrentLine"}
  ];
  SpreadsheetApp.getActiveSpreadsheet().addMenu("YGenerator", subMenus);  
};
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lets see what the hell is it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;First of all we need a helper function.&lt;/b&gt; This function receive us a column ID from a name which available in the first row &lt;i&gt;(header)&lt;/i&gt;.
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class="prettyprint lang-javascript"&gt;function getColIndexByName(colName) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numColumns = sheet.getLastColumn();
  var row = sheet.getRange(1, 1, 1, numColumns).getValues();
  for (i in row[0]) {
    var name = row[0][i];
    if (name == colName) {
      return parseInt(i) + 1;
    }
  }
  return -1;
};&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;We need a function to fetch overtime form our calendar.&lt;/b&gt;&amp;nbsp;This function gets two parameters. First the start date and the second is the end date. So we have an interval. Gets our calendar form Google Calendar by its ID which defined in our Configuration object. Fetch events in the given interval then fetch all duration and makes an object with Name keys and Duration values in hours (float).&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-javascript"&gt;function getOvertime(startDate, endDate) {
  var calendar = CalendarApp.getCalendarById(Configuration.calendarId);
  var events = calendar.getEvents(startDate, endDate);
  
  var person = {};
  for(var i = 0, _l = events.length; i &amp;lt; _l; i++) {
    var hours = (events[i].getEndTime()-events[i].getStartTime())/1000/60/60;
    var title = events[i].getTitle();
    
    if (person.hasOwnProperty(title)) {
      person[title] += hours;
    } else {
      person[title] = hours;
    }
  }
  
  return person;
};

&lt;/pre&gt;
&lt;br /&gt;
Our next function will call &lt;i&gt;getOvertime&lt;/i&gt; and updates our sheet. Each row starts with a &lt;i&gt;Month&lt;/i&gt; with &lt;i&gt;Year&lt;/i&gt;, so we can generate &lt;i&gt;startDate&lt;/i&gt; and &lt;i&gt;endDate&lt;/i&gt; from this.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-javascript"&gt;function updateCurrentLine() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRowIndex();
  
  var startDate = new Date(
    sheet.getRange(
      row,
      getColIndexByName("Month")
    ).getValue().replace(",", " 1,")
  );
  var endDate = new Date(
    startDate.getFullYear(),
    startDate.getMonth()+1,
    startDate.getDate()
  );
  
  var overtime = getOvertime(startDate, endDate);
  
  for (var key in overtime) {
    if (overtime.hasOwnProperty(key)) {
      var name = key;
      var field = sheet.getRange(row, getColIndexByName(name));
      if (field) {
        field.setValue(overtime[key]);
      }
    }
  }
};
&lt;/pre&gt;
&lt;br /&gt;
Each sheet has a few automatically checked function like &lt;i&gt;onOpen&lt;/i&gt;. This event will called when you open your document. &lt;b&gt;We can create a function to create a new menu item&lt;/b&gt; :)&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="prettyprint lang-javascript"&gt;function onOpen() {
  var subMenus = [
    {name:"UpdateCurrentLine", functionName: "updateCurrentLine"}
  ];
  SpreadsheetApp.getActiveSpreadsheet().addMenu("YGenerator", subMenus);  
};
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;Done&lt;/b&gt;. If you reopen your sheet then you see a new menu item. Now if you stay on a line but not the header and click on your new meny item and UpdateCurrentLine submenu then this awesome script starts to run. Now you can see a perfectly filled row.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-E-M8x_O8TXg/UJ1Z294k0qI/AAAAAAAAPMk/PXj4PbS8Suw/s1600/Screen+Shot+2012-11-09+at+8.30.17+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://1.bp.blogspot.com/-E-M8x_O8TXg/UJ1Z294k0qI/AAAAAAAAPMk/PXj4PbS8Suw/s640/Screen+Shot+2012-11-09+at+8.30.17+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/g9TzPXV26r8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/g9TzPXV26r8/google-calendar-and-google-apps-script.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-z79EJ9BOnjA/UJ1bi6QUsSI/AAAAAAAAPMs/Ofu7bFN1ELU/s72-c/Screen+Shot+2012-11-09+at+8.37.00+PM.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/11/google-calendar-and-google-apps-script.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-3076338703444621281</guid><pubDate>Thu, 08 Nov 2012 11:03:00 +0000</pubDate><atom:updated>2012-11-08T03:09:01.384-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">developer</category><category domain="http://www.blogger.com/atom/ns#">slideshow</category><category domain="http://www.blogger.com/atom/ns#">job</category><category domain="http://www.blogger.com/atom/ns#">funny</category><title>That is why I love my job</title><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dkA9FseHrr4/UJuSZrBN8EI/AAAAAAAAPGA/LKxTTMl3zSA/s1600/portal___caution_infinite_loop_by_caycowa-d4f8wxx.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-dkA9FseHrr4/UJuSZrBN8EI/AAAAAAAAPGA/LKxTTMl3zSA/s320/portal___caution_infinite_loop_by_caycowa-d4f8wxx.png" width="295" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;Source: DeviantArt by&amp;nbsp;&lt;a href="http://caycowa.deviantart.com/art/Portal-Caution-Infinite-Loop-267474885" rel="nofollow" target="_blank"&gt;caycowa&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
A simple presentation about the awesomeness of development jobs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="true" frameborder="0" height="389" mozallowfullscreen="true" src="https://docs.google.com/presentation/embed?id=1IBc9BxgKA2U2vJNGpaXwZqx3RvJJXvSC1GjHdxzwUr4&amp;amp;start=false&amp;amp;loop=false&amp;amp;delayms=3000" webkitallowfullscreen="true" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;See in FullScreen because some texts are a little bit small&lt;/em&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/B3mLR8dHtZ8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/B3mLR8dHtZ8/that-is-why-i-love-my-job.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-dkA9FseHrr4/UJuSZrBN8EI/AAAAAAAAPGA/LKxTTMl3zSA/s72-c/portal___caution_infinite_loop_by_caycowa-d4f8wxx.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/11/that-is-why-i-love-my-job.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-894728169289280609</guid><pubDate>Thu, 04 Oct 2012 12:49:00 +0000</pubDate><atom:updated>2012-10-04T05:49:40.116-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lutebox</category><category domain="http://www.blogger.com/atom/ns#">allourpower</category><category domain="http://www.blogger.com/atom/ns#">tweettv</category><category domain="http://www.blogger.com/atom/ns#">social</category><category domain="http://www.blogger.com/atom/ns#">startup</category><category domain="http://www.blogger.com/atom/ns#">help</category><category domain="http://www.blogger.com/atom/ns#">promote</category><category domain="http://www.blogger.com/atom/ns#">wahooly</category><category domain="http://www.blogger.com/atom/ns#">valuvalu</category><category domain="http://www.blogger.com/atom/ns#">influence</category><category domain="http://www.blogger.com/atom/ns#">deeyoon</category><title>Promote your favorite startup projects</title><description>﻿&lt;a href="https://plus.google.com/u/0/b/114798913484842413424/105465481469156419624/posts"&gt;+Wahooly&lt;/a&gt; is an interesting initiative. How can we help startup companies with the power of communities. The bigest problem with a new product is the hype. Promotion is a really expensive process. With &lt;a href="https://plus.google.com/u/0/b/114798913484842413424/105465481469156419624/posts"&gt;+Wahooly&lt;/a&gt;, you can help them with your influence. I think &lt;a href="http://wahoo.ly/1ua0" target="_blank"&gt;give them a chance&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you want to see how does that work then you can see their &lt;a href="http://wahoo.ly/1ua2" target="_blank"&gt;awesome&amp;nbsp;infographic&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What can you do?&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;You can promote a campaign&lt;/li&gt;
&lt;li&gt;You can send a feedback to improve their product/service.&lt;/li&gt;
&lt;li&gt;You will be near the company and their activity.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Current startups:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;AllOurPrower&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plus.google.com/u/0/b/114798913484842413424/107919680857228599968"&gt;+tweetTV&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://plus.google.com/u/0/b/114798913484842413424/102302984303591962362"&gt;+Lutebox&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://plus.google.com/u/0/b/114798913484842413424/105465481469156419624/posts"&gt;+Wahooly&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://plus.google.com/u/0/b/114798913484842413424/114857017377888158502"&gt;+Valu Valu&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;deeyoon&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;b&gt;Here's an example:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Let's say that a new socially-driven photo sharing service is a great product waiting to be discovered. They contact Wahooly, we determine their potential in the marketplace, and then we negotiate a percentage of equity to hold.&lt;br /&gt;
&lt;br /&gt;
Once the details have been ironed out, we let our members know and they check out the company. If you like it, you join. If not, you do nothing and wait for the next opportunity to come along.&lt;br /&gt;
&lt;br /&gt;
Let’s say you did like the company and wanted to help them out. These startups are looking for active influencers, but more importantly, individuals that are willing to become advocates for their brand. That’s where the Wahooly magic comes in. We use our algorithms to track and reward you based on how big of a brand advocate you are via three levels: Promotion (promoting across social networks), Improvement (feedback via our forums), and Engagement (how often you use their service). We reward you via points that are all trackable across our site and on your user dashboard, along with the points you’ve earned in other startups.&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div style="text-align: right;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;i&gt;quoted from &lt;a href="http://wahoo.ly/1ua0" target="_blank"&gt;Wahooly&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/TFnnO8_yPlo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/TFnnO8_yPlo/promote-your-favorite-startup-projects.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/10/promote-your-favorite-startup-projects.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-1561923260788234318</guid><pubDate>Mon, 01 Oct 2012 23:44:00 +0000</pubDate><atom:updated>2012-10-01T16:44:05.879-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">opinion</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><category domain="http://www.blogger.com/atom/ns#">php</category><title>Why I love Node.js</title><description>Yes I know, &lt;a href="http://nodejs.org/" target="_blank"&gt;Node.js&lt;/a&gt; is the new Hype but I think it's more than a simple overrated thing. Few years ago I met &lt;a href="http://www.ruby-lang.org/en/" target="_blank"&gt;Ruby&lt;/a&gt; and it was love at first sight. I felt it will be the new era of development. Yes it is but not what I was expecting. One year ago a met Node.js and I felt the same but it was not only&amp;nbsp;inflammation, it's a true love. I'm a programmer. I know a lot of languages and I&amp;nbsp;specialised&amp;nbsp;for &lt;a href="http://php.net/" target="_blank"&gt;PHP&lt;/a&gt; but it's too limited and boring for me today. So I started to use that new-old language, Node.js. It's new-old because I use JavaScript day by day but not as backend application.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I really hate when an uncatchable exception comes towards me in PHP and it's more simple in ruby. With&amp;nbsp;rescue statement I can catch exceptions. It's nice but why I need to handle all the time the exceptions. Some times –like multi level handling– it's hard to understand what happening and when. In JavaScript I don't need to use try/catch because conventionally the first parameter of callback functions is the error. If the first parameter is null then there was no error otherwise we got an error.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class="prettyprint lang-js"&gt;// ... cut
Users.findById(id, function(err, result) {
  if (err) {
    // OMG! We got an error
    return response.redirect('/404.html');
  }
  // nice we can do something with user
});
// ... cut
&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Of course, it's weird logic if you are trained on Java, PHP or something else but if you can understand you can feel its awesomeness.&lt;br /&gt;
&lt;br /&gt;
I know... Why I need to use as a callback instead of a simple variable assignment. Because everything around you isn't&amp;nbsp;synchronous. Please read &lt;a href="http://dotheweb.posterous.com/" target="_blank"&gt;Francois Zaninotto&lt;/a&gt;'s article about &lt;a href="http://dotheweb.posterous.com/nodejs-for-php-programmers-1-event-driven-pro" target="_blank"&gt;Event-driven programming... and pasta&lt;/a&gt; because it's a really good post about it.&lt;br /&gt;
&lt;br /&gt;
Yeah, it's a little cause to love Node.js more than other languages. When I meet a&amp;nbsp;seemingly unsolvable problem in PHP then I get a ton of solutions but some of them works and a lot of them doesn't. In Ruby I get less solutions but the working/non-working ratio is better. When I ask about my Node.js problem, I get a ton of solutions. Some of them points to an npm package &lt;i&gt;(or more)&lt;/i&gt;, some of them tells me I can do it simpler and some of them just works. So I feel... Node.js&amp;nbsp;community&amp;nbsp;is more valuable for me than PHP or Ruby.&lt;br /&gt;
&lt;br /&gt;
When I need a ready to use package in PHP then I need to include a library and I need to check if it conflicts with my system –or used framework– and need to search how can I&amp;nbsp;integrate&amp;nbsp;that. In Ruby I can use Gem's and it's nice. An npm package is similar to a gem package but I think it's more flexible.&lt;br /&gt;
&lt;br /&gt;
And last but not least in line, I can write tests in JavaScript, I can write the backend codebase in JavaScript and I can write the frontend codebase in JavaScript. Yes it's more confortable to use one language instead of two (or more).&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/t344Q22BBwM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/t344Q22BBwM/why-i-love-nodejs.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/10/why-i-love-nodejs.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-1907855942833791871</guid><pubDate>Mon, 17 Sep 2012 22:29:00 +0000</pubDate><atom:updated>2012-09-17T18:19:43.190-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">society</category><category domain="http://www.blogger.com/atom/ns#">learn</category><category domain="http://www.blogger.com/atom/ns#">information freedom</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">teach</category><category domain="http://www.blogger.com/atom/ns#">children</category><title>Program or Be Programmed</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-lwRetnU3J_E/UFejPZ7LoMI/AAAAAAAANGw/9DbG-3yV_P8/s1600/preview-large-learnhowtocodeyouwant.jpeg" imageanchor="1"&gt;&lt;img border="0" height="210" src="http://1.bp.blogspot.com/-lwRetnU3J_E/UFejPZ7LoMI/AAAAAAAANGw/9DbG-3yV_P8/s400/preview-large-learnhowtocodeyouwant.jpeg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
This title is stolen from an&amp;nbsp;info-graphic about programming,&amp;nbsp;children,&amp;nbsp;learning&amp;nbsp;and the &lt;i&gt;"Why?". &lt;/i&gt;A few months ago I talked about it with a couple of my friends and we said &lt;i&gt;"Yes, our children need to know a little of coding. It's important as few years ago the Microsoft Excel and Excel or fifteen years ago to knowing how to power up your PC."&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Why? Yes, it's a good question. Today we have a really information centered society and if you don't know at least what does &lt;i&gt;"&amp;lt;H1&amp;gt;"&lt;/i&gt; means then you are a fossil. If you don't know what does Google, Facebook, Blog, Stream and Social Walls mean then you are outside of society.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Oh yeah, I mentioned an info-graphic —from where I stole the title of this post— as the subject is very close to this topic.&amp;nbsp;Allison Morris&amp;nbsp;drew my attention to &lt;a href="http://www.onlinecollege.org/Program-or-Be-Programmed" target="_blank"&gt;this article&lt;/a&gt;. &lt;i&gt;Thank you again :)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;b&gt;Please Include Attribution to OnlineCollege.org With This Graphic&lt;/b&gt; &lt;/br&gt;&lt;a href="http://www.onlinecollege.org/Rise-of-Coding"&gt;&lt;img src="https://s3.amazonaws.com/infographics/Rise-of-Coding-Finall.jpg" alt="Programming Infographic" width="500" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
Few months ago I found a really good online learning opportunity as &lt;a href="http://www.codeschool.com/" target="_blank"&gt;CodeSchool&lt;/a&gt;. It's not free but awesome. I paid for it because I hoped I will learn a lot but I can't. Yes I'm not a programmer-noob. That was not bad news for me and now I can recommend it for beginners. Here you can see a lot of videos and you can take interactive tests in a lot of topics.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-size: xx-small; text-align: right;"&gt;Header image from&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.1stwebdesigner.com/css/learn-how-to-code/" rel="nofollow" style="font-size: x-small; text-align: right;" target="_blank"&gt;1stwebdesigner.com&lt;/a&gt;&lt;span style="font-size: xx-small;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/96f_wNMkIKg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/96f_wNMkIKg/program-or-be-programmed.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lwRetnU3J_E/UFejPZ7LoMI/AAAAAAAANGw/9DbG-3yV_P8/s72-c/preview-large-learnhowtocodeyouwant.jpeg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/09/program-or-be-programmed.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-7230608039207098522</guid><pubDate>Tue, 07 Aug 2012 23:56:00 +0000</pubDate><atom:updated>2012-08-07T16:57:47.664-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><category domain="http://www.blogger.com/atom/ns#">osx</category><category domain="http://www.blogger.com/atom/ns#">mac</category><category domain="http://www.blogger.com/atom/ns#">textmate</category><title>Run Node.js Express Application from TextMate</title><description>&lt;h2&gt;First of all&lt;/h2&gt;
&lt;p&gt;I tried a lot of existing solutions but I could not use one, so I created a new script for it.&lt;/p&gt;

&lt;h2&gt;Setup&lt;/h2&gt;
&lt;p&gt;Open &lt;code&gt;Textmate &amp;gt; Preferences &amp;gt; Advanced &amp;gt; Shell Variables&lt;/code&gt; and add your node path to the &lt;code&gt;PATH&lt;/code&gt; variable &lt;small&gt;(with &lt;a href='http://mxcl.github.com/homebrew/' target='_blank'&gt;homebrew&lt;/a&gt; append &lt;code&gt;:/usr/local/bin&lt;/code&gt;)&lt;/small&gt;.&lt;/p&gt;

&lt;p&gt;Now, let's create a new command. Open &lt;code&gt;Bundles &amp;gt; Bundle Editor &amp;gt; Edit Commands&lt;/code&gt; and create a &lt;code&gt;New Bundle&lt;/code&gt; &lt;small&gt;(name it whatever you want; I named it &lt;code&gt;JavaScript With Node&lt;/code&gt;)&lt;/small&gt;. Create a new command under your new bundle &lt;small&gt;(name of my command is &lt;code&gt;Run With Node&lt;/code&gt;)&lt;/small&gt; with the following code:&lt;/p&gt;

&lt;pre class='prettyprint lang-javascript'&gt;
  #!/usr/bin/env node

  var sys = require("sys"),
      spawn = require('child_process').spawn;

  /*
   * htmlEntities function is from Chris Coyier
   * URL: &lt;small&gt;http://css-tricks.com/snippets/javascript/htmlentities-for-javascript/&lt;/small&gt;
   */
  function htmlEntities(str) {
      return String(str).replace(/&amp;/g, '&amp;amp;amp;')
                        .replace(/&amp;lt;/g, '&amp;amp;lt;')
                        .replace(/&amp;gt;/g, '&amp;amp;gt;')
                        .replace(/"/g, '&amp;amp;quot;');
  }

  (function(path, file) {
    console.log("&amp;lt;div style='color: green'&amp;gt;Run "
                + path + "/" + file
                + "&amp;lt;/div&amp;gt;");
    var app = spawn("node", [path + "/" + file], { cwd: path });
    app.stdout.on('data', function(data) {
      console.log("&amp;lt;div&amp;gt;"
                  + htmlEntities(data)
                  + "&amp;lt;/div&amp;gt;");
    });
    app.stderr.on('data', function(data) {
      console.log("&amp;lt;div style='color: red'&amp;gt;"
                  + htmlEntities(data)
                  + "&amp;lt;/div&amp;gt;");
    });
    app.on('exit', function(code) {
      console.log('App exited with code ' + code);
    });
  })(process.env.TM_DIRECTORY, 'app.js');
  
  // by Balazs Nadasdi
  // if you find a bug then please send me to yitsushi@gmail.com
  // or find me on Google+
&lt;/pre&gt;

&lt;p&gt;
&lt;h3&gt;Parameters&lt;/h3&gt;
&lt;div&gt;Save: &lt;strong&gt;Current File&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;Input: &lt;strong&gt;Entire Document&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;Output: &lt;strong&gt;Show as HTML&lt;/strong&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;div style='color: #550'&gt;
  &lt;h4&gt;Optional&lt;/h4&gt;
  &lt;div&gt;Activation: &lt;code&gt;Key Equivalent&lt;/code&gt; with &lt;strong&gt;&lt;code&gt;&amp;#8984;R&lt;/code&gt;&lt;/strong&gt; &lt;small&gt;(Command + R)&lt;/small&gt;&lt;/div&gt;
  &lt;div&gt;Scope Selector: &lt;strong&gt;source.js&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;

&lt;h2&gt;Additional&lt;/h2&gt;
&lt;p&gt;If you don't want to create a script for one file &lt;small&gt;(instead of the entire &lt;a href='http://expressjs.com/' target='_blank'&gt;Express&lt;/a&gt; application)&lt;/small&gt; then use this code &lt;small&gt;(e.g. &lt;code&gt;Run File With Node&lt;/code&gt;)&lt;/small&gt;:&lt;/p&gt;

&lt;pre class='prettyprint lang-javascript'&gt;
  #!/usr/bin/env node

  var sys = require("sys"),
      spawn = require('child_process').spawn;

  /*
   * htmlEntities function is from Chris Coyier
   * URL: &lt;small&gt;http://css-tricks.com/snippets/javascript/htmlentities-for-javascript/&lt;/small&gt;
   */
  function htmlEntities(str) {
      return String(str).replace(/&amp;/g, '&amp;amp;amp;')
                        .replace(/&amp;lt;/g, '&amp;amp;lt;')
                        .replace(/&amp;gt;/g, '&amp;amp;gt;')
                        .replace(/"/g, '&amp;amp;quot;');
  }

  (function(path, file) {
    console.log("&amp;lt;div style='color: green'&amp;gt;Run "
                + file
                + "&amp;lt;/div&amp;gt;");
    var app = spawn("node", [file], { cwd: path });
    app.stdout.on('data', function(data) {
      console.log("&amp;lt;div&amp;gt;"
                  + htmlEntities(data)
                  + "&amp;lt;/div&amp;gt;");
    });
    app.stderr.on('data', function(data) {
      console.log("&amp;lt;div style='color: red'&amp;gt;"
                  + htmlEntities(data)
                  + "&amp;lt;/div&amp;gt;");
    });
    app.on('exit', function(code) {
      console.log('App exited with code ' + code);
    });
  })(process.env.TM_DIRECTORY, process.env.TM_FILEPATH);
  
  // by Balazs Nadasdi
  // if you find a bug then please send me to yitsushi@gmail.com
  // or find me on Google+
&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/94JOWVLg1Xk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/94JOWVLg1Xk/run-nodejs-express-application-from.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/08/run-nodejs-express-application-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-6808642193741361927</guid><pubDate>Tue, 28 Feb 2012 00:11:00 +0000</pubDate><atom:updated>2012-03-19T18:55:03.221-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">coffeescript</category><category domain="http://www.blogger.com/atom/ns#">reply</category><title>Why I Use CoffeeScript</title><description>&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;Yeah this is a reply post to &lt;a href="http://oscargodson.com/posts/why-i-dont-use-coffeescript.html" target='_blank'&gt;Oscar Godson's Why I Don't Use CoffeeScript&lt;/a&gt;. I don't have any problems with people who don't like &lt;a href="http://coffeescript.org/" target='_blank'&gt;CoffeeScript&lt;/a&gt; or other similar solutions but I don't like if someone cuts in the air with fake reasons and self made generalities.&lt;/p&gt;

&lt;h2&gt;Syntax Sugar&lt;/h2&gt;
&lt;p&gt;A lot of developer said  to me &lt;em&gt;"A real language has curly brackets&lt;/em&gt;" and similar sentences about Ruby or Python but when I ask about Lisp or Assembly then I get a simple &lt;em&gt;"eeeee that is completely different"&lt;/em&gt;. But why? Why can't you imagine a language without C syntax?&lt;/p&gt;
&lt;p&gt;No it's not only a &lt;em&gt;Sugar&lt;/em&gt;. Why I need to write&lt;/p&gt;
&lt;pre class="prettyprint lang-javascript"&gt;var cube;
cube = function(x) { return square(x) * x; };&lt;/pre&gt;
&lt;p&gt;if I can write a simpler format like this:&lt;/p&gt;
&lt;pre class="prettyprint lang-coffeescript"&gt;cube = (x) -&gt; square(x) * x&lt;/pre&gt;
&lt;p&gt;Ok. With this example this is really a Sugar but when I want to write more complex code I get a lot of cool stuff like:&lt;/p&gt;
&lt;pre class="prettyprint lang-coffeescript"&gt;obj?.func?()&lt;/pre&gt;
&lt;p&gt;Oh yeah if I'm not lazy OR I have more time I can test &lt;code&gt;obj&lt;/code&gt; has that &lt;code&gt;func&lt;/code&gt; property and the &lt;code&gt;func&lt;/code&gt; property is a function and if a function then call it without parameters.&lt;/p&gt;
&lt;pre class="prettyprint lang-coffeescript"&gt;my_string = "#{S4()}#{S4()}-#{S4()}-#{S4()}-#{S4()}#{S4()}#{S4()}"&lt;/pre&gt;
&lt;p&gt;I think it's more readable than writing it with concatenation &lt;em&gt;(CoffeeScript compiles the string as concatenation)&lt;/em&gt; or using &lt;code&gt;string.format()&lt;/code&gt; where I can miscount the parameters.&lt;p&gt;
&lt;p&gt;And these are only highlight of the iceberg… Read the &lt;a href="http://pragprog.com/book/tbcoffee/coffeescript" target='_blank'&gt;CofeeScript book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(&lt;em&gt;Not to mention that you can learn a lot from the generated JavaScript code.&lt;/em&gt;)&lt;/p&gt;

&lt;h2&gt;Wart Removal&lt;/h2&gt;
CoffeeScript doesn't fix "warts" of JavaScript like &lt;code&gt;for...in&lt;/code&gt;, because it isn't a "wart". CoffeeScript gives us a "tool" that makes work easier and we don't have to write helper function for it. Without &lt;code&gt;var&lt;/code&gt; life is easier &lt;strong&gt;but&lt;/strong&gt; it's not an &lt;em&gt;"oh-i-love-god"&lt;/em&gt; category &lt;em&gt;(it's not a problem so we don't need to solve it)&lt;/em&gt; and if you leave &lt;code&gt;var&lt;/code&gt; in JavaScript you make a mistake &lt;em&gt;(yeah it's a mistake)&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;CoffeeScript is not an alternative to learn JavaScript it's a language/tool for programmers who know what is JavaScript. If someone ask me about JavaScript, CoffeeScript and learning then I tell him/her that he/she first needs to learn JavaScript. If you can't write good JavaScript code then you can't write good CoffeeScript code.&lt;/p&gt;

&lt;h2&gt;Classes&lt;/h2&gt;
&lt;p&gt;JavaScript is a f*cking prototypal language but we can use it as Event-Object oriented language. Why is it better to write an own &lt;code&gt;extend&lt;/code&gt; function or use an external library with plus kilobytes and even more code to parse &lt;em&gt;(like &lt;a href="http://documentcloud.github.com/backbone/" target='_blank'&gt;Backbone.js&lt;/a&gt;)&lt;/em&gt;. Is &lt;a href="http://ejohn.org/blog/simple-javascript-inheritance/" target='_blank'&gt;this&lt;/a&gt; really a &lt;strong&gt;Simple JavaScript Inheritance&lt;/strong&gt;? If you want to use this why don't use that:&lt;/p&gt;
&lt;pre class="prettyprint lang-coffeescript"&gt;class Animal
  constructor: (@name) -&gt;

  move: (meters) -&gt;
    alert @name + " moved #{meters}m."

class Snake extends Animal
  move: -&gt;
    alert "Slithering..."
    super 5

class Horse extends Animal
  move: -&gt;
    alert "Galloping..."
    super 45

sam = new Snake "Sammy the Python"
tom = new Horse "Tommy the Palomino"

sam.move()
tom.move()
&lt;/pre&gt;
&lt;p&gt;oh yeah… Compile this code:&lt;p&gt;
&lt;pre class="prettyprint lang-javascript"&gt;var Animal, Horse, Snake, sam, tom,
  __hasProp = Object.prototype.hasOwnProperty,
  __extends = function(child, parent) {
    for (var key in parent) {
      if (__hasProp.call(parent, key)) child[key] = parent[key];
    }
    function ctor() { this.constructor = child; }
    ctor.prototype = parent.prototype;
    child.prototype = new ctor;
    child.__super__ = parent.prototype;
    return child;
  };

Animal = (function() {
  function Animal(name) {
    this.name = name;
  }

  Animal.prototype.move = function(meters) {
    return alert(this.name + (" moved " + meters + "m."));
  };

  return Animal;
})();

Snake = (function(_super) {
  __extends(Snake, _super);

  function Snake() {
    Snake.__super__.constructor.apply(this, arguments);
  }

  Snake.prototype.move = function() {
    alert("Slithering...");
    return Snake.__super__.move.call(this, 5);
  };

  return Snake;
})(Animal);

Horse = (function(_super) {
  __extends(Horse, _super);

  function Horse() {
    Horse.__super__.constructor.apply(this, arguments);
  }

  Horse.prototype.move = function() {
    alert("Galloping...");
    return Horse.__super__.move.call(this, 45);
  };

  return Horse;
})(Animal);

sam = new Snake("Sammy the Python");
tom = new Horse("Tommy the Palomino");

sam.move();
tom.move();&lt;/pre&gt;
&lt;p&gt;Yeah, really… Much better. =P&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I understand JavaScript is not a classical language and I know we need a different think about structures and mechanism. I love JavaScript. Really. Sometimes I meet a problem and I need to sit back to my ball, draw graphs, lines and equations but after I can write a quick solution. I can't imagine my life without JavaScript inside a browser and that is the reason why I don't think if someone like CoffeeScript then this programmer hate JavaScript. And don't forget CoffeeScript has a big codebase on developer's side but the client gets only a small JavaScript instead of loading and parsing an extra library like &lt;a href="http://documentcloud.github.com/underscore/" target='_blank'&gt;underscore.js&lt;/a&gt;, &lt;a href="http://jquery.com/" target='_blank'&gt;jQuery&lt;/a&gt; and others. So if you don't need a big part of the loaded library you have a lot of unused code. A build process &lt;em&gt;(compile CoffeeScript into JavaScript)&lt;/em&gt; is painless instead of loading a relatively big extra JavaScript file for 3-4 functions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. If someone hate JavaScript then it has a big chance he/she will not loving CoffeeScript too and wouldn't be a front-end developer.&lt;/em&gt;&lt;/p&gt;

&lt;script type="text/javascript" charset="utf-8" src="https://dl.dropbox.com/s/ffh2gtuosl1wvnh/P4DV.min.js?dl=1"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/C1z4g76_iQw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/C1z4g76_iQw/why-i-use-coffeescript.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/02/why-i-use-coffeescript.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-4416120851995605267</guid><pubDate>Sun, 05 Feb 2012 21:39:00 +0000</pubDate><atom:updated>2012-03-19T18:55:33.561-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">reederapp</category><category domain="http://www.blogger.com/atom/ns#">app</category><category domain="http://www.blogger.com/atom/ns#">share</category><category domain="http://www.blogger.com/atom/ns#">marsedit</category><category domain="http://www.blogger.com/atom/ns#">list</category><category domain="http://www.blogger.com/atom/ns#">blogging</category><category domain="http://www.blogger.com/atom/ns#">mac</category><category domain="http://www.blogger.com/atom/ns#">rss</category><category domain="http://www.blogger.com/atom/ns#">courier</category><category domain="http://www.blogger.com/atom/ns#">box.net</category><title>Mac Apps - What I use on my Mac? (part 3) - News and Share</title><description>&lt;p style='clear: both;'&gt;
&lt;img src="http://lh3.ggpht.com/-lXdmpWNW_v8/Ty711dEjFRI/AAAAAAAADvw/ytwe0fzsvXQ/MarsEdit.png?imgmax=64" alt="MarsEdit" title="MarsEdit.png" border="0" width="64" height="64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" /&gt;
&lt;a href="http://www.red-sweater.com/marsedit/" target='_blank'&gt;MarsEdit&lt;/a&gt; for blogging. It grows continuously with new features, bug-fixes. The developers are very responsive and if I need some help or have a question they answer me quickly. You can add new html tag shortcuts in a convenient interface and you can make a template for previews to make it look like on the production site. MarsEdit supports a ton of blog engines like Blogger, Blogware, Drupal, LiveJournal, Movable Type, Tumblr, TypePad, WordPress and some others but if your blog engine is not supported don't worry if that supports one of the public blog APIs you can add it with API Endpoint and System API type.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh3.ggpht.com/-4NhJ-s_2AK0/Ty72HL64xEI/AAAAAAAADv8/3yKioPav2J8/ScreenFlow.png?imgmax=64" alt="ScreenFlow" title="ScreenFlow.png" border="0" width="64" height="64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" /&gt;
&lt;a href="http://www.telestream.net/screen-flow/" target='_blank'&gt;ScreenFlow&lt;/a&gt; is a very useful and small screen capture app. It knows what needed but not so complex like some others. You can record from your webcam and your screen or a part of your screen. You can record your voice with microphone but if you don't have a microphone or you don't want to add your voice to the video then you can add audio and video files to the project. It has (not a ton but) a lot of transition effects. Yeah If I needed to summarize in one word then I would say „Usability”.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh6.ggpht.com/-zSN4byJ70Vc/Ty72VXpq-2I/AAAAAAAADwI/MONKHZOyoFw/Courier.png?imgmax=64" alt="Courier" title="Courier.png" border="0" width="64" height="64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" /&gt;
&lt;a href="http://www.realmacsoftware.com/courier/" target='_blank'&gt;Courier&lt;/a&gt; is my favorite sharing tool. It has a lot of extras like Facebook and Box.net sharing. Why is it so good? First I can create multiple envelops. Each envelop can have some attached services with unique options. For example I created an image share envelop that has a Facebook and a Box.net account. If i drop a file into this envelop then these files will be uploaded to these services. So I drop a photo of my daughter into it, I press the deliver button and Courier uploads that photo to my Facebook wall and puts into the /Social/Photos on my Box.net account. My other is a 2Phone envelop connected with my Box.net account and if I put some files into this envelop then that files will be uploaded into my /2Phone directory and then I can download on my phone or share this file with others via Box.net.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh3.ggpht.com/-qx9yPNhLf2A/Ty72kL88QOI/AAAAAAAADwU/V5I5F3Yzy_o/Reeder.png?imgmax=64" alt="Reeder" title="Reeder.png" border="0" width="64" height="64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" /&gt;
&lt;a href="http://reederapp.com/mac/" target='_blank'&gt;Reeder&lt;/a&gt; for RSS. I think this is the best choice if you have a Google Reader account. This app needs a Google Reader account and works perfect with that. If you read an article in your browser it will read in Reeder app and vice versa. It has a lot of plugins/services like Email, Evernote, MarsEdit, Twitter, Readability, Instapaper, Pinboard, mobilizers and some others. It has a quick and clean interface with a lot of shortcuts.&lt;/p&gt;

&lt;h2&gt;Related articles:&lt;/h2&gt;
&lt;a href="http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-1.html"&gt;Mac Apps - What I use on my Mac? (part 1) - Text Editors&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-2.html"&gt;Mac Apps - What I use on my Mac? (part 2) - Communication&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/j0z0gtdlwko" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/j0z0gtdlwko/mac-apps-what-i-use-on-my-mac-part-3.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-lXdmpWNW_v8/Ty711dEjFRI/AAAAAAAADvw/ytwe0fzsvXQ/s72-c/MarsEdit.png?imgmax=64" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/02/mac-apps-what-i-use-on-my-mac-part-3.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-8907761303421989386</guid><pubDate>Wed, 01 Feb 2012 14:14:00 +0000</pubDate><atom:updated>2012-03-19T18:47:44.836-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">video</category><category domain="http://www.blogger.com/atom/ns#">dilbert</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">hardware</category><category domain="http://www.blogger.com/atom/ns#">budget</category><title>Budget Blunder</title><description>Very familiar story... I mean it's a really typical story in general.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;video controls="controls" style='max-width: 100%'&gt;
  &lt;source src="http://traffic.libsyn.com/dilbert/d274.m4v" type="video/mp4"&gt;&lt;/source&gt;
  &lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-7d40a8958da725be" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="//www.youtube.com/get_player"&gt;
&lt;param name="bgcolor" value="#FFFFFF"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="flashvars" value="flvurl=http://redirector.googlevideo.com/videoplayback?id%3D7d40a8958da725be%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1373843317%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D89134789FCF2AF266D74C50759347E537197C343.4F1D1B352FAE7A3E0CC21A57C67D49800FFB6849%26key%3Dck2&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7d40a8958da725be%26offsetms%3D5000%26itag%3Dw160%26sigh%3DxyiKN-eEfQ8wdTmANd3FwEs94s0&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;
&lt;embed src="//www.youtube.com/get_player" type="application/x-shockwave-flash"
width="320" height="266" bgcolor="#FFFFFF"
flashvars="flvurl=http://redirector.googlevideo.com/videoplayback?id%3D7d40a8958da725be%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1373843317%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D89134789FCF2AF266D74C50759347E537197C343.4F1D1B352FAE7A3E0CC21A57C67D49800FFB6849%26key%3Dck2&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D7d40a8958da725be%26offsetms%3D5000%26itag%3Dw160%26sigh%3DxyiKN-eEfQ8wdTmANd3FwEs94s0&amp;autoplay=0&amp;ps=blogger"
allowFullScreen="true" /&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;/video&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;small&gt;source: &lt;a href="http://www.podfeed.net/episode/Budget+Blunder/2500351"&gt;http://www.podfeed.net/episode/Budget+Blunder/2500351&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/2WknymZS4Ks" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/2WknymZS4Ks/budget-blunder.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/02/budget-blunder.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-2827810705718845058</guid><pubDate>Wed, 01 Feb 2012 00:50:00 +0000</pubDate><atom:updated>2012-02-05T13:41:31.085-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app</category><category domain="http://www.blogger.com/atom/ns#">skype</category><category domain="http://www.blogger.com/atom/ns#">irc</category><category domain="http://www.blogger.com/atom/ns#">sparrow</category><category domain="http://www.blogger.com/atom/ns#">email</category><category domain="http://www.blogger.com/atom/ns#">adium</category><category domain="http://www.blogger.com/atom/ns#">list</category><category domain="http://www.blogger.com/atom/ns#">linkinus</category><category domain="http://www.blogger.com/atom/ns#">mac</category><category domain="http://www.blogger.com/atom/ns#">im</category><title>Mac Apps - What I use on my Mac? (part 2) - Communication</title><description>&lt;p&gt;I wrote about &lt;a href="http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-1.html" target='_blank'&gt;Text Editors&lt;/a&gt; in my last post and now let's see what I use for communication. I mean Email, IRC and IM as Communication.&lt;/p&gt;
&lt;p&gt;I need to talk with others as in my personal life as in my work. So I need to separate these channels but it's not easy. I'm lucky because in my work I need to use Skype so I can use GTalk in my personal life. Of course some channel must be mixed like IRC.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh5.ggpht.com/-wS2-AXqW11g/Tyh5JEYAU3I/AAAAAAAADuU/Zb9Esa7gaWY/Adium.png?imgmax=64" alt="Adium" title="Adium" border="0" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" width='64' /&gt;
&lt;a href="http://adium.im/" target='_blank'&gt;Adium&lt;/a&gt; is my best friend. I think this is the best client for GTalk. It can handle MSN and other protocols but I don't use AOL, QQ, Gadu-Gadu, Yahoo!, Facebook Messenger or MSN. I use another app for IRC and Twitter but I can use Adium for it if I want. It has a lot of extras like themes, bots, notification sounds etc. So it's really customizable.
&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh6.ggpht.com/-0LogBBfz-Z0/TyiAIaNcnmI/AAAAAAAADuk/vTI-J113m-0/Linkinus.png?imgmax=64" alt="Linkinus" title="Linkinus.png" border="0" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" width='64' /&gt;
&lt;a href="http://conceitedsoftware.com/products/linkinus" target='_blank'&gt;Linkinus&lt;/a&gt; is a perfect IRC client for me. It looks clean and simple but smart. Ok I hate the predefined server list because I can't delete all of them in a simple method only one-by-one but it supports multiple connections, multiple identities, channel options, "friends" tag and some other cool features.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh5.ggpht.com/-cTag6ydq6hs/TyiB16EZkiI/AAAAAAAADuw/JHvQLQE7S9I/Sparrow.png?imgmax=64" alt="Sparrow" title="Sparrow.png" border="0" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" width='64' /&gt;
&lt;a href="http://sparrowmailapp.com/" target='_blank'&gt;Sparrow&lt;/a&gt; is an email client what specified to GMail. What? Yes. This client handles IMAP folders as labels like GMail. It's really comfortable because I can put an email under two labels but in a legacy email client I can't do this simply. Sparrow doesn't support POP3 but I don't use it so that is not my problem =). It has a really simple interface and a pleasure to work with it.&lt;/p&gt;

&lt;p style='clear: both;'&gt;
&lt;img src="http://lh6.ggpht.com/-zhqkt5wjSeA/TyiFJvMfvUI/AAAAAAAADvA/A6kPkuMhL_A/Skype.png?imgmax=64" alt="Skype" title="Skype.png" border="0" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" width='64' /&gt;
&lt;a href="http//www.skype.com/" target='_blank'&gt;Skype&lt;/a&gt; was a big surprise for me on Mac. I used it on Linux and that was a totally &lt;small&gt;&lt;em&gt;#@$#%@$#&lt;/em&gt;&lt;/small&gt;. Then I tried it on Windows and that was better but not good. But I installed it on Mac because it was needed for my work and I couldn't believe what I saw. It's a clean, featureful and it works perfect without freezes, popups and UI-Fails. So if you also don't like Skype then  try it. Ok, actually if I don't need to use it then I don't do it but the Mac client is awesome.&lt;/p&gt;

&lt;h2&gt;Related articles:&lt;/h2&gt;
&lt;a href="http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-1.html"&gt;Mac Apps - What I use on my Mac? (part 1) - Text Editors&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.code-infection.com/2012/02/mac-apps-what-i-use-on-my-mac-part-3.html" target='_blank'&gt;Mac Apps - What I use on my Mac? (part 3) - News and Share&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/fBvRGga1rg0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/fBvRGga1rg0/mac-apps-what-i-use-on-my-mac-part-2.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-wS2-AXqW11g/Tyh5JEYAU3I/AAAAAAAADuU/Zb9Esa7gaWY/s72-c/Adium.png?imgmax=64" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-8173000349882686329</guid><pubDate>Thu, 26 Jan 2012 16:28:00 +0000</pubDate><atom:updated>2012-02-05T13:42:03.782-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app</category><category domain="http://www.blogger.com/atom/ns#">vim</category><category domain="http://www.blogger.com/atom/ns#">list</category><category domain="http://www.blogger.com/atom/ns#">mac</category><category domain="http://www.blogger.com/atom/ns#">textmate</category><category domain="http://www.blogger.com/atom/ns#">macvim</category><category domain="http://www.blogger.com/atom/ns#">iawriter</category><title>Mac Apps - What I use on my Mac? (part 1) - Text Editors</title><description>&lt;p&gt;There are a summary about apps what I use on my machine for my work. This is not a Top10 and this list doesn't have any priority between programs, only a list... or rather first part of a list.&lt;/p&gt;
&lt;p&gt;Ok... So I'm a developer, exactly a web developer with PHP, JavaScript &lt;small&gt;(CoffeScript)&lt;/small&gt;, CSS &lt;small&gt;(SASS)&lt;/small&gt;, HTML, MongoDB and MySQL &lt;small&gt;(and with some other related services)&lt;/small&gt;.&lt;/p&gt;
&lt;p&gt;First category &lt;small&gt;(this article)&lt;/small&gt; is „Text Editors”. I use two apps for it: &lt;strong&gt;TextMate&lt;/strong&gt; and &lt;strong&gt;MacVim&lt;/strong&gt;. One other for quick notes or sketches: &lt;strong&gt;iA Writer&lt;/strong&gt;.&lt;/p&gt;


&lt;p style='clear: both;'&gt;&lt;img alt="TextMate" border="0" height="64" src="http://lh3.ggpht.com/-qeqHkUUpR4A/TyF_Jf74KpI/AAAAAAAADpw/vhIAMFq2eao/matedot.png?imgmax=64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" title="TextMate.png" width="64" /&gt;&lt;/h2&gt;
&lt;a href="http://macromates.com/" target="_blank"&gt;TextMate&lt;/a&gt; is a very good editor. TextMate can handle Projects, Group of files, single files and it has a lot of bundles. So I love it because it's quick and simple but yet almost knows everything what it needs to know. What does Project support mean? You can create a project where you can add files, directories and groups. Groups look like a directory but not a directory. For example you create a Group with name „Controllers” and you can add files or directories into this Group. So if you have 100 controllers but want to work with only 10 then you can add only these 10 controllers instead of adding directory with all of controllers. This is why I really love this editor.&lt;/p&gt;

&lt;p style='clear: both;'&gt;&lt;img alt="MacVim" border="0" height="64" src="http://lh3.ggpht.com/-QxPNRSUMqkQ/TyF_KhIXlaI/AAAAAAAADp4/co7jJzrmX8I/macvim.png?imgmax=64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" title="MacVim.png" width="64" /&gt;&lt;/h2&gt;
&lt;a href="http://code.google.com/p/macvim/" target="_blank"&gt;MacVim&lt;/a&gt; is the text editor Vim for Mac OS X. I used vim on Linux for ca. 10 years. So I love MacVim with nice look, 100% of vim :), handling and diversity. If you ever used vim then you know what does it mean but if you never used it... Just use TextMate ^_^ I don't know why I love vim so much but I love. Maybe because there are so many things you can use it for and so hard to learn everything and this is the reason why I love it but probably this is not the background =)&lt;/p&gt;


&lt;p style='clear: both;'&gt;&lt;img alt="Ia writer" border="0" height="64" src="http://lh4.ggpht.com/-x4OJT8f0T64/TyF_LpUkKWI/AAAAAAAADqA/KAB_iRIoGxM/ia_writer.png?imgmax=64" style="float: left; margin-top: 0; margin-bottom: 5px; margin-right: 10px;" title="ia_writer.png" width="64" /&gt;&lt;/h2&gt;
&lt;a href="http://www.iawriter.com/" target="_blank"&gt;iA Writer&lt;/a&gt; is a digital writing tool. It's not a programmer's tool it's only a writing app. I use it on meetings for memo, writing specification sketches or when I try to collect my thoughts about a project but a MindMap would be too much. Simple clean and you can focus to writing &lt;small&gt;(real-time formats the Markdown language, it's really practical)&lt;/small&gt; on fullscreen and focus mode &lt;small&gt;(highlight current paragraph and fade out others)&lt;/small&gt;.
&lt;/p&gt;

&lt;h2&gt;Related articles:&lt;/h2&gt;
&lt;a href="http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-2.html"&gt;Mac Apps - What I use on my Mac? (part 2) - Communication&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://blog.code-infection.com/2012/02/mac-apps-what-i-use-on-my-mac-part-3.html" target='_blank'&gt;Mac Apps - What I use on my Mac? (part 3) - News and Share&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/mXR8NgipbKs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/mXR8NgipbKs/mac-apps-what-i-use-on-my-mac-part-1.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-qeqHkUUpR4A/TyF_Jf74KpI/AAAAAAAADpw/vhIAMFq2eao/s72-c/matedot.png?imgmax=64" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/01/mac-apps-what-i-use-on-my-mac-part-1.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-1733375372511693319</guid><pubDate>Tue, 03 Jan 2012 06:58:00 +0000</pubDate><atom:updated>2012-01-03T02:00:06.590-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">letter</category><category domain="http://www.blogger.com/atom/ns#">facebook</category><category domain="http://www.blogger.com/atom/ns#">googleplus</category><category domain="http://www.blogger.com/atom/ns#">google</category><title>This Is Not Facebook</title><description>I found a really &lt;a href="https://plus.google.com/100035762233109552669/posts/gGiEfjsgXkk" target="_blank"&gt;good article&lt;/a&gt; on &lt;a href="https://plus.google.com/" target="_blank"&gt;Google+&lt;/a&gt;.&lt;br /&gt;
I &lt;strike&gt;don't&lt;/strike&gt; didn't circle him&amp;nbsp;&lt;i&gt;(+&lt;a href="https://plus.google.com/100035762233109552669/posts" target="_blank"&gt;DeAno Jackson&lt;/a&gt;&amp;nbsp;: he is the&amp;nbsp;author)&lt;/i&gt; but after this Letter... Yes, I circled him and not into the &lt;i&gt;"WTF?"&lt;/i&gt; or &lt;i&gt;"He gets a chance, maybe"&lt;/i&gt; circle.&lt;br /&gt;
&lt;br /&gt;
Let's see...
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;b&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;This Is Not Facebook&lt;/span&gt;&lt;/b&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;I've been noticing that over the past few weeks that quite a few people have been migrating to here from Facebook, which is great! Welcome to all of you! To help your experience here, I'm going to help you by explaining what G+ is and, most importantly, what it is not.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="background-color: white; font-family: 'Courier New', Courier, monospace;"&gt;I'll start with the latter. As you guessed from my title, this isn't Facebook. What I mean by that is that Google+ isn't the place you come to reconnect with old friends, people you knew (and didn't give a shit about then either) in high school, or people you hung out with in college. For the most part, those people aren't here. They're on Facebook, and despite the fact that Zuckerburg and company regularly disregard their privacy, think they're too stupid to make choices for themselves (EdgeRank), and show a general disregard for anything they'd want to see done with the service (instead catering to advertisers), they're comfortable there. They're not going anywhere.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;So, if you come here, try to find some of these people, maybe find a few, make a few posts and don't get any feedback, you're going to go right back to Facebook complaining that G+ is boring.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;You will also have missed what Google+ is about. To sum it up as simply as I can, Facebook is where you connect with old friends. Google+ is where you find new ones.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;See that search bar at the top of your screen? Unlike the site on which you're accustomed to spending your time, the one here is actually useful. Interested in poetry slams? A quick search up there (&lt;a href="https://plus.google.com/s/poetry%20slam"&gt;https://plus.google.com/s/poetry%20slam&lt;/a&gt;) will show you who else shares those interests. Photography? No sweat (&lt;a href="https://plus.google.com/s/photography"&gt;https://plus.google.com/s/photography&lt;/a&gt;). Harry Potter? Twilight? True Blood? Pottery? You'll find it here.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Take a few of those people that share your interests. Add them to your Circles. Interact with them. Post things here about the things you're interested in. The more you do that, the more you'll start to see where G+ shines, why it can do what no other network before it could do so very well.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;And for God's sake, fill out your profiles! Really can't stress that enough. If you circle someone, chances are they're going to check your profile (I always do). If there's nothing there telling them why they should circle you back, it's likely that they won't. It really doesn't take all that long to type a few lines about who you are and what you're interested in. Feel free to see mine as an example (someone can see that and know exactly what I'm about without ever having to see a single post from me).&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Oh, and don't be afraid to comment on the post of someone you don't know. People make posts public for a reason; to encourage interaction with as many people as possible.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Let me give you a couple of people to add to a Circle to get you started. &lt;span class="proflinkWrapper"&gt;&lt;span class="proflinkPrefix" style="color: #999999;"&gt;&lt;span style="line-height: 18px;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;a class="proflink" href="https://plus.google.com/109895887909967698705" oid="109895887909967698705" style="color: #3366cc; cursor: pointer; line-height: 18px; text-decoration: none;"&gt;Natalie Villalobos&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;is a given; she's a Community Manager here on G+, and will always keep you in the loop on cool things that are happening around here. &lt;span class="proflinkWrapper"&gt;&lt;span class="proflinkPrefix" style="color: #999999;"&gt;&lt;span style="line-height: 18px;"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;a class="proflink" href="https://plus.google.com/100974258168375166691" oid="100974258168375166691" style="color: #3366cc; cursor: pointer; line-height: 18px; text-decoration: none;"&gt;Daria Musk&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 18px;"&gt;&amp;nbsp;&lt;/span&gt;is another one to keep an eye on; she's practically the Official Singer/Songwriter of Google+.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;div&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;The more you're here, the more you'll meet people that you find interesting and decide to add them. The more you interact with them, the more fun you'll have here.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Edit: Oh, can't believe I forgot this one. &lt;b&gt;DO NOT ASK HOW TO WRITE ON SOMEONE'S WALL!&amp;nbsp;&lt;/b&gt;There is no Wall. This isn't Facebook. Leave that mentality behind. You cannot post anything on someone's page. If there's a post you want them to see, tag them in it, and it will appear in their notifications.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="vg" style="background-color: white;"&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;That's all I got for now, so again, welcome to Google+, and I'll catch you all later.&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: transparent;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-eX7FCpDCwQg/TwKlMeyJu3I/AAAAAAAADhQ/vEfZZ3wCK9c/s1600/GPlusLogo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://1.bp.blogspot.com/-eX7FCpDCwQg/TwKlMeyJu3I/AAAAAAAADhQ/vEfZZ3wCK9c/s320/GPlusLogo.jpeg" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Million thanks +&lt;a href="https://plus.google.com/100035762233109552669/posts" target="_blank"&gt;DeAno Jackson&lt;/a&gt;.&amp;nbsp;Million&amp;nbsp;thanks.&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;script src="https://apis.google.com/js/plusone.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;g:plus href="https://plus.google.com/114798913484842413424" size="smallbadge"&gt;&lt;/g:plus&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/mLGRWbqcyzA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/mLGRWbqcyzA/this-is-not-facebook.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-eX7FCpDCwQg/TwKlMeyJu3I/AAAAAAAADhQ/vEfZZ3wCK9c/s72-c/GPlusLogo.jpeg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2012/01/this-is-not-facebook.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-3000528253335409837</guid><pubDate>Sat, 31 Dec 2011 23:09:00 +0000</pubDate><atom:updated>2012-08-05T09:13:37.701-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">framework</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><title>brunch - building HTML5 applications</title><description>Oh yeah! That's what I was looking for.&amp;nbsp;&lt;b&gt;brunch&lt;/b&gt; is another framework with rails like app layout and structure and combining some of the very best existing frameworks. &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Nice example &lt;i&gt;(brunch todos)&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;npm package&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Documentation&lt;/b&gt; (yes it's a good point. Some of new products don't have documentation)&lt;/li&gt;
&lt;li&gt;Works well with existing &lt;b&gt;VIM&lt;/b&gt; plugins and &lt;b&gt;TextMate&lt;/b&gt; bundles&lt;/li&gt;
&lt;li&gt;&lt;strike&gt;Has a &lt;b&gt;Google+ page&lt;/b&gt; ^_^ ( come on, circle +&lt;a href="https://plus.google.com/103222632910810384455" target="_blank"&gt;Brunch&lt;/a&gt;&amp;nbsp;)&lt;/strike&gt;&amp;nbsp;no longer exists =(&lt;/li&gt;
&lt;li&gt;Has an &lt;b&gt;IRC channel&lt;/b&gt; at Freenode #brunch&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Let's create new, useful and featureful sites.&lt;br /&gt;
&lt;small&gt;So check this site: &lt;/small&gt;&lt;a href="http://brunch.io/"&gt;http://brunch.io/&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;script src="https://apis.google.com/js/plusone.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;g:plus href="https://plus.google.com/114798913484842413424" size="smallbadge"&gt;&lt;/g:plus&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/vQadXN_AfGc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/vQadXN_AfGc/brunch-building-html5-applications.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/12/brunch-building-html5-applications.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-2760971996500131820</guid><pubDate>Thu, 22 Dec 2011 23:41:00 +0000</pubDate><atom:updated>2011-12-22T15:45:35.557-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">siri</category><category domain="http://www.blogger.com/atom/ns#">iphone</category><category domain="http://www.blogger.com/atom/ns#">holiday</category><category domain="http://www.blogger.com/atom/ns#">movie</category><category domain="http://www.blogger.com/atom/ns#">horror</category><category domain="http://www.blogger.com/atom/ns#">apple</category><title>Siri: The Holiday Horror Movie (Trailer)</title><description>&lt;div&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="335" src="http://www.youtube.com/embed/4KGSi0AoJYs?fs=1" width="600"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;strong&gt;Happy&lt;/strong&gt; &lt;small&gt;&lt;i&gt;(horrible)&lt;/i&gt;&lt;/small&gt; &lt;strong&gt;holidays!&lt;/strong&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/sUdJjeA_lJ4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/sUdJjeA_lJ4/siri-holiday-horror-movie-trailer.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/4KGSi0AoJYs/default.jpg" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/12/siri-holiday-horror-movie-trailer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-4818247190489027387</guid><pubDate>Thu, 03 Nov 2011 18:44:00 +0000</pubDate><atom:updated>2012-01-27T17:40:24.209-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">video</category><category domain="http://www.blogger.com/atom/ns#">samsung galaxy s</category><category domain="http://www.blogger.com/atom/ns#">sgs</category><category domain="http://www.blogger.com/atom/ns#">app</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">gingerbread</category><category domain="http://www.blogger.com/atom/ns#">update</category><category domain="http://www.blogger.com/atom/ns#">audio</category><category domain="http://www.blogger.com/atom/ns#">root</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">apocalypse</category><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">gtalk</category><category domain="http://www.blogger.com/atom/ns#">evil</category><category domain="http://www.blogger.com/atom/ns#">flash</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">chat</category><category domain="http://www.blogger.com/atom/ns#">hack</category><category domain="http://www.blogger.com/atom/ns#">talk</category><title>Google Talk 1.3 with Video and Voice chat vs. Samsung Galaxy S</title><description>First of all: &lt;strong&gt;It's not easy&lt;/strong&gt; (maybe)&lt;br /&gt;
If you used Google you found a lot of &lt;em&gt;howto&lt;/em&gt; about it. Any of them worked for you?&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Yes:&lt;/strong&gt; You are lucky =) This is not your article. Share it and enjoy your gTalk 1.3&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No:&lt;/strong&gt; same problem here. Your are on the way to solve your great problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
What do you need?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Rooted Samsung Galaxy S &lt;small&gt;(or other android device)&lt;/small&gt; with Android 2.3+&lt;/li&gt;
&lt;li&gt;Terminal emulator on your phone (or &lt;code&gt;adb&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Talk 1.3 installer&lt;/li&gt;
&lt;li&gt;A lot of patience&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
What Google says?&lt;/h2&gt;
if you're already looking for a solution on the net, you can find these:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;xda-developers forum =&amp;gt; download a zip and flash (&lt;a href="http://forum.xda-developers.com/showthread.php?t=1056793"&gt;link&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://market.android.com/details?id=com.brainwashstudio.talkinstaller&amp;amp;feature=search_result"&gt;[root] Talk 1.3 Installer&lt;/a&gt; from Market&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
The method&lt;/h2&gt;
The second option is a very good choice but it failed for me. After a quick search I found the root of this problem. You haven't got more space on your &lt;code&gt;/system&lt;/code&gt;.&lt;br /&gt;
If you didn't root (or you don't use Gingerbread) your phone before, just read this artice: &lt;a href="http://blog.code-infection.com/2011/09/galaxy-s-with-android-235-root-with.html"&gt;Galaxy S with Android 2.3.5 (+root) with Heimdall&lt;/a&gt;&lt;br /&gt;
You need more space because now you have now 0 (zero) byte. First of all &lt;code&gt;/system&lt;/code&gt; is mounted in Read-Only mode.
Open your Terminal Emulator (or adb shell). We need to remount it in writable mode.
&lt;br /&gt;
&lt;pre class="prettyprint lang-sh"&gt;# Be the God (root)
su

# check what is the mounted dev and what is its file system
mount | grep system

# remount it
mount -o rw,remount -t rfs /dev/block/stl9 /system

# formula: mount -o rw,remount -t FILE_SYSTEM MOUNTED_DEV /system

# if you need more space (and yes you need)
# delete some non-important files like ringtones
cd /system/media/audio/ringtomes/
rm *.ogg
cd /

# check how many space you have got
df -h | grep system
&lt;/pre&gt;
If you don't have more than 6-7 MBs, delete ^_^ (if you are a rabbit then make backup)&lt;br /&gt;
Ok. Now run &lt;code&gt;Talk 1.3 Installer&lt;/code&gt; and install the latest version.&lt;br /&gt;
&lt;h3&gt;
FINISH&lt;/h3&gt;

&lt;script type="text/javascript" charset="utf-8" src="https://dl.dropbox.com/s/ffh2gtuosl1wvnh/P4DV.min.js?dl=1"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/oKEx4XMYHN0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/oKEx4XMYHN0/google-talk-13-with-video-and-voice.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/11/google-talk-13-with-video-and-voice.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-3748164843315365917</guid><pubDate>Tue, 01 Nov 2011 18:23:00 +0000</pubDate><atom:updated>2011-11-01T11:25:27.840-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">app</category><category domain="http://www.blogger.com/atom/ns#">new</category><category domain="http://www.blogger.com/atom/ns#">gmail</category><category domain="http://www.blogger.com/atom/ns#">update</category><category domain="http://www.blogger.com/atom/ns#">google</category><title>Official Google Blog: Gmail’s new look</title><description>&lt;a href="http://googleblog.blogspot.com/2011/11/gmails-new-look.html?spref=bl"&gt;Official Google Blog: Gmail’s new look&lt;/a&gt;: Back in July we showed you a preview of Gmail's new look, and we’ve been working this summer to make even more updates and improvements. Today, we’re giving you an in-depth look at the new design. If you like what you see, over the next few days you’ll be able to switch to the new look by clicking on Switch to the new look in the bottom-right of Gmail.&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/KA3HCAtBBo8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/KA3HCAtBBo8/official-google-blog-gmails-new-look.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/11/official-google-blog-gmails-new-look.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-1718151175194502758</guid><pubDate>Wed, 19 Oct 2011 09:16:00 +0000</pubDate><atom:updated>2011-10-19T02:16:33.968-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">galaxy</category><category domain="http://www.blogger.com/atom/ns#">nexus</category><category domain="http://www.blogger.com/atom/ns#">ics</category><category domain="http://www.blogger.com/atom/ns#">ice cream sandwich</category><category domain="http://www.blogger.com/atom/ns#">phone</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">android</category><title>Introducing Galaxy Nexus. Simple, beautiful, beyond smart</title><description>&lt;p&gt;&lt;iframe allowfullscreen="" frameborder="0" height="335" src="http://www.youtube.com/embed/-F_ke3rxopc?fs=1" width="600"&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;I have been bought by Google. It's looks pretty cool and impressive. A few days later, I will push a feature list, but now I have no time to do this. But the video itself is good and what it show is even better =)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/JnsXLSXSnPc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/JnsXLSXSnPc/introducing-galaxy-nexus-simple.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/-F_ke3rxopc/default.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/10/introducing-galaxy-nexus-simple.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2204864937328889266.post-3176917919012205634</guid><pubDate>Thu, 06 Oct 2011 23:26:00 +0000</pubDate><atom:updated>2011-10-06T16:42:33.100-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dead</category><category domain="http://www.blogger.com/atom/ns#">die</category><category domain="http://www.blogger.com/atom/ns#">death</category><category domain="http://www.blogger.com/atom/ns#">steve jobs</category><category domain="http://www.blogger.com/atom/ns#">life</category><category domain="http://www.blogger.com/atom/ns#">rip</category><category domain="http://www.blogger.com/atom/ns#">legendary</category><category domain="http://www.blogger.com/atom/ns#">apple</category><title>I have an App for that!</title><description>&lt;img style="display:block; margin-left:auto; margin-right:auto;" src="http://lh4.ggpht.com/-l2M9l8CxRkU/To45G9UOqiI/AAAAAAAACVA/JSzK-Hhh8QU/Steve%252520Jobs.jpeg?imgmax=800" alt="Steve Jobs" title="Steve Jobs.jpeg" border="0" width="600" height="510" /&gt;
&lt;div style='text-align: center;'&gt;
  &lt;small&gt;Image somewhere from the big Internet.
    &lt;div style='font-size: 0.9em;'&gt;(thx &lt;a href="https://twitter.com/#!/ochronus"&gt;@ochronus&lt;/a&gt;)&lt;/div&gt;
  &lt;/small&gt;
&lt;/div&gt;

&lt;p&gt;
  Yes, I know... It's not a fresh news but this image can make me smile.
  I don't like Apple, iPhone and Apple's mentality...
  But i like my &lt;small&gt;(old)&lt;/small&gt; MacPro
  and &lt;span style='text-decoration: line-through;'&gt;liked&lt;/span&gt; like &lt;a href="http://www.apple.com/stevejobs/"&gt;Steve Jobs&lt;/a&gt;.
  I know he is a great man. Yes &lt;em&gt;"is"&lt;/em&gt; not &lt;em&gt;"was"&lt;/em&gt;.
&lt;/p&gt;

&lt;p&gt;
  I can't say such a way he was a genius or a visionary,
  but rather he understood humans well.
  In any case, he was a man whom I couldn't talk with face-to-face while he lived...
  And that is what is really bad.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Code-infection/~4/1wmQ6gzDjO0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Code-infection/~3/1wmQ6gzDjO0/i-have-app-for-that.html</link><author>noreply@blogger.com (Balazs Nadasdi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-l2M9l8CxRkU/To45G9UOqiI/AAAAAAAACVA/JSzK-Hhh8QU/s72-c/Steve%252520Jobs.jpeg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://blog.code-infection.com/2011/10/i-have-app-for-that.html</feedburner:origLink></item></channel></rss>
