<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>bjelic.net</title> <atom:link href="http://www.bjelic.net/feed/" rel="self" type="application/rss+xml" /><link>http://www.bjelic.net</link> <description>Serendipity running machine progressing toward accomplishments.</description> <lastBuildDate>Thu, 16 Feb 2012 09:45:49 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Mozilla Firefox extensions</title><link>http://www.bjelic.net/2012/02/15/productivity/mozilla-firefox-extensions/</link> <comments>http://www.bjelic.net/2012/02/15/productivity/mozilla-firefox-extensions/#comments</comments> <pubDate>Tue, 14 Feb 2012 23:21:04 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[Productivity]]></category> <category><![CDATA[browsing]]></category> <category><![CDATA[digital life]]></category> <category><![CDATA[extensions]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=781</guid> <description><![CDATA[Nowadays the browser extensions shape our browsing experience. Here is a (updated) list of extensions I use in Mozilla Firefox.]]></description> <content:encoded><![CDATA[<p><img
class="alignleft size-full wp-image-1306" title="Add-ons for Firefox 2012-02-16 10-39-25 --" src="http://www.bjelic.net/wp-content/uploads/Add-ons-for-Firefox-2012-02-16-10-39-25-.png" alt="Firefox add-ons site image" width="305" height="150" />Nowadays the browser extensions shape our browsing experience. Here is a list of extensions I use in <a
class="outer" href="http://www.mozilla.com/en-US/firefox/central/">Mozilla Firefox</a>.</p><p><strong></strong>I have also made public the list of my favorite addons on the <a
title="My favorite addons on Mozilla website." href="https://addons.mozilla.org/en-US/firefox/collections/bojanbjelic/favorites/">Mozilla website</a>.</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><ul><li><a
class="outer" href="http://getfirebug.com/">Firebug</a> &#8211; The best thing for web development, irreplaceable really.</li><li><a
class="outer" title="Feedly" href="http://www.feedly.com/">Feedly</a> &#8211; My favorite <abbr
title="Really Simple Syndication">RSS</abbr> reader and sharing toolbox. If you don&#8217;t use it, give it a go &#8211; I am still amazed.</li><li><a
href="https://addons.mozilla.org/en-US/firefox/addon/readability/">Readability</a> &#8211; Convert the page to a more readable format and save to read later (on other devices as well). Good stuff.</li><li><a
class="outer" href="http://www.xuldev.org/firegestures/">Firegestures</a> &#8211; Execute browser commands using mouse gestures for faster browsing.</li><li><a
class="outer" href="https://mozillalabs.com/ubiquity/">AdBlock Plus</a> &#8211; No annoying banners and ads, just content.</li><li><a
href="https://addons.mozilla.org/en-US/firefox/addon/awesome-screenshot-capture-/">Awesome Screenshot &#8211; Capture and Annotate</a> &#8211; The name pretty much explains it all.</li><li><a
class="outer" href="http://www.screengrab.org/">HTML Validator</a> &#8211; Run HTML / XHTML validation in the browser.</li><li><a
class="outer" href="http://www.softwareishard.com/blog/firecookie/">Firecookie</a> &#8211; Nice extension to Firebug dealing with cookies.</li><li><a
class="outer" href="http://developer.yahoo.com/yslow/">YSlow</a> &#8211; Firebug extension by Yahoo team with page loading performance analysis.</li><li><a
class="outer" href="http://www.colorzilla.com/firefox/">ColorZilla</a> &#8211; Color picker, palette generator etc.</li><li><a
class="outer" href="http://quickjavaplugin.blogspot.com/">QuickJava</a> &#8211; The name is a bit misleading, it provides status bar buttons to easily enable / disable JavaScript, Java, Flash, SilverLight, Images and CSS Styles.</li><li><a
class="outer" href="http://ieview.mozdev.org/">IE View</a> &#8211; Just one click to view the same URL in IE.</li></ul><h2>Obsolete</h2><p>Some extensions have become obsolete or I have started using another instead, but that doesn&#8217;t mean they are not awesome anymore. :)</p><ul><li><em><a
href="https://mozillalabs.com/ubiquity/">Ubiquity</a></em> &#8211; Task-centric web browsing, awesome stuff, too bad that it&#8217;s not in development anymore.</li><li><em><a
href="http://www.xmarks.com/">XMarks</a></em> &#8211; Bookmarks synchronization &#8211; not required anymore if you use only Firefox, but can synch across browsers.</li><li><em><a
href="http://www.screengrab.org/">Screengrab!</a></em> &#8211; Save the page as image.</li></ul><p>Share your favorite extensions in the comments, and if you like to improve your browsing experience further have a look at my post on <a
href="http://www.bjelic.net/2010/11/13/tutorials/searching-from-browser-firefox-quick-searches-and-chrome-search-engines/" title="Searching from browser &#8211;  Firefox quick searches and Chrome search engines" rel="bookmark">Firefox quick searches</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2012/02/15/productivity/mozilla-firefox-extensions/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Signal Links</title><link>http://www.bjelic.net/2011/12/05/digital-life-2/signal-links-4/</link> <comments>http://www.bjelic.net/2011/12/05/digital-life-2/signal-links-4/#comments</comments> <pubDate>Mon, 05 Dec 2011 13:46:37 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[archive]]></category> <category><![CDATA[links]]></category> <category><![CDATA[posts]]></category> <category><![CDATA[signal]]></category> <category><![CDATA[tweets]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1252</guid> <description><![CDATA[Interesting stuff I came across from 16. August 2011 to 20. October 2011.]]></description> <content:encoded><![CDATA[<style type='text/css'>#bbpBox_105016763992911872 a { text-decoration:none; color:#00c7f9; }#bbpBox_105016763992911872 a:hover { text-decoration:underline; }</style><div
id='bbpBox_105016763992911872' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Marc Andreessen on Why Software Is Eating the World - WSJ.com <a
href="http://t.co/Jhcdmr1" rel="nofollow">http://t.co/Jhcdmr1</a> via @<a
href="http://twitter.com/intent/user?screen_name=feedly" class="twitter-action">feedly</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 20, 2011 21:42' href='http://twitter.com/#!/bojanbjelic/status/105016763992911872' target='_blank'>August 20, 2011 21:42</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=105016763992911872&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=105016763992911872&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=105016763992911872&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Interesting thinking, but I would say that the world is embracing and running on software. <a
href="http://online.wsj.com/article/SB10001424053111903480904576512250915629460.html">Permalink</a></p> <style type='text/css'>#bbpBox_105972790166953984 a { text-decoration:none; color:#00c7f9; }#bbpBox_105972790166953984 a:hover { text-decoration:underline; }</style><div
id='bbpBox_105972790166953984' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Paranoia (never hurts?) BBC News - When algorithms control the world <a
href="http://t.co/4hl2bBj" rel="nofollow">http://t.co/4hl2bBj</a> <a
href="http://twitter.com/search?q=%23ia" title="#ia">#ia</a> <a
href="http://twitter.com/search?q=%23algorithms" title="#algorithms">#algorithms</a> <a
href="http://twitter.com/search?q=%23futureisnow" title="#futureisnow">#futureisnow</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 23, 2011 13:00' href='http://twitter.com/#!/bojanbjelic/status/105972790166953984' target='_blank'>August 23, 2011 13:00</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=105972790166953984&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=105972790166953984&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=105972790166953984&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>A bit more on the same theme&#8230; <a
href="http://www.bbc.co.uk/news/technology-14306146">Permalink</a></p> <style type='text/css'>#bbpBox_110411824901525504 a { text-decoration:none; color:#f15b24; }#bbpBox_110411824901525504 a:hover { text-decoration:underline; }</style><div
id='bbpBox_110411824901525504' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#faaf40; background-image:url(http://a1.twimg.com/profile_background_images/299857765/tw_background.png);'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>The Evolution of the Web: a nice visualization of Web technologies and evolution of browser capabilities - <a
href="http://t.co/jJlhs1V" rel="nofollow">http://t.co/jJlhs1V</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 4, 2011 19:00' href='http://twitter.com/#!/smashingmag/status/110411824901525504' target='_blank'>September 4, 2011 19:00</a> via <a
href="http://www.hootsuite.com" rel="nofollow" target="blank">HootSuite</a><a
href='https://twitter.com/intent/tweet?in_reply_to=110411824901525504&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=110411824901525504&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=110411824901525504&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=smashingmag'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a3.twimg.com/profile_images/1436684845/avatarC_op_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=smashingmag'>@smashingmag</a><div
style='margin:0; padding-top:2px'>Smashing Magazine</div></div><div
style='clear:both'></div></div></div><p>Beautiful and informative infographic. <a
href="http://evolutionofweb.appspot.com/">Permalink</a></p> <style type='text/css'>#bbpBox_110821540127440896 a { text-decoration:none; color:#00c7f9; }#bbpBox_110821540127440896 a:hover { text-decoration:underline; }</style><div
id='bbpBox_110821540127440896' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Don't keep calm and carry on. <a
href="http://t.co/e32mkYb" rel="nofollow">http://t.co/e32mkYb</a> via <a
href="http://t.co/KoWwSDD" rel="nofollow">http://t.co/KoWwSDD</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 5, 2011 22:08' href='http://twitter.com/#!/bojanbjelic/status/110821540127440896' target='_blank'>September 5, 2011 22:08</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=110821540127440896&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=110821540127440896&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=110821540127440896&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Don&#8217;t just wait for things to happen. <a
href="http://www.flickr.com/photos/blackbeltjones/3365682994/">Permalink</a></p> <style type='text/css'>#bbpBox_113169640980627456 a { text-decoration:none; color:#00c7f9; }#bbpBox_113169640980627456 a:hover { text-decoration:underline; }</style><div
id='bbpBox_113169640980627456' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>I love the expression "infini-surf" in the article - YouTube Founders Aim to Revamp Delicious: <a
href="http://t.co/LxS8ReG" rel="nofollow">http://t.co/LxS8ReG</a> <a
href="http://twitter.com/search?q=%23infinisurf" title="#infinisurf">#infinisurf</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 12, 2011 09:38' href='http://twitter.com/#!/bojanbjelic/status/113169640980627456' target='_blank'>September 12, 2011 09:38</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=113169640980627456&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=113169640980627456&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=113169640980627456&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>The term &#8220;infini-surf&#8221; is just awesome. <a
href="http://www.nytimes.com/2011/09/12/technology/youtube-founders-aim-to-revamp-delicious.html?_r=1&amp;pagewanted=all?src=tp">Permalink</a></p> <style type='text/css'>#bbpBox_113213670288400384 a { text-decoration:none; color:#00c7f9; }#bbpBox_113213670288400384 a:hover { text-decoration:underline; }</style><div
id='bbpBox_113213670288400384' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>RT @<a
href="http://twitter.com/intent/user?screen_name=tablewhite" class="twitter-action">tablewhite</a> Attention: Human Trader, You Are No Longer Needed <a
href="http://t.co/RvAK63P" rel="nofollow">http://t.co/RvAK63P</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 12, 2011 12:33' href='http://twitter.com/#!/bojanbjelic/status/113213670288400384' target='_blank'>September 12, 2011 12:33</a> via <a
href="http://www.feedly.com" rel="nofollow" target="blank">feedly</a><a
href='https://twitter.com/intent/tweet?in_reply_to=113213670288400384&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=113213670288400384&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=113213670288400384&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Machines are taking over? (Not yet) <a
href="http://www.ritholtz.com/blog/2011/09/attention-human-trader-you-are-no-longer-needed/">Permalink</a></p> <style type='text/css'>#bbpBox_118234567588052992 a { text-decoration:none; color:#00c7f9; }#bbpBox_118234567588052992 a:hover { text-decoration:underline; }</style><div
id='bbpBox_118234567588052992' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Scientists use brain imaging to reveal the movies in our mind <a
href="http://t.co/SHEb4HQ8" rel="nofollow">http://t.co/SHEb4HQ8</a> <a
href="http://twitter.com/search?q=%23futureisnow" title="#futureisnow">#futureisnow</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 26, 2011 09:04' href='http://twitter.com/#!/bojanbjelic/status/118234567588052992' target='_blank'>September 26, 2011 09:04</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=118234567588052992&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=118234567588052992&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=118234567588052992&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Generating images from thoughts. <a
href="http://newscenter.berkeley.edu/2011/09/22/brain-movies/">Permalink</a></p> <style type='text/css'>#bbpBox_119374359914758144 a { text-decoration:none; color:#00c7f9; }#bbpBox_119374359914758144 a:hover { text-decoration:underline; }</style><div
id='bbpBox_119374359914758144' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Building the largest Chess AI ever (in JavaScript) - Chess@<a
href="http://twitter.com/home">home</a>: <a
href="http://t.co/Kns73yfn" rel="nofollow">http://t.co/Kns73yfn</a> <a
href="http://twitter.com/search?q=%23ai" title="#ai">#ai</a> <a
href="http://twitter.com/search?q=%23javascript" title="#javascript">#javascript</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on September 29, 2011 12:33' href='http://twitter.com/#!/bojanbjelic/status/119374359914758144' target='_blank'>September 29, 2011 12:33</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=119374359914758144&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=119374359914758144&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=119374359914758144&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>JavaScript is increasingly becoming first-class language, used to solve &#8220;real&#8221; problems instead of just web page interaction. <a
href="http://sylvainzimmer.com/2011/09/06/chessathome-building-largest-chess-ai/">Permalink</a></p> <style type='text/css'>#bbpBox_122936327061778432 a { text-decoration:none; color:#00c7f9; }#bbpBox_122936327061778432 a:hover { text-decoration:underline; }</style><div
id='bbpBox_122936327061778432' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>RT @<a
href="http://twitter.com/intent/user?screen_name=sivers" class="twitter-action">sivers</a>: Wow. Watch as you shoot into space in one minute: <a
href="http://t.co/u09C3S2y" rel="nofollow">http://t.co/u09C3S2y</a> Best thing I've seen in a long time <a
href="http://t.co/opwyhqgW" rel="nofollow">http://t.co/opwyhqgW</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on October 9, 2011 08:27' href='http://twitter.com/#!/bojanbjelic/status/122936327061778432' target='_blank'>October 9, 2011 08:27</a> via <a
href="http://itunes.apple.com/us/app/twitter/id409789998?mt=12" rel="nofollow" target="blank">Twitter for Mac</a><a
href='https://twitter.com/intent/tweet?in_reply_to=122936327061778432&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=122936327061778432&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=122936327061778432&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Since I don&#8217;t think I&#8217;ll become a spaceman &#8211; YouTube it is. <a
href="http://www.youtube.com/watch?v=rvDqoxMUroA&amp;feature=player_detailpage#t=173s">Permalink</a></p> <style type='text/css'>#bbpBox_126052272059842560 a { text-decoration:none; color:#7171b0; }#bbpBox_126052272059842560 a:hover { text-decoration:underline; }</style><div
id='bbpBox_126052272059842560' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#FFFFFF; background-image:url(http://a0.twimg.com/profile_background_images/3882366/zenhabits-background.jpg); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#000000; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>on zenhabits: The Single-Changing Method <a
href="http://t.co/lTQP4qgf" rel="nofollow">http://t.co/lTQP4qgf</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on October 17, 2011 22:49' href='http://twitter.com/#!/zen_habits/status/126052272059842560' target='_blank'>October 17, 2011 22:49</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=126052272059842560&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=126052272059842560&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=126052272059842560&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=zen_habits'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a3.twimg.com/profile_images/1448062965/leopic_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=zen_habits'>@zen_habits</a><div
style='margin:0; padding-top:2px'>Leo Babauta</div></div><div
style='clear:both'></div></div></div><p>I can say that this is the way to changing things around. <a
href="http://zenhabits.net/1/">Permalink</a></p> <style type='text/css'>#bbpBox_127116399876378624 a { text-decoration:none; color:#00c7f9; }#bbpBox_127116399876378624 a:hover { text-decoration:underline; }</style><div
id='bbpBox_127116399876378624' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>So then I realized I took engineering as an art : Steve Wozniak - founder Apple Computers <a
href="http://t.co/y2cgJCLd" rel="nofollow">http://t.co/y2cgJCLd</a> <a
href="http://twitter.com/search?q=%23inovator" title="#inovator">#inovator</a> <a
href="http://twitter.com/search?q=%23engineer" title="#engineer">#engineer</a> <a
href="http://twitter.com/search?q=%23art" title="#art">#art</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on October 20, 2011 21:18' href='http://twitter.com/#!/bojanbjelic/status/127116399876378624' target='_blank'>October 20, 2011 21:18</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=127116399876378624&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=127116399876378624&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=127116399876378624&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>You said it Woz. <a
href="http://oninnovation.com/innovators/detail.aspx?innovator=Wozniak">Permalink</a></p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/12/05/digital-life-2/signal-links-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Evolution Of The JavaScript Loop</title><link>http://www.bjelic.net/2011/11/16/coding/evolution-of-javascript-loop/</link> <comments>http://www.bjelic.net/2011/11/16/coding/evolution-of-javascript-loop/#comments</comments> <pubDate>Wed, 16 Nov 2011 15:13:56 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Coding]]></category> <category><![CDATA[Productivity]]></category> <category><![CDATA[code]]></category> <category><![CDATA[JavaScript]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1221</guid> <description><![CDATA[Sometimes, the way the syntax is changing can lead to huge improvements in coding and readability. One great example is JavaScript's forEach.]]></description> <content:encoded><![CDATA[<p>Doing a bit of testing last week, I have found out that the source code for the <a
href="http://www.bjelic.net/2011/10/23/snippets/game-of-life-javascript-implementation/" title="Game Of Life JavaScript Implementation">Game Of Life JavaScript Implementation</a> is not working with Internet Explorer 7 (IE7).</p><p>It turns out that IE7 doesn&#8217;t support the <code>forEach</code> construct, and in while rewriting it, I noticed how the code becomes so much uglier and less readable, which led me to think about the programming language evolution.</p><p>Here&#8217;s an excerpt for comparison:</p><pre class="brush: jscript; title: ; notranslate">
// in case you're wandering:
// GOOD
_.neighbours.forEach(function (neighbour) {
	sum += +neighbour.alive;
});
</pre><pre class="brush: jscript; title: ; notranslate">
// BAD
for (var i = 0; i &lt; _.neighbours.length; i++) {
	sum += +_.neighbours[i].alive;
}
</pre><blockquote
class="sidenote"><p>Sometimes, the way the syntax is changing can lead to huge improvements in coding and readability. One great example is JavaScript&#8217;s forEach.</p></blockquote><p>Now, while this might not seem like a big difference, I think it&#8217;s <strong>HUGE</strong>.</p><p>Not only we need to introduce a variable to iterate, but we also need to access the array itself. This takes the focus away from the <strong>primary concern</strong>, which is the current element that we want to work with.</p><p>I prefer to just work with the current member of the array instead of focusing on <code>_.neighbours</code> in the loop.</p><p>Now consider the following more complicated example:</p><pre class="brush: jscript; title: ; notranslate">
_.cells.forEach(function (row, i) {
	row.forEach(function (cell, j) {
		neighboursY = neighbourIndexes(j);
		neighbourIndexes(i).forEach(function (x) {
			neighboursY.forEach(function (y) {
				cell.neighbours.push(_.cells[x][y]); // check this
			});
		});
	});
});
</pre><pre class="brush: jscript; title: ; notranslate">
for (i = 0; i &lt; size; i++) {
	for (j = 0; j &lt; size; j++) {
		indexesX = neighbourIndexes(i);
		indexesY = neighbourIndexes(j);
		for (k = 0; k &lt; indexesX.length; k++) {
			for (l = 0; l &lt; indexesY.length; l++) {
				_.cells[i][j].neighbours.push(_.cells[indexesX[k]][indexesY[l]]); // against this
			}
		}
	}
}
</pre><p>Do you see the difference? In the second excerpt, I feel like I can&#8217;t see the tree from the forest. :)</p><p>Another great thing is that the syntax enables the easy refactorization, just take out the function, whereas you would have to rewrite the code.</p><p>All this points to me that the evolution of programming languages is a very good thing in the means of the way we see and work with the code.</p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/11/16/coding/evolution-of-javascript-loop/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Game Of Life JavaScript Implementation</title><link>http://www.bjelic.net/2011/10/23/coding/game-of-life-javascript-implementation/</link> <comments>http://www.bjelic.net/2011/10/23/coding/game-of-life-javascript-implementation/#comments</comments> <pubDate>Sun, 23 Oct 2011 20:24:15 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Coding]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[code]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[software design]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=847</guid> <description><![CDATA[An article about implementing and redesigning the Conway's Game Of Life in JavaScript. ]]></description> <content:encoded><![CDATA[<p>Recently I have come across my old implementation of Conway&#8217;s Game Of Life in JavaScript I have played with a few years ago, had a long look and I didn&#8217;t like it.<br
/> At all.</p><h2>Conway&#8217;s Game Of Life</h2><p>In short, it&#8217;s a cellular automaton, which means that it&#8217;s a matrix of cells where they live or die based on the surroundings to produce the next generation.</p><p>The state of each cell for the next generation is based on simple rules &#8211; three surrounding cells bring life, two cells will maintain the current state, and any other number of surrounding cells will result in death.</p><p
class="clearfix"><p><img
class="alignleft size-full no-border wp-image-1077" title="Example No. 1" src="http://www.bjelic.net/wp-content/uploads/game-of-life-examples-1.png" alt="Example No. 1" width="62" height="62" />Here is an example when there will be one more living cell (green) in the next generation. Since all others have two living neighbors, they will remain alive as well. It will stagnate after that &#8211; no new ones alive, no deaths.</p><p
class="clearfix"><p><img
class="alignleft size-full no-border wp-image-1078" title="game-of-life-examples-2" src="http://www.bjelic.net/wp-content/uploads/game-of-life-examples-2.png" alt="" width="62" height="62" />This one will result in just one living cell in the second generation, and there will be none after that.</p><p
class="clearfix"><p><img
class="alignleft size-full no-border wp-image-1091" title="Example Oscillator" src="http://www.bjelic.net/wp-content/uploads/game-of-life-examples-7.png" alt="Example Oscillator" width="257" height="62" />There are also some specific configurations, such as oscillators, for example this one.</p><p
class="clearfix"><p><img
class="size-full wp-image-1085 no-border alignleft" title="Example Oscillator Marked" src="http://www.bjelic.net/wp-content/uploads/game-of-life-examples-6-marked.png" alt="Example Oscillator Marked" width="62" height="62" />Here&#8217;s an image where each cell is marked with the number of surrounding cells alive, so it might be easier to grok.</p><p>I hope this gives you an idea&#8230; Have a look at <a
title="Conway's Game of Life - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Wikipedia</a> for more detailed information. But let&#8217;s move on.</p><h2>The code</h2><p>But the code was the true problem, so I decided to redesign it, just for the fun of it, and I thought it could be interesting to share this &#8211; the demos, a bit about the code and the redesign process.</p><p>The demos basically do the same thing, and the new one is not much to look at (visually), but this article is about the code redesign process and decisions involved. There will be a new article soon on the subject of visual redesign, so keep a lookout.</p><p> <a
href="http://dl.dropbox.com/u/10964419/gameoflife/game0.html" class="rundemo">View the initial demo</a></p><p> <a
href="http://dl.dropbox.com/u/10964419/gameoflife/game2.html" class="rundemo">View the new demo</a></p><h2>The old</h2><p>Here&#8217;s the full source code of the old version if you like to have a look, but I&#8217;ll overview it piece by piece, so you don&#8217;t need to remember anything&#8230;</p><pre class="brush: jscript; collapse: true; light: false; title: ; toolbar: true; notranslate">
function Cell(i, j) {
	this.Alive = false;
	var el;
	var x = j;
	var y = i;
	var id = &quot;cell&quot;+ i.toString() + j.toString();
	this.Live = function() {
		this.Alive = true;
		el.className = el.className.replace(&quot;false&quot;, &quot;true&quot;);
	}
	this.Die = function() {
		this.Alive = false;
		el.className = el.className.replace(&quot;true&quot;, &quot;false&quot;);
	}
	this.ChangeState = function () {
		var tmp = this.Alive.toString()
		this.Alive = ! this.Alive;
		el.className = el.className.replace(tmp, this.Alive.toString());
	}
	this.Red = function(OnOff) {
		el.className = (OnOff) ? el.className+= &quot; red&quot; : el.className.replace(&quot; red&quot;, &quot;&quot;);
	}
	this.Green = function(OnOff) {
		el.className = (OnOff) ? el.className+= &quot; green&quot; : el.className.replace(&quot; green&quot;, &quot;&quot;);
	}
	this.Element = function (parent) {
		el = document.createElement(&quot;div&quot;);
		el.onclick = function()
		{
			parent.ChangeCellState(x, y);
		}
		el.id = id;
		el.className = &quot;cell &quot;+ this.Alive.toString();
		return el;
	}
}
function GameOfLife(Size, HTMLElementId) {
	var Size = Size;
	var Cells = new Array(Size);
	var Next = new Array(Size);
	var id = HTMLElementId;
	var i, j;
	var el = document.getElementById(id);
	el.style.width = (5*Size) + &quot;px&quot;;
	for(i=0; i&lt;Size; i++) {
		Cells[i] = new Array(Size);
		Next[i] = new Array(Size);
		for(j=0; j&lt;Size; j++) {
			Cells[i][j] = new Cell(i, j);
			el.appendChild( Cells[i][j].Element(this) );
		}
	}
	this.ChangeCellState = function(x, y) {
		Cells[y][x].ChangeState();
	}
	this.RandomStart = function() {
		var OneOrZero = 0;
		var i, j;
		for(i=0; i&lt;Size; i++) {
			for(j=0; j&lt;Size; j++) {
				OneOrZero = Math.round(Math.round(Math.random() * 2)/2);
				if (OneOrZero) Cells[i][j].ChangeState();
			}
		}
	}
	this.NextStep = function () {
		var i, j;
		for(i=0; i&lt;Size; i++) {
			for(j=0; j&lt;Size; j++) {
				var neighboursAlive = NeighboursAlive(i, j);
				switch ( neighboursAlive ) {
					case 3 : {
						Next[i][j] = true;
						break;
					}
					case 2 : {
						Next[i][j] = (Cells[i][j].Alive) ? true : false;
						break;
					}
					default : {
						Next[i][j] = false;
					}
				}
			}
		}
		for(i=0; i&lt;Size; i++)
			for(j=0; j&lt;Size; j++)
				(Next[i][j]) ? Cells[i][j].Live() : Cells[i][j].Die();
	}
	function NeighboursAlive(y, x) {
		var horizontal = new Array( (x&lt;=0) ? Size-1 : x-1, x , (x&gt;=Size-1) ? 0 : x+1 );
		var vertical = new Array( (y&lt;=0) ? Size-1 : y-1, y, (y&gt;=Size-1) ? 0 : y+1 );
		var sum = 0;
		var i, j;
		for (i=0; i&lt;3; i++)
			for (j=0; j&lt;3; j++)
				if( vertical[i]!=y || horizontal[j]!=x ) sum += (Cells[ vertical[i] ][ horizontal[j] ].Alive) ? 1 : 0;
		return sum;
	}
	var playerId;
	var playing = false;
	this.Play = function (name) {
		if (!playing) {
			this.NextStep();
			playerId = setInterval( name +&quot;.NextStep()&quot;, 100);
			playing = true;
		}
	}
	this.Stop = function () {
		if (playing) clearInterval(playerId);
		playing = false;
	}
}
</pre><p>It&#8217;s old school, no selectors, direct HTML elements injection and so on. Looks fine. But not the code.</p><h2>Redesign</h2><p>Ok, let&#8217;s start with the first entity, the cell. Here we go&#8230;</p><h3>Cell class</h3><p>Here is the original Cell class source code.</p><pre class="brush: jscript; title: ; notranslate">
function Cell(i, j) {
	this.Alive = false;
	var el;
	var x = j;
	var y = i;
	var id = &quot;cell&quot;+ i.toString() + j.toString();
	this.Live = function() {
		this.Alive = true;
		el.className = el.className.replace(&quot;false&quot;, &quot;true&quot;);
	}
	this.Die = function() {
		this.Alive = false;
		el.className = el.className.replace(&quot;true&quot;, &quot;false&quot;);
	}
	this.ChangeState = function () {
		var tmp = this.Alive.toString()
		this.Alive = ! this.Alive;
		el.className = el.className.replace(tmp, this.Alive.toString());
	}
	this.Red = function(OnOff) {
		el.className = (OnOff) ? el.className+= &quot; red&quot; : el.className.replace(&quot; red&quot;, &quot;&quot;);
	}
	this.Green = function(OnOff) {
		el.className = (OnOff) ? el.className+= &quot; green&quot; : el.className.replace(&quot; green&quot;, &quot;&quot;);
	}
	this.Element = function (parent) {
		el = document.createElement(&quot;div&quot;);
		el.onclick = function()
		{
			parent.ChangeCellState(x, y);
		}
		el.id = id;
		el.className = &quot;cell &quot;+ this.Alive.toString();
		return el;
	}
}
</pre><p>The first thing that bothered me is that the Cell has a constructor with coordinates. The only place where the Cell uses the coordinate is to let the parent know of the state change, but this is closely related to the next eyesore.</p><p>The Cell knows about the Element that displays it and furthermore &#8211; operates on it, creating the representation and collecting events. While this can be regarded as convenient, it breaks the single responsibility principle, since we have a logical Cell model, but also it&#8217;s dealing with HTML. This means that it&#8217;s tightly coupled with representation.</p><p>So here&#8217;s the redesign.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.cell = function() {
	return {
		alive : false,
		live : function() { this.alive = true; },
		die : function() { this.alive = false; },
		touch : function () { this.alive = ! this.alive; }
	};
};
</pre><p>Much better, right? :)</p><h3>GameOfLife class</h3><p>How about the GameOfLife class&#8230;</p><pre class="brush: jscript; title: ; notranslate">
function GameOfLife(Size, HTMLElementId) {
	var Size = Size;
	var Cells = new Array(Size);
	var Next = new Array(Size);
	var id = HTMLElementId;
	var i, j;
	var el = document.getElementById(id);
	el.style.width = (5*Size) + &quot;px&quot;;
	for(i=0; i&lt;Size; i++) {
		Cells[i] = new Array(Size);
		Next[i] = new Array(Size);
		for(j=0; j&lt;Size; j++) {
			Cells[i][j] = new Cell(i, j);
			el.appendChild( Cells[i][j].Element(this) );
		}
	}
	this.ChangeCellState = function(x, y) {
		Cells[y][x].ChangeState();
	}
	this.RandomStart = function() {
		var OneOrZero = 0;
		var i, j;
		for(i=0; i&lt;Size; i++) {
			for(j=0; j&lt;Size; j++) {
				OneOrZero = Math.round(Math.round(Math.random() * 2)/2);
				if (OneOrZero) Cells[i][j].ChangeState();
			}
		}
	}
	this.NextStep = function () {
		var i, j;
		for(i=0; i&lt;Size; i++) {
			for(j=0; j&lt;Size; j++) {
				var neighboursAlive = NeighboursAlive(i, j);
				switch ( neighboursAlive ) {
					case 3 : {
						Next[i][j] = true;
						break;
					}
					case 2 : {
						Next[i][j] = (Cells[i][j].Alive) ? true : false;
						break;
					}
					default : {
						Next[i][j] = false;
					}
				}
			}
		}
		for(i=0; i&lt;Size; i++)
			for(j=0; j&lt;Size; j++)
				(Next[i][j]) ? Cells[i][j].Live() : Cells[i][j].Die();
	}
	function NeighboursAlive(y, x) {
		var horizontal = new Array( (x&lt;=0) ? Size-1 : x-1, x , (x&gt;=Size-1) ? 0 : x+1 );
		var vertical = new Array( (y&lt;=0) ? Size-1 : y-1, y, (y&gt;=Size-1) ? 0 : y+1 );
		var sum = 0;
		var i, j;
		for (i=0; i&lt;3; i++)
			for (j=0; j&lt;3; j++)
				if( vertical[i]!=y || horizontal[j]!=x ) sum += (Cells[ vertical[i] ][ horizontal[j] ].Alive) ? 1 : 0;
		return sum;
	}
	var playerId;
	var playing = false;
	this.Play = function (name) {
		if (!playing) {
			this.NextStep();
			playerId = setInterval( name +&quot;.NextStep()&quot;, 100);
			playing = true;
		}
	}
	this.Stop = function () {
		if (playing) clearInterval(playerId);
		playing = false;
	}
}
</pre><p>So the GameOfLife class has really a lot of things going on, let&#8217;s have a look at all the things it does.</p><ol><li>Has the Cells (the current generation) and Next matrix (the next generation of cells),</li><li>sets up both</li><li>changes the state of each cell</li><li>finds the neighbors of a cell</li><li>calculates the the next generation</li><li>randomly sets up the Cells matrix</li><li>plays and stops itself.</li></ol><p>Whew.</p><p>Again, coupling with representation?! Seems that I really LOVED doing that back then&#8230;</p><p>Aside from that, I don&#8217;t like how it has the Play and Stop methods, I don&#8217;t think this belongs to this class, so I will extract it to a player a bit later. So here&#8217;s the redesign.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.game = function(size) {
	var next = new Array(size);
	var iterations = 0;
	function neighboursAlive(x, y) {
		var horizontalIndexes = getNeighbourIndexes(x);
		var verticalIndexes = getNeighbourIndexes(y);
		var sum = 0;
		for (var i = 0; i &lt; 3; i++) {
			for (var j = 0; j &lt; 3; j++) {
				if (verticalIndexes[i]!=y || horizontalIndexes[j]!=x) sum += (_.cells[horizontalIndexes[i]][verticalIndexes[j]].alive) ? 1 : 0;
			}
		}
		return sum;
	};
	function getNeighbourIndexes(x) {
		return new Array( (x = size - 1) ? 0 : x + 1 );
	};
	var _ = {
		size : size,
		cells : new Array(size),
		liveRule : 3,
		noChangeRule : 2,
		touch : function(x, y) {
			cells[x][y].touch();
		},
		nextStep : function () {
			var i, j;
			for(i=0; i &lt; size; i++) {
				for(j=0; j &lt; size; j++) {
					var aliveInTheHood = neighboursAlive(i, j);
					switch (aliveInTheHood) {
						case _.liveRule : { next[i][j] = true; break; }
						case _.noChangeRule : {
							next[i][j] = (_.cells[i][j].alive) ? true : false;
							break;
						}
						default : {
							next[i][j] = false;
						}
					}
				}
			}
			for(i=0; i &lt; _.size; i++)
				for(j=0; j &lt; _.size; j++)
					(next[i][j]) ? _.cells[i][j].live() : _.cells[i][j].die();
		}
	};
	for(var i = 0; i &lt; size; i++) {
		_.cells[i] = new Array(size);
		next[i] = new Array(size);
		for(var j = 0; j &lt; size; j++)
			_.cells[i][j] = new gameOfLife.cell();
	};
	return _;
};
</pre><p>While I would say that this is much better, after some thought I still didn&#8217;t like it.</p><p>First of all, I don&#8217;t like all this running around the matrix checking states, calculating next state. Looks too convoluted.</p><div
class="clearfix"><p><a
href="http://www.bjelic.net/wp-content/uploads/michelangelo-finger-of-god-lg1.jpg"><img
class="alignleft size-thumbnail wp-image-1089" title="Michalangelo's Finger Of God" src="http://www.bjelic.net/wp-content/uploads/michelangelo-finger-of-god-lg1-150x150.jpg" alt="Michalangelo's Finger Of God" width="150" height="150" /></a>Second thing can be seen as a philosophical issue too &#8211; I really hate that the game is the divine force deciding the fate of cells. Looking from the software design side, it boils down to the fact that the game is dealing with the state of a cell based on the states of the surrounding cells. Too much cell-dealing stuff in the game object. So I took another go.</p></div><h2>Round two</h2><h3>Cell</h3><p>I have decided to move all the functionality that deals with the state of cells from the game to the cell class itself.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.cell = function () {
	&quot;use strict&quot;;
	var future, _;
	_ = {
		alive : false,
		touch : function () { _.alive = !_.alive; },
		neighbours : [],
		neighboursAlive : function () {
			var sum = 0;
			_.neighbours.forEach(function (neighbour) {
				sum += +neighbour.alive;
			});
			return sum;
		},
		progress : function () {
			if (future === undefined) {
				_.futureIsBright();
			}
			_.alive = future;
			future = undefined;
		},
		futureIsBright : function () {
			if (future === undefined) {
				var neighboursAlive = _.neighboursAlive();
				future = neighboursAlive === gameOfLife.cell.neighboursToLive || (_.alive &amp;&amp; neighboursAlive === gameOfLife.cell.neighboursToStagnate);
			}
			return future;
		}
	};
	return _;
};
gameOfLife.cell.neighboursToLive = 3;
gameOfLife.cell.neighboursToStagnate = 2;
</pre><p>So while the cell class now is nowhere clean as in the first round, it looks better.</p><p>The cell is now aware of its neighbors, talks to them, can see into the future and progress. :)</p><p>The neighbor&#8217;s changes awareness is possible due to the fact that the <i>objects</i> are passed by reference in JavaScript, so all changes that happen to neighbors will be visible because only the references are held, not the actual values.</p><p>Additionally, the game rules are now extracted to static variables on cell object.</p><p>To accommodate these changes, the game object has to change also, so the new version is below.</p><h3>Game</h3><pre class="brush: jscript; title: ; notranslate">
gameOfLife.game = function (size) {
	&quot;use strict&quot;;
	var _, i, j;
	_ = {
		cells : [],
		touch : function (x, y) {
			_.cells[x][y].touch();
		},
		progress : function () {
			_.cells.forEach(function (row) {
				row.forEach(function (cell) {
					cell.futureIsBright();
				});
			});
			_.cells.forEach(function (row) {
				row.forEach(function (cell) {
					cell.progress();
				});
			});
		}
	};
	function correctIndex(x) {
		return (x &lt; 0) ? size - 1 : ((x &gt; size - 1) ? 0 : x);
	}
	function neighbourIndexes(x) {
		return [correctIndex(x - 1), x, correctIndex(x + 1)];
	}
	for (i = 0; i &lt; size; i++) {
		_.cells[i] = [];
		for (j = 0; j &lt; size; j++) {
			_.cells[i][j] = new gameOfLife.cell();
		}
	}
	_.cells.forEach(function (row, i) {
		row.forEach(function (cell, j) {
			neighbourIndexes(i).forEach(function (x) {
				neighbourIndexes(j).forEach(function (y) {
					cell.neighbours.push(_.cells[x][y]);
				});
			});
			cell.neighbours.splice(4, 1);
		});
	});
	return _;
};
</pre><p>The game now has only the cell matrix setup role and the access point to progress to next generation. Much better.</p><p>I played with the idea of using recursion to propagate setting the future state on all cells instead of running two loops in the propagate method, but I easily ran into an stack overflow, so sticking with the less elegant but practical solution.</p><h3>Player</h3><p>As I said before, I didn&#8217;t like how the game had play and stop methods, so the logic to run the game is now moved to the player object.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.player = function (game, screens) {
	&quot;use strict&quot;;
	var i, playerId, refreshScreens, _;
	for (i = 0; i &lt; screens.length; i++) {
		screens[i].setup(game);
	}
	refreshScreens = function () {
		var i;
		for (i = 0; i &lt; screens.length; i++) {
			screens[i].refresh();
		}
	};
	_ = {
		speed : 100,
		play : function () {
			playerId = window.setInterval(_.step, _.speed);
		},
		on : function () {
			refreshScreens();
		},
		step : function () {
			game.progress();
			refreshScreens();
		},
		stop : function () {
			if (playerId) {
				window.clearInterval(playerId);
			}
		}
	};
	return _;
};
</pre><p>Simple stuff, allowing better modularity.</p><h3>Screen</h3><p>This is the concept that will enable different visual representations of the game. But it&#8217;s pretty simple for now.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.simpleScreen = function () {
	&quot;use strict&quot;;
	var game, el;
	return {
		setup : function (game1, elementId) {
			game = game1;
			el = document.getElementById(elementId === undefined ? 'simpleRenderer' : elementId);
		},
		refresh : function () {
			var i, j, html;
			html = '';
			for (i = 0; i &lt; game.cells.length; i++) {
				for (j = 0; j &lt; game.cells[i].length; j++) {
					html = html.concat(game.cells[i][j].alive ? '&amp;diams;' : '.');
				}
				html = html.concat('&lt;br/&gt;');
			}
			el.innerHTML = html;
		}
	};
};
</pre><h3>Random start</h3><p>You may wander where did the random start method go. Since it doesn&#8217;t have anything to do with the game, but is just a fancy feature, I have extracted it to a separate function.</p><pre class="brush: jscript; title: ; notranslate">
gameOfLife.randomize = function(game) {
	var i, j;
	for(i = 0; i &lt; game.cells.length; i++) {
		for(j = 0; j &lt; game.cells.length; j++) {
			if (Math.round(Math.round(Math.random() * 2) / 2))
				game.cells[i][j].touch();
		}
	}
};
</pre><h2>Done</h2><p>At the end of this exercise I am pretty much satisfied with the outcome.</p><p>The redesign ended up looking like MVC pattern, where the model domain consists of cell and game classes, the player class is the controller, and the screen class is the view.</p><p>Here&#8217;s the demo, the tools and full code if you&#8217;re interested to have a look. In the next article I&#8217;ll work on the visual representation of the game, and I think it will be pretty interesting.</p><pre class="brush: jscript; collapse: true; light: false; title: ; toolbar: true; notranslate">
window.gameOfLife = {};
gameOfLife.cell = function () {
	&quot;use strict&quot;;
	var future, askNeighboursFuture, _;
	askNeighboursFuture = function () {
		_.neighbours.forEach(function (neighbour) {
			neighbour.futureIsBright();
		});
	};
	_ = {
		alive : false,
		touch : function () { _.alive = !_.alive; },
		neighbours : [],
		neighboursAlive : function () {
			var sum = 0;
			_.neighbours.forEach(function (neighbour) {
				sum += +neighbour.alive;
			});
			return sum;
		},
		progress : function () {
			if (future === undefined) {
				_.futureIsBright();
			}
			_.alive = future;
			future = undefined;
		},
		futureIsBright : function () {
			if (future === undefined) {
				var neighboursAlive = _.neighboursAlive();
				future = neighboursAlive === gameOfLife.cell.neighboursToLive || (_.alive &amp;&amp; neighboursAlive === gameOfLife.cell.neighboursToStagnate);
				askNeighboursFuture();
			}
			return future;
		}
	};
	return _;
};
gameOfLife.cell.neighboursToLive = 3;
gameOfLife.cell.neighboursToStagnate = 2;
gameOfLife.game = function (size) {
	&quot;use strict&quot;;
	var _, i, j;
	_ = {
		cells : [],
		touch : function (x, y) {
			_.cells[x][y].touch();
		},
		progress : function () {
			_.cells.forEach(function (row) {
				row.forEach(function (cell) {
					cell.progress();
				});
			});
		}
	};
	function neighbourIndexes(x) {
		return [correctIndex(x - 1), x, correctIndex(x + 1)];
	}
	function correctIndex(x) {
		return (x &lt; 0) ? size - 1 : ((x &gt; size - 1) ? 0 : x);
	};
	for (i = 0; i &lt; size; i++) {
		_.cells[i] = [];
		for (j = 0; j &lt; size; j++) {
			_.cells[i][j] = new gameOfLife.cell();
		}
	}
	_.cells.forEach(function (row, i) {
		row.forEach(function (cell, j) {
			neighbourIndexes(i).forEach(function (x) {
				neighbourIndexes(j).forEach(function (y) {
					cell.neighbours.push(_.cells[x][y]);
				});
			});
			cell.neighbours.splice(4, 1);
		});
	});
	return _;
};
gameOfLife.randomize = function (game) {
	&quot;use strict&quot;;
	var i, j;
	for (i = 0; i &lt; game.cells.length; i++) {
		for (j = 0; j &lt; game.cells.length; j++) {
			game.cells[i][j].alive = (Math.random() &gt; 0.5);
		}
	}
};
gameOfLife.player = function (game, screens) {
	&quot;use strict&quot;;
	var i, playerId, refreshScreens, _;
	for (i = 0; i &lt; screens.length; i++) {
		screens[i].setup(game);
	}
	refreshScreens = function () {
		var i;
		for (i = 0; i &lt; screens.length; i++) {
			screens[i].refresh();
		}
	};
	_ = {
		speed : 100,
		play : function () {
			playerId = window.setInterval(_.step, _.speed);
		},
		on : function () {
			refreshScreens();
		},
		step : function () {
			game.progress();
			refreshScreens();
		},
		stop : function () {
			if (playerId) {
				window.clearInterval(playerId);
			}
		}
	};
	return _;
};
gameOfLife.touchScreen = function () {
	&quot;use strict&quot;;
	var game, el;
	var _ = {
		setup : function (game1, elementId) {
			var i, j, dot;
			game = game1;
			el = document.getElementById(elementId === undefined ? 'simpleRenderer' : elementId);
			for (i = 0; i &lt; game.cells.length; i++) {
				for (j = 0; j &lt; game.cells[i].length; j++) {
					dot = document.createElement('a');
					dot.addEventListener('click', _.touch(i, j), false);
					el.appendChild(dot);
					dot = null;
				}
				el.appendChild(document.createElement('br'));
			}
		},
		refresh : function () {
			var i, j, dots, dot;
			dots = el.getElementsByTagName('a');
			for (i = 0; i &lt; game.cells.length; i++) {
				for (j = 0; j &lt; game.cells[i].length; j++) {
					dot = dots[j + i * game.cells.length];
					dot.className = (game.cells[i][j].alive) ? 'cell alive' : 'cell dead';
				}
			}
		},
		touch : function(x, y) {
			return function() { game.touch(x, y); _.refresh(); };
		}
	};
	return _;
};
gameOfLife.simpleScreen = function () {
	&quot;use strict&quot;;
	var game, el;
	return {
		setup : function (game1, elementId) {
			game = game1;
			el = document.getElementById(elementId === undefined ? 'simpleRenderer' : elementId);
		},
		refresh : function () {
			var i, j, html;
			html = '';
			for (i = 0; i &lt; game.cells.length; i++) {
				for (j = 0; j &lt; game.cells[i].length; j++) {
					html = html.concat(game.cells[i][j].alive ? '&amp;diams;' : '.');
				}
				html = html.concat('&lt;br/&gt;');
			}
			el.innerHTML = html;
		}
	};
};
function run() {
	gameOfLife.spaceship = new gameOfLife.game(30);
	gameOfLife.spaceship.cells[0][2].alive = true;
	gameOfLife.spaceship.cells[1][3].alive = true;
	gameOfLife.spaceship.cells[2][1].alive = true;
	gameOfLife.spaceship.cells[2][2].alive = true;
	gameOfLife.spaceship.cells[2][3].alive = true;
	gameOfLife.station = new gameOfLife.player(gameOfLife.spaceship, [new gameOfLife.touchScreen()]);
	gameOfLife.station.on();
}
</pre><p><a
href="http://dl.dropbox.com/u/10964419/gameoflife/game2.html" class="rundemo">View the new demo</a></p><p>The tools I have used:</p><ul><li><a
href="http://www.jslint.com/">JSLint</a>, The JavaScript Code Quality Tool</li><li><a
href="http://docs.jquery.com/QUnit">QUnit</a>, An easy-to-use JavaScript Unit Testing framework</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/10/23/coding/game-of-life-javascript-implementation/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Signal Links</title><link>http://www.bjelic.net/2011/08/16/digital-life-2/signal-links-3/</link> <comments>http://www.bjelic.net/2011/08/16/digital-life-2/signal-links-3/#comments</comments> <pubDate>Tue, 16 Aug 2011 08:42:53 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[archive]]></category> <category><![CDATA[links]]></category> <category><![CDATA[posts]]></category> <category><![CDATA[signal]]></category> <category><![CDATA[tweets]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1169</guid> <description><![CDATA[Posts, photos, interesting stuff I enjoyed during past couple of weeks (18. July 2011 - 16. August 2011).]]></description> <content:encoded><![CDATA[<p>It&#8217;s truly interesting how we deal with great amounts of interrelated data, these terms explain it in a colorful way.</p> <style type='text/css'>#bbpBox_96262390588506113 a { text-decoration:none; color:#0084B4; }#bbpBox_96262390588506113 a:hover { text-decoration:underline; }</style><div
id='bbpBox_96262390588506113' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ffffff; background-image:url(http://a3.twimg.com/profile_background_images/139639310/liftlogo.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Daily Idioms: "information parkour", "lean logic", "Placebook", "Bitizen Configurator"</span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 27, 2011 17:55' href='http://twitter.com/#!/nicolasnova/status/96262390588506113' target='_blank'>July 27, 2011 17:55</a> via <a
href="http://twitter.com" rel="nofollow" target="blank">Tweetie for Mac</a><a
href='https://twitter.com/intent/tweet?in_reply_to=96262390588506113&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=96262390588506113&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=96262390588506113&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=nicolasnova'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a3.twimg.com/profile_images/1115221962/nicolas_nova_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=nicolasnova'>@nicolasnova</a><div
style='margin:0; padding-top:2px'>nicolasnova</div></div><div
style='clear:both'></div></div></div><p>Nice tool to do a quick test how a site performs on different resolutions.</p> <style type='text/css'>#bbpBox_95948269078847488 a { text-decoration:none; color:#00c7f9; }#bbpBox_95948269078847488 a:hover { text-decoration:underline; }</style><div
id='bbpBox_95948269078847488' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Nice <a
href="http://twitter.com/search?q=%23tool" title="#tool">#tool</a>: Screenfly by QuirkTools &#8212; <a
href="http://twitter.com/search?q=%23Test" title="#Test">#Test</a> Your Website at Different <a
href="http://twitter.com/search?q=%23Screen" title="#Screen">#Screen</a> <a
href="http://twitter.com/search?q=%23Resolutions" title="#Resolutions">#Resolutions</a> <a
href="http://t.co/EqO3Uwp" rel="nofollow">http://t.co/EqO3Uwp</a> <a
href="http://twitter.com/search?q=%23webdevelopment" title="#webdevelopment">#webdevelopment</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 26, 2011 21:07' href='http://twitter.com/#!/bojanbjelic/status/95948269078847488' target='_blank'>July 26, 2011 21:07</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=95948269078847488&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=95948269078847488&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=95948269078847488&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Ahh, the dreams of becoming an astronaut&#8230; Great photos.</p> <style type='text/css'>#bbpBox_95778343139545088 a { text-decoration:none; color:#00c7f9; }#bbpBox_95778343139545088 a:hover { text-decoration:underline; }</style><div
id='bbpBox_95778343139545088' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Photos in the Space Project are really something. <a
href="http://t.co/sWuYg9T" rel="nofollow">http://t.co/sWuYg9T</a> Overview here: <a
href="http://t.co/didDtD6" rel="nofollow">http://t.co/didDtD6</a> <a
href="http://twitter.com/search?q=%23space" title="#space">#space</a> <a
href="http://twitter.com/search?q=%23photos" title="#photos">#photos</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 26, 2011 09:51' href='http://twitter.com/#!/bojanbjelic/status/95778343139545088' target='_blank'>July 26, 2011 09:51</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=95778343139545088&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=95778343139545088&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=95778343139545088&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Extraordinary to see this kind of robot behavior.</p> <style type='text/css'>#bbpBox_98358415281225728 a { text-decoration:none; color:#00c7f9; }#bbpBox_98358415281225728 a:hover { text-decoration:underline; }</style><div
id='bbpBox_98358415281225728' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Swarming Quadrotor Landing Pad <a
href="http://feedly.com/k/nDeY5w" rel="nofollow">http://feedly.com/k/nDeY5w</a> <a
href="http://twitter.com/search?q=%23robots" title="#robots">#robots</a> <a
href="http://twitter.com/search?q=%23futureisnow" title="#futureisnow">#futureisnow</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 2, 2011 12:44' href='http://twitter.com/#!/bojanbjelic/status/98358415281225728' target='_blank'>August 2, 2011 12:44</a> via <a
href="http://www.feedly.com" rel="nofollow" target="blank">feedly</a><a
href='https://twitter.com/intent/tweet?in_reply_to=98358415281225728&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=98358415281225728&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=98358415281225728&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Cool project, something I just HAVE TO play around with.</p> <style type='text/css'>#bbpBox_97606517817212928 a { text-decoration:none; color:#00c7f9; }#bbpBox_97606517817212928 a:hover { text-decoration:underline; }</style><div
id='bbpBox_97606517817212928' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>"@<a
href="http://twitter.com/intent/user?screen_name=github_csharp" class="twitter-action">github_csharp</a>: JSIL - MSIL to Javascript Compiler <a
href="http://t.co/j6RpU5W" rel="nofollow">http://t.co/j6RpU5W</a>" looks very interesting!</span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 31, 2011 10:56' href='http://twitter.com/#!/bojanbjelic/status/97606517817212928' target='_blank'>July 31, 2011 10:56</a> via <a
href="http://twitter.com/download/android" rel="nofollow" target="blank">Twitter for Android</a><a
href='https://twitter.com/intent/tweet?in_reply_to=97606517817212928&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=97606517817212928&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=97606517817212928&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Sometimes it&#8217;s worthy to just look at the world around. Great photo and message.</p> <style type='text/css'>#bbpBox_99386708214292480 a { text-decoration:none; color:#00c7f9; }#bbpBox_99386708214292480 a:hover { text-decoration:underline; }</style><div
id='bbpBox_99386708214292480' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>The world for a while -<a
href="http://t.co/6ykVt2O" rel="nofollow">http://t.co/6ykVt2O</a> <a
href="http://twitter.com/search?q=%23lifeisgood" title="#lifeisgood">#lifeisgood</a> <a
href="http://twitter.com/search?q=%23photos" title="#photos">#photos</a> <a
href="http://twitter.com/search?q=%23smile" title="#smile">#smile</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 5, 2011 08:50' href='http://twitter.com/#!/bojanbjelic/status/99386708214292480' target='_blank'>August 5, 2011 08:50</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=99386708214292480&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=99386708214292480&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=99386708214292480&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>At first it was surprising to see how is minority dictating the majority opinion, but when I consider that the minority &#8220;holds an unshakable belief&#8221;, not really.</p> <style type='text/css'>#bbpBox_102016267237601281 a { text-decoration:none; color:#00c7f9; }#bbpBox_102016267237601281 a:hover { text-decoration:underline; }</style><div
id='bbpBox_102016267237601281' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Minority rules: Scientists discover tipping point for the spread of ideas <a
href="http://t.co/nMNcEA6" rel="nofollow">http://t.co/nMNcEA6</a> (10% minority actually) <a
href="http://twitter.com/search?q=%23ideas" title="#ideas">#ideas</a> <a
href="http://twitter.com/search?q=%23ideaadaptation" title="#ideaadaptation">#ideaadaptation</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 12, 2011 14:59' href='http://twitter.com/#!/bojanbjelic/status/102016267237601281' target='_blank'>August 12, 2011 14:59</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=102016267237601281&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=102016267237601281&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=102016267237601281&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>I hope this will help me remember the milk. :)</p> <style type='text/css'>#bbpBox_101929775739838464 a { text-decoration:none; color:#00c7f9; }#bbpBox_101929775739838464 a:hover { text-decoration:underline; }</style><div
id='bbpBox_101929775739838464' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Smart skin: Electronics that stick and stretch like a temporary tattoo (w/ video) <a
href="http://t.co/gnM7gii" rel="nofollow">http://t.co/gnM7gii</a> via @<a
href="http://twitter.com/intent/user?screen_name=feedly" class="twitter-action">feedly</a> <a
href="http://twitter.com/search?q=%23futureisnow" title="#futureisnow">#futureisnow</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on August 12, 2011 09:15' href='http://twitter.com/#!/bojanbjelic/status/101929775739838464' target='_blank'>August 12, 2011 09:15</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=101929775739838464&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=101929775739838464&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=101929775739838464&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1481662682/IMG_3691-1_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/08/16/digital-life-2/signal-links-3/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Android apps for everyday use</title><link>http://www.bjelic.net/2011/08/08/digital-life-2/android-apps/</link> <comments>http://www.bjelic.net/2011/08/08/digital-life-2/android-apps/#comments</comments> <pubDate>Mon, 08 Aug 2011 09:32:57 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[android]]></category> <category><![CDATA[apps]]></category> <category><![CDATA[mobile]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1011</guid> <description><![CDATA[I just went through a process of installing the apps that I use every day - so here they are.]]></description> <content:encoded><![CDATA[<p><a
href="http://www.bjelic.net/wp-content/uploads/android1299311465678-e1312795071292.png"><img
class="alignleft size-thumbnail wp-image-1147" title="android" src="http://www.bjelic.net/wp-content/uploads/android1299311465678-e1312795071292-150x150.png" alt="android" width="150" height="150" /></a>I just went through a process of installing the apps that I use every day, after making <a
title="Android 2.3 Platform Highlights | Android Developers" href="http://developer.android.com/sdk/android-2.3-highlights.html">Gingerbread</a> work on my <a
title="Samsung Galaxy S" href="http://www.samsung.com/global/microsite/galaxyswifi/gs4/gs4_main.html">Galaxy S</a> using this <a
title="How To Update Samsung Galaxy S I9000 to Gingerbread XXJVP 2.3.4 Firmware | Android Advices" href="http://androidadvices.com/how-to-update-samsung-galaxy-s-i9000-to-gingerbread-xxjvp-2-3-4-firmware/">unofficial guide</a> (damn you, Samsung!) &#8211; so here they are.</p><h2>Dropbox</h2><p>To keep files synchronized on all the devices.</p><h2>KeePassDroid</h2><p>I stick to the policy of having a password for each service. Which means I don&#8217;t know half by heart &#8211; this is a great app to keep up.</p><h2>Google Translate</h2><p>My native language is Serbian, I work on English, and live in Vienna where people speak German. So translation is &#8230; hm what was that word&#8230; ;)</p><h2>Springpad</h2><p>Notes, bookmarks &#8211; organizer that stays in synch, works offline too. There&#8217;s a web app that is more convenient when at the computer.</p><h2>Google Docs</h2><p>Office online. &#8217;nuff said.</p><h2>AndFtp</h2><p>Great little FTP client to do things on the move.</p><h2>Feedly</h2><p>To keep up with the information overload ;) &#8211; phenomenal RSS reader, works with Google reader.</p><h2>Shush! Ringer Restorer</h2><p>I never remember to turn the ringer back on when I put my phone to silent. This one fixes that. :)</p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/08/08/digital-life-2/android-apps/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Signal Links</title><link>http://www.bjelic.net/2011/07/18/digital-life-2/signal-links-2/</link> <comments>http://www.bjelic.net/2011/07/18/digital-life-2/signal-links-2/#comments</comments> <pubDate>Mon, 18 Jul 2011 09:33:35 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[archive]]></category> <category><![CDATA[links]]></category> <category><![CDATA[posts]]></category> <category><![CDATA[signal]]></category> <category><![CDATA[tweets]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1129</guid> <description><![CDATA[A couple of posts and videos I enjoyed for the previous week (11. July 2011 - 18. July 2011).]]></description> <content:encoded><![CDATA[<p>HTML and CSS now provide to use inline images, not requiring another HTTP request.</p> <style type='text/css'>#bbpBox_92572136878772224 a { text-decoration:none; color:#00c7f9; }#bbpBox_92572136878772224 a:hover { text-decoration:underline; }</style><div
id='bbpBox_92572136878772224' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Only for specific cases. RT An interesting Data URIs/CSS technique: Inline Images with Data URLs - <a
href="http://t.co/U6uR6vP" rel="nofollow">http://t.co/U6uR6vP</a> @<a
href="http://twitter.com/intent/user?screen_name=smashingmag" class="twitter-action">smashingmag</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 17, 2011 13:31' href='http://twitter.com/#!/bojanbjelic/status/92572136878772224' target='_blank'>July 17, 2011 13:31</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=92572136878772224&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=92572136878772224&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=92572136878772224&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1195976747/bojan_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Interesting video on data visualization.</p> <style type='text/css'>#bbpBox_91127931828580352 a { text-decoration:none; color:#00c7f9; }#bbpBox_91127931828580352 a:hover { text-decoration:underline; }</style><div
id='bbpBox_91127931828580352' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Interesting stuff... Numbers, Words and Colors | MIT World <a
href="http://t.co/Yxvp2l0" rel="nofollow">http://t.co/Yxvp2l0</a> <a
href="http://twitter.com/search?q=%23video" title="#video">#video</a> <a
href="http://twitter.com/search?q=%23visualization" title="#visualization">#visualization</a> <a
href="http://twitter.com/search?q=%23infographics" title="#infographics">#infographics</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 13, 2011 13:52' href='http://twitter.com/#!/bojanbjelic/status/91127931828580352' target='_blank'>July 13, 2011 13:52</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=91127931828580352&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=91127931828580352&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=91127931828580352&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1195976747/bojan_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p>Please take note and use in case of stress. :)</p> <style type='text/css'>#bbpBox_91234492097904640 a { text-decoration:none; color:#00c7f9; }#bbpBox_91234492097904640 a:hover { text-decoration:underline; }</style><div
id='bbpBox_91234492097904640' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Simply wonderful. The magic button &#8212; Make Everything OK <a
href="http://t.co/xVINvGk" rel="nofollow">http://t.co/xVINvGk</a> <a
href="http://twitter.com/search?q=%23ifeelbetter" title="#ifeelbetter">#ifeelbetter</a> <a
href="http://twitter.com/search?q=%23everythingisok" title="#everythingisok">#everythingisok</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 13, 2011 20:56' href='http://twitter.com/#!/bojanbjelic/status/91234492097904640' target='_blank'>July 13, 2011 20:56</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=91234492097904640&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=91234492097904640&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=91234492097904640&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1195976747/bojan_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/07/18/digital-life-2/signal-links-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Signal Links</title><link>http://www.bjelic.net/2011/07/11/digital-life-2/signal-links/</link> <comments>http://www.bjelic.net/2011/07/11/digital-life-2/signal-links/#comments</comments> <pubDate>Mon, 11 Jul 2011 13:51:55 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Digital Life]]></category> <category><![CDATA[archive]]></category> <category><![CDATA[links]]></category> <category><![CDATA[posts]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1103</guid> <description><![CDATA[Links and posts I enjoyed for the previous week (4. July 2011 - 11. July 2011).]]></description> <content:encoded><![CDATA[<p>I am starting this post series as a way for me to preserve some things I have enjoyed.</p><p>So here are some links and posts I enjoyed for the previous week (4. July 2011 &#8211; 11. July 2011).</p> <style type='text/css'>#bbpBox_90336727775977472 a { text-decoration:none; color:#00c7f9; }#bbpBox_90336727775977472 a:hover { text-decoration:underline; }</style><div
id='bbpBox_90336727775977472' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>JavascriptTips - jslibs - JavaScript language advanced tips and tricks - <a
href="http://t.co/aRGGGh5" rel="nofollow">http://t.co/aRGGGh5</a> <a
href="http://twitter.com/search?q=%23javascript" title="#javascript">#javascript</a> <a
href="http://twitter.com/search?q=%23webdevelopment" title="#webdevelopment">#webdevelopment</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 11, 2011 09:28' href='http://twitter.com/#!/bojanbjelic/status/90336727775977472' target='_blank'>July 11, 2011 09:28</a> via <a
href="http://twitter.com/tweetbutton" rel="nofollow" target="blank">Tweet Button</a><a
href='https://twitter.com/intent/tweet?in_reply_to=90336727775977472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=90336727775977472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=90336727775977472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1195976747/bojan_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p><a
href="http://code.google.com/p/jslibs/wiki/JavascriptTips">http://code.google.com/p/jslibs/wiki/JavascriptTips</a></p> <style type='text/css'>#bbpBox_90059257046761472 a { text-decoration:none; color:#080fe7; }#bbpBox_90059257046761472 a:hover { text-decoration:underline; }</style><div
id='bbpBox_90059257046761472' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#000000; background-image:url(http://a3.twimg.com/profile_background_images/52755801/nasa_twitter3.jpg); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#000000; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>At 10:05a.m. EDT, space shuttle Atlantis began the nine-minute Rendezvous Pitch Maneuver, or &#8220;backflip.&#8221; - live at <a
href="http://t.co/0FTPto2" rel="nofollow">http://t.co/0FTPto2</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 10, 2011 15:06' href='http://twitter.com/#!/NASA/status/90059257046761472' target='_blank'>July 10, 2011 15:06</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=90059257046761472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=90059257046761472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=90059257046761472&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=NASA'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/188302352/nasalogo_twitter_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=NASA'>@NASA</a><div
style='margin:0; padding-top:2px'>NASA</div></div><div
style='clear:both'></div></div></div><p>There was the live video feed of the last shuttle flight that I watched on my Android Samsung Galaxy S.</p> <style type='text/css'>#bbpBox_88905200139640832 a { text-decoration:none; color:#00c7f9; }#bbpBox_88905200139640832 a:hover { text-decoration:underline; }</style><div
id='bbpBox_88905200139640832' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ebebeb; background-image:url(http://a1.twimg.com/profile_background_images/184055466/ill-v-9.png); background-repeat:no-repeat'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>Collecting all the shims, fallbacks, and polyfills to implant html5 to browsers with no support. <a
href="http://t.co/k6Ptr9t" rel="nofollow">http://t.co/k6Ptr9t</a> <a
href="http://twitter.com/search?q=%23html5" title="#html5">#html5</a> <a
href="http://twitter.com/search?q=%23browsers" title="#browsers">#browsers</a></span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 7, 2011 10:40' href='http://twitter.com/#!/bojanbjelic/status/88905200139640832' target='_blank'>July 7, 2011 10:40</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=88905200139640832&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=88905200139640832&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=88905200139640832&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=bojanbjelic'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1195976747/bojan_normal.png' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=bojanbjelic'>@bojanbjelic</a><div
style='margin:0; padding-top:2px'>Bojan Bjelic</div></div><div
style='clear:both'></div></div></div><p><a
href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills">https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills</a></p> <style type='text/css'>#bbpBox_88143740098711552 a { text-decoration:none; color:#72412c; }#bbpBox_88143740098711552 a:hover { text-decoration:underline; }</style><div
id='bbpBox_88143740098711552' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#d1cdc1; background-image:url(http://a3.twimg.com/profile_background_images/157325454/twilk_background_4ca8e4832a970.jpg);'><div
style='background:#fff; padding:10px; margin:0; min-height:48px; color:#696969; -moz-border-radius:5px; -webkit-border-radius:5px;'><span
style='width:100%; font-size:18px; line-height:22px;'>"What would you do if you weren&#8217;t afraid?"</span><div
class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img
align='middle' src='http://www.bjelic.net/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a
title='tweeted on July 5, 2011 08:14' href='http://twitter.com/#!/shanselman/status/88143740098711552' target='_blank'>July 5, 2011 08:14</a> via web<a
href='https://twitter.com/intent/tweet?in_reply_to=88143740098711552&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-reply-action' title='Reply'><span><em
style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a
href='https://twitter.com/intent/retweet?tweet_id=88143740098711552&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-retweet-action' title='Retweet'><span><em
style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a
href='https://twitter.com/intent/favorite?tweet_id=88143740098711552&related=http://twitter.com/bojanbjelic/' class='bbp-action bbp-favorite-action' title='Favorite'><span><em
style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div
style='float:left; padding:0; margin:0'><a
href='http://twitter.com/intent/user?screen_name=shanselman'><img
style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a2.twimg.com/profile_images/1435911367/image_normal.jpg' /></a></div><div
style='float:left; padding:0; margin:0'><a
style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=shanselman'>@shanselman</a><div
style='margin:0; padding-top:2px'>Scott Hanselman</div></div><div
style='clear:both'></div></div></div><p>This is a question everyone should ask themselves.</p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/07/11/digital-life-2/signal-links/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ahau</title><link>http://www.bjelic.net/2011/06/20/work/ahau/</link> <comments>http://www.bjelic.net/2011/06/20/work/ahau/#comments</comments> <pubDate>Mon, 20 Jun 2011 08:54:45 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Freelance]]></category> <category><![CDATA[Work]]></category> <category><![CDATA[CMS]]></category> <category><![CDATA[CodeIgniter]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[phpBB]]></category> <category><![CDATA[Software architecture]]></category> <category><![CDATA[Web design]]></category> <category><![CDATA[XHTML]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1058</guid> <description><![CDATA[In close collaboration with the client, a new breed of a portal closely integrated with forum was created.]]></description> <content:encoded><![CDATA[<p>In close collaboration with the client, a new breed of portal closely integrated with forum was created.</p><p>The integration with <a
href="http://www.phpbb.com/" title="phpBB &bull; Free and Open Source Forum Software">phpBB</a> was a critical point of development, and the end product fully exploits this.</p><p>The content is on German, <a
href="http://www.ahau.at">check it out</a>.</p> <a
href='http://www.bjelic.net/2011/06/20/work/ahau/attachment/ahau-at-2011-06-20-10-14-08/' title='Ahau - Homepage'><img
width="150" height="150" src="http://www.bjelic.net/wp-content/uploads/ahau.at-2011-06-20-10-14-08-e1308559796165-150x150.png" class="attachment-thumbnail" alt="Screenshot: Ahau - Homepage" title="Ahau - Homepage" /></a> <a
href='http://www.bjelic.net/2011/06/20/work/ahau/attachment/ahau-at-2011-06-20-10-16-12/' title='Ahau - Esoterik section'><img
width="150" height="150" src="http://www.bjelic.net/wp-content/uploads/ahau.at-2011-06-20-10-16-12-150x150.png" class="attachment-thumbnail" alt="Screenshot: Ahau - Esoterik section" title="Ahau - Esoterik section" /></a> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/06/20/work/ahau/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Multiple Values For The Same GET or POST Parameter in ASP.NET MVC</title><link>http://www.bjelic.net/2011/05/16/coding/multiple-values-for-the-same-get-or-post-parameter-in-asp-net-mvc/</link> <comments>http://www.bjelic.net/2011/05/16/coding/multiple-values-for-the-same-get-or-post-parameter-in-asp-net-mvc/#comments</comments> <pubDate>Mon, 16 May 2011 15:36:44 +0000</pubDate> <dc:creator>Bojan Bjelić</dc:creator> <category><![CDATA[Coding]]></category> <category><![CDATA[.NET]]></category> <category><![CDATA[ASP.NET MVC]]></category> <category><![CDATA[C#]]></category> <guid
isPermaLink="false">http://www.bjelic.net/?p=1020</guid> <description><![CDATA[The main advantage of passing multiple values as the same parameter via GET or POST is that it will produce a neatly cast list as the input of the action method.]]></description> <content:encoded><![CDATA[<p>There are situations where you need to pass multiple values for the same parameter to the server.</p><p>Here are possible patterns, just to make it clear:</p><ul><li>Multiple checkboxes to pick the values for the same purpose.<ul><li>Select columns to show in the table</li><li>Select post categories</li></ul></li><li>User can add as much values as he/she likes.<ul><li>Add new tag</li><li>Add language</li></ul></li><li>User can remove multiple items from a list.<ul><li>Remove items from shopping cart</li></ul></li></ul><p>This can be handled by passing many values in one parameter with a common delimiter, or by passing multiple values as the same parameter. Here are examples with the GET method, for the POST it works the same.</p><p>Passing many values in one parameter looks like this:</p><pre class="brush: plain; title: ; notranslate">http://www.bjelic.net/example?param=1,2,3,5</pre><p>Passing many values as the same parameter:</p><pre class="brush: plain; title: ; notranslate">http://www.bjelic.net/example?param=1&amp;param=2&amp;param=3&amp;param=5</pre><p>Many people don&#8217;t know about this, but this is a common feature for a long time, I&#8217;ve been using it where applicable since the 90&#8242;s.</p><p>Even if the latter looks more verbose, there is a good reason I prefer it. When used in forms, the former would require the use of JavaScript to collect the values. The latter works out of the box.</p><p>Now there is even a better reason if you are using ASP.NET MVC, and that is that such parameters will be passed as a List.</p><pre class="brush: csharp; title: ; notranslate">public string Save(List&lt;string&gt; languages)</pre><p>And for numeric values, something like this.</p><pre class="brush: csharp; title: ; notranslate">public string Remove(List&lt;int&gt; ids)</pre><p>If in this case there is a id that can&#8217;t be cast to a integer, the route won&#8217;t be found resulting in 404 &#8211; which completely makes sense since it looks for an &#8220;Remove&#8221; action method that would accept a list of strings.</p><p>A big advantage of this is that there is no need to parse the input values, as they will be conveniently cast and assigned. Also, this enables having input models that have a list of values.</p> ]]></content:encoded> <wfw:commentRss>http://www.bjelic.net/2011/05/16/coding/multiple-values-for-the-same-get-or-post-parameter-in-asp-net-mvc/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
