tag:blogger.com,1999:blog-88433970598803993312024-02-07T20:41:41.565+11:00hands on Gilad Manorhands on java, ruby, flex and technology in general
Scala, PHP, rundll.exe, development, password generator, windows application, infoq, javaworld,giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.comBlogger82125tag:blogger.com,1999:blog-8843397059880399331.post-76307953391402126312013-08-13T07:26:00.000+10:002013-08-13T07:26:04.505+10:00Ruby Threading with a simple Producer - Consumer example<div dir="ltr" style="text-align: left;" trbidi="on">
A threading example implementation of the producer - consumer paradigm implemented in Ruby<br />
<br />
<br />
<script src="https://gist.github.com/giladmanor/6211208.js"></script>
<br />
<br /></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-72736263414615649032013-07-17T18:08:00.001+10:002013-07-26T16:34:28.779+10:00Upgrading to JRuby | Neo4J | rvm on Ubuntu <div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://jruby.org/images/jruby-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://jruby.org/images/jruby-logo.png" height="56" width="200" /></a></div>
<br />
<div style="background-color: white; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 1em; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
<b>While upgrading the Wikibrains server I encountered a few snags, I had to bypass these issues by following these steps:</b></div>
<div style="background-color: white; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 1em; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
Purging the RVM/Ruby installations: (<a href="http://stackoverflow.com/questions/9056008/installed-ruby-1-9-3-with-rvm-but-command-line-doesnt-show-ruby-v/9056395#9056395" target="_blank">source</a>)</div>
<pre class="lang-rb prettyprint prettyprinted" style="background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">sudo apt</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">get </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">--</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">purge remove ruby</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rvm
sudo rm </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rf </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">usr</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">share</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">ruby</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rvm </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">etc</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rvmrc </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">etc</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">profile</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">d</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">/</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rvm</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">sh</span></code></pre>
<div style="background-color: white; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 1em; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
open new terminal and validate environment is clean from old RVM settings (should be no output):</div>
<pre class="lang-rb prettyprint prettyprinted" style="background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">env </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">|</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"> grep rvm</span></code></pre>
<div style="background-color: white; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 1em; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
if there was output, try to open new terminal, if it does not help then restart your computer.</div>
<div style="background-color: white; border: 0px; clear: both; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; margin-bottom: 1em; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
<a href="https://rvm.io/rvm/install/" style="background-color: transparent; border: 0px; color: #4a6b82; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">install RVM</a>:</div>
<pre class="lang-rb prettyprint prettyprinted" style="background-color: #eeeeee; border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; font-size: 14px; line-height: 18px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline;"><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">\curl </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">L https</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">://</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">get</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">rvm</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">io </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">|</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
bash </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">s stable </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">--</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">ruby </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">--</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">autolibs</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">enable </span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">--</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">auto</span><span class="pun" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="background-color: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">dotfiles</span></code></pre>
<br />
<b>Then Run:</b><br />
<br />
source /usr/local/rvm/scripts/rvm<br />
<br />
<b>Now proceed to installing rails:</b><br />
<br />
<div class="line number1 index0 alt2" style="-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #555555; direction: ltr !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; height: auto !important; left: auto !important; line-height: 14.296875px; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;">
<code class="bash plain" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">gem </code><code class="bash functions" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(255, 20, 147) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">install</code> <code class="bash plain" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">rails </code><span style="background-color: #f8f8f8; font-size: 12px;">--version '= 0.3.8'</span></div>
<div class="line number2 index1 alt1" style="-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #555555; direction: ltr !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; height: auto !important; left: auto !important; line-height: 14.296875px; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;">
<code class="bash plain" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">gem </code><code class="bash functions" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(255, 20, 147) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">install</code> <code class="bash plain" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;">bundler</code></div>
<div class="line number2 index1 alt1" style="-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #555555; direction: ltr !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; height: auto !important; left: auto !important; line-height: 14.296875px; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;">
<code class="bash plain" style="-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;"><br /></code></div>
<div class="line number2 index1 alt1" style="-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #555555; direction: ltr !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; height: auto !important; left: auto !important; line-height: 14.296875px; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;">
<b>creating the application with neo4j.rb:</b></div>
<div class="line number2 index1 alt1" style="-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #555555; direction: ltr !important; float: none !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; font-size: 13px; height: auto !important; left: auto !important; line-height: 14.296875px; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;">
<pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;"><span class="n">rails</span> _3.2.8_ <span class="n">new</span> <span class="n">myapp</span> <span class="o" style="font-weight: bold;">-</span><span class="n">m</span> <span class="n">http</span><span class="o" style="font-weight: bold;">:</span><span class="c1" style="color: #999988; font-style: italic;">//andreasronge.github.com/neo4j/rails.rb -O</span></pre>
<pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px;"><span style="white-space: normal;">note: at the time of this post, there is a conflict between Neo4j.rb and rails 4 dependencies.</span></pre>
</div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-26498039194864838932013-06-24T20:38:00.000+10:002013-06-24T20:38:49.285+10:00Manipulating server data in an Angular controller <div>
<div>
<div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnv38Ko0cyTVK83iwz3d3z0u2yTMAarD6X3yhB_wiPUq7GVZHoAahyT-1xU5TjH5cVMOeEcbZ2trU0yGLBxpAfdxGN4i9hcN7ZAQ-tllsDJuFGUg-_zK1RiglE11XFvzWLBpuYVx4e-iY/s1600/Top10Pitfalls1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnv38Ko0cyTVK83iwz3d3z0u2yTMAarD6X3yhB_wiPUq7GVZHoAahyT-1xU5TjH5cVMOeEcbZ2trU0yGLBxpAfdxGN4i9hcN7ZAQ-tllsDJuFGUg-_zK1RiglE11XFvzWLBpuYVx4e-iY/s1600/Top10Pitfalls1.png" height="169" width="200" /></a></div>
<div>
</div>
<div>
I was experiencing an annoying problem every time I was trying to access data I would get back from the server in an <a href="http://angularjs.org/" target="_blank">Angular.JS</a> controller.</div>
<div>
</div>
<div>
As it turns out, every time I shorthanded and wrote something in the essence of:</div>
<b>$scope.myData = Service.getMyData();</b></div>
It returns a proxy object that the angular view was able to handle though model binding, but the controller can't and accessing fields of the returned object would return as undefined.</div>
<div>
</div>
<div>
</div>
<div>
<br /></div>
So, the solution is as simple as it it stupid (Also see <a href="http://docs.angularjs.org/tutorial/step_11" target="_blank">angular reference</a>):</div>
By passing a function to the service that would catch the returning data, and
do the magic there, the returning object is the data itself and
not a proxy.</div>
the shorthand should be replaced with:<br />
<b>Service.getMyData({}, function(d){</b><div>
<b> $scope.myData= d; </b></div>
<div>
<b>}); </b></div>
<div>
<br /></div>
<div>
In my implementation I often broadcast an event of my own after the data has returned so other controllers that are dependent on this data my react accordingly:</div>
<div>
<br /></div>
<div>
<b>Service.getMyData({}, function(d){</b><div>
<b> $scope.myData= d; </b></div>
<div>
<b> Context.broadcast("theDataIsReady");</b>//shaking the $rootScope<b> </b>tree<b><br /></b></div>
<b>}); </b></div>
<div>
<b> </b></div>
<div>
<b>...</b></div>
<div>
<b> </b></div>
<div>
<b>$scope.$on(</b><b><b>"theDataIsReady"</b>,function(){<br /> </b>// a very clever snippet of code<b><br /> }); </b></div>
<div>
<b><br /></b></div>
<div>
Special thanks to Ravit<b>.</b></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-31282331917185975352013-06-08T17:47:00.000+10:002013-06-08T17:48:51.540+10:00Angular.js JSONP with RailsA couple of snippets to remind myself on how to JSONP angular and rails. (cross domain Ajaxing)<br />
<br />
<br />
<br />
-
<script src="https://gist.github.com/giladmanor/5734411.js"></script>
-<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com1tag:blogger.com,1999:blog-8843397059880399331.post-21554681666651125302013-06-05T04:14:00.000+10:002013-06-05T04:17:14.667+10:00App Context for Angular.JS<div dir="ltr" style="text-align: left;" trbidi="on">
I'm now deep into converting the <a href="http://wikibrains.com/" target="_blank">Wikibrains</a> client application to the <a href="http://angularjs.org/" target="_blank">Angular.js</a> Javascript infrastructure.<br />
<div>
One of the most basic tools I needed was an application wide context to shift around data and events between controllers.</div>
<div>
<br /></div>
<div>
This is what I came up with:<br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<br /></div>
<script src="https://gist.github.com/giladmanor/5708083.js"></script></div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-19110829405728959852013-04-11T04:48:00.000+10:002013-04-11T04:48:20.589+10:00Javascript Visualization Toolkits<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="data:image/png;base64,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" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" border="0" src="data:image/png;base64,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" /></a>As part of my search for a nice visualization scheme for my projects, I've stumbled upon to consecutive libraries that are manages by the same team of people (owned by <a href="http://bost.ocks.org/mike/" target="_blank">Mike Bostock</a>).<br />
<br />
The first one is the <a href="http://mbostock.github.io/protovis/" target="_blank">Protovis </a>library that is no longer under active development, but does have a very nice feature set.<br />
<br />
The same team went on to develop a new visualization library called <a href="http://d3js.org/" target="_blank">D3.js</a> available on <a href="https://github.com/mbostock/d3" target="_blank">Github</a>.<br />
<br />
<br />
<a href="data:image/png;base64,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" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" border="0" height="191" src="data:image/png;base64,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" width="200" /></a><br />
A simpler set of visualization tools can be found at the <a href="http://www.flotcharts.org/" target="_blank">flot </a>JQuery
plugin. These are mostly linear charts with limited animation, but very
useful for most cases of visualization requirements. <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="data:image/png;base64,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" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" border="0" height="200" src="data:image/png;base64,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" width="197" /></a><br />
<br />
In case something really fancy, 3D with a touch of gravity is required, there is always <a href="http://www.mrdoob.com/" target="_blank">Mr. doob</a> with an assortment of amazing <a href="http://www.khronos.org/webgl/wiki/Main_Page" target="_blank">webGL </a>stuff. My personal favorite being the <a href="http://www.mrdoob.com/#/91/ball_pool" target="_blank">Ball Pool</a>.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-44321958251187812582013-03-30T12:07:00.000+11:002013-03-30T12:07:17.541+11:00Rappid Prototyping<div dir="ltr" style="text-align: left;" trbidi="on">
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/17881266" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" webkitallowfullscreen="" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<b> <a href="http://www.slideshare.net/GiladManor/rapid-prototyping-17881266" target="_blank" title="Rapid prototyping">Rapid prototyping</a> </b> from <b><a href="http://www.slideshare.net/GiladManor" target="_blank">Gilad Manor</a></b> </div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-75719617637770452732013-03-25T05:50:00.001+11:002013-03-25T05:50:21.693+11:00Angular.js, a haven for the lazy developer<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
<a href="http://angularjs.org/" target="_blank"><img src="http://angularjs.org/img/AngularJS-large.png" height="56" width="200" /></a> </div>
<span style="font-family: Verdana, sans-serif;">I've been acquainted with this framework in a <b>JavaScript</b> meetup I attended at the Google campus in Tel Aviv. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">The speaker, <b>Shay Resnik</b> was full of praise to this new infra that allows developers to be lazy and write so much less code. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">But as a supper lazy developer, I had to see for my self. So I did. and it does.
The combination of <b>RoR</b> and <b>Angular</b> is especially nice because the code shrinks down to the essentials. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">I found a nice example for the workings of <b>RoR</b> and <b>Angular</b>, called <a href="https://github.com/centresource/angularjs_rails_demo" target="_blank">angular_rails_demo</a> on git and although it took a bit of working to actually get the app running on mac (<i>nokogiri</i> and <i>rmagick</i> are bitches) it is fantastically simple and easy to follow. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">After abandoning <i>Adobe Flex</i> in all my projects, I can finality say that there is something I like in <b>HTML</b> and <b>JavaScript</b>.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-27821437693995889732013-03-03T10:48:00.000+11:002013-03-03T10:48:16.455+11:00Minecraft server installation on Ubuntu <div dir="ltr" style="text-align: left;" trbidi="on">
<strong>Installation instructions:</strong><br /><br /><u>First step, prepare the system requirements:</u><br />
<ul>
<li>sudo apt-get update <em>[This updates all the packages on the server]</em><br />
</li>
<li>java -version <em>[checks if you have Java installed on the machine]</em><br />
</li>
<li>sudo apt-get install default-jdk <em>[installs the necessary Java executables]</em>
</li>
</ul>
<br /><u>Second step, open the server port for inbound communication:</u><br /><ul>
<li>sudo iptables -A INPUT -p tcp --dport <strong>25565 </strong>-j ACCEPT<br />
</li>
</ul>
<br /><u>Third step, install the Mindcraft server</u><br /><ul>
<li>cd /var<br />
</li>
<li>mkdir minecraft<br />
</li>
<li>cd mincraft<br />
</li>
<li>wget <a href="https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar" rel="nofollow" target="_blank">https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar</a><br />
</li>
</ul>
<br /><u>Fourth step, running the server:</u><br />there are two options to run<br />directly running the server:<br /><ul>
<li>java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui<br />
</li>
</ul>
or run it through a delegation software (this enables the console to be closed without shutting down the server)<br />for this option, first install "Screen":<br /><ul>
<li>sudo apt-get install screen<br />
</li>
</ul>
running the server through Screen:<br /><ul>
<li>screen -S "Minecraft server"<br />
</li>
</ul>
detach consule from server stdout:<br /><ul>
<li>ctl-a d<br />
</li>
</ul>
or, reattach the console to the Screen stdout:<br /><ul>
<li>screen -R<br />
</li>
</ul>
<br /><strong>Server's world (level) and player manipulation</strong><br /><br />the minecraft server has several configuration files that define the game environment characteristics.<br />these
files are saved in a proprietary format and zipped, so there is no use
trying to open them in a text editor. the NBT spec is available at: <a href="http://wiki.vg/NBT" rel="nofollow" target="_blank">http://wiki.vg/NBT</a><br /><br />its possible to run a specialized editor for NBT formatted files available at: <a href="https://github.com/jaquadro/NBTExplorer" rel="nofollow" target="_blank">https://github.com/jaquadro/NBTExplorer</a><br /><br />There are some libraries available for reading and writing to this format in an array of programming languages.<br /><br />A ruby lib to read/write NBT format files: <a href="https://github.com/mental/nbtfile.git" rel="nofollow" target="_blank">https://github.com/mental/nbtfile.git</a><br />(an extended list is available on the <a href="http://wiki.vg/NBT" rel="nofollow" target="_blank">http://wiki.vg/NBT</a> page)</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-59928739980583858042013-02-12T07:27:00.000+11:002013-02-12T07:27:53.121+11:00Gamification is all around us<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<h3 style="text-align: justify;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVDAkt2OOJ6nxz3MbcYiWwab0h3Z0V67xIZ16Qn3wxSD-Gq8XB4wjU4I3fuRZFvF3T2Tw2I5Rh7awcI44gjIJZJoyXHxvnw00ITxDvz1mBjCZfg2rZWfRRGVYf7PhuDsU2wxBQgAkJ8mo/s1600/IMG_20130211_183725.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVDAkt2OOJ6nxz3MbcYiWwab0h3Z0V67xIZ16Qn3wxSD-Gq8XB4wjU4I3fuRZFvF3T2Tw2I5Rh7awcI44gjIJZJoyXHxvnw00ITxDvz1mBjCZfg2rZWfRRGVYf7PhuDsU2wxBQgAkJ8mo/s200/IMG_20130211_183725.jpg" width="200" /></a><span class="share-body" id="yui-gen25"><a href="http://tierx.co/" target="_blank">Tierx</a> COO <a class="g-profile" href="http://plus.google.com/100957865666099402234" target="_blank">+Yakir Daskal</a> gave a
brilliant presentation in the Gamification conference today at the HP
development center in Yahud. </span></h3>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">Yakir was able to show in a simple but convincing way that gamification
is all around us in our every day lives, careers and entertainment. </span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">It
stands to reason that the process of embedding game mechanics into
electronic services such as cellular services, banking and web sites is
clearly the next step in our technological evolution.</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">Its a well known fact that as applications become <i>simple</i> and <i>human intuitive</i>, the mechanics that facilitate them become more complex and elaborate. Gesture<b>, </b>voice recognition and machine learning are just the tip of the iceberg. </span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25"><br /></span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">The same process is happening in the gamification platform industry as we move to accommodate experiences that are closer to what we are all used to in real life.</span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Markovkate_01.svg/220px-Markovkate_01.svg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Markovkate_01.svg/220px-Markovkate_01.svg.png" width="200" /></a></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">An example for this is the use of <a href="http://en.wikipedia.org/wiki/Markov_chain" target="_blank">Markov chain</a> modeling in the Tierx solution. This century old mathematical system is the basis of every complex behavioral model and it stands in the core of gamification solutions. </span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25"><br /></span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">Although it is crucial to have a firm and robust implementation, its not enough to understand the math. As it is, comprehending the human factor is just as important for achieving the ultimate engaging experience for your product. </span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25"><br /></span></div>
<div style="text-align: justify;">
<span class="share-body" id="yui-gen25">A gamification platform has to be able to mimic true life experience and fluency as provided by the Markov chain modeling, but its as important to be able to measure the success of every badge, trophy and incentive that are dealt by the system and understand the human impact of each on the users.</span></div>
<span class="share-body" id="yui-gen25"><br /></span>
<span class="share-body" id="yui-gen25"><br /></span>
<span class="share-body" id="yui-gen25"><br /></span>
<span class="share-body" id="yui-gen25"><br /></span>
<span class="share-body" id="yui-gen25"><br /></span>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-83007196563907079052012-11-15T06:00:00.001+11:002012-11-15T18:27:14.440+11:00Sprint and Shift<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-annFAiGN1ig/SYnvpuPRnBI/AAAAAAAAAGM/k4M7-NWuJd8/s1600/military_sleep_by_marcheshvan%255B3%255D" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="193" src="http://3.bp.blogspot.com/-annFAiGN1ig/SYnvpuPRnBI/AAAAAAAAAGM/k4M7-NWuJd8/s1600/military_sleep_by_marcheshvan%255B3%255D" width="200" /></a></div>
<h3 style="text-align: left;">
When resources are scarce the smartest thing to do is to share.</h3>
<div style="text-align: left;">
For so long, startup founders have been pitching about having a team of professionals
who are one hundred percent dedicated to the job. For most of these
enterprises in their infancy that was true. What was also true, and much less obvious, was that these dedicated teams were not 100% occupied in their work 100% of the time.</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<b>Much like in the military, start-up life is more in the sense of hurrying up and waiting. </b></div>
<div style="text-align: left;">
<br /></div>
So you are Lean and Agile, Your team is sprinting, they are at their best, optimized, combined effort to get the feature out on time.<br />
<br />
But then, they wait.<br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
They wait for the new designs to come in, wait for the other guy to
deliver his bit, wait for the analytics on the latest feature. Wait.<br />
And while the team waits, you waste.</div>
<br />
<div style="text-align: left;">
<b>In a way, its like having a V12 engine, running full throttle without anything connected to it. burning money with no practical production.</b></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So how does the sharing work?</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
The key for time efficiency is to always have a full stack of tasks to do for the development team. So, if one project is not enough, its time to share. combining efforts with more then one startup means that the developers, as any other expensive resource in the company can be pooled. while waiting on one task, a developer can shift to another. By the method of <b>Sprint and Shift</b>, resources are maximized.<br />
<br />
Oh, this sounds so wonderful, but is this as good in practice as it is in theory?<br />
<br />
For the past year I had the privilege of working with two teams, both independent companies but inter-dependent in resources.<br />
<br />
By choosing to do so, we have been able to enjoy the best quality of manpower, without paying for lost time between sprints. This is "Sprint and Shift" in action.<br />
<br />
Nothing can be leaner than this.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-62325983112492015052012-11-02T20:37:00.000+11:002012-11-02T20:38:44.669+11:00The Game Experience <div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
<w:UseFELayout/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]-->
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Markovkate_01.svg/220px-Markovkate_01.svg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Markovkate_01.svg/220px-Markovkate_01.svg.png" width="200" /></a></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Game mechanics (aka
gamification) of sites has for some time become a necessity rather than a
luxury. Everyone is talking about retention, engagement and acquisition, but
are Points and Badges enough to give an answer?</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Apparently it is not.
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Gamification is all
about manipulating the behavior of the on line users, in a way that would
benefit both user and service provider. Effective behavioral influence requires
subtlety and sophistication. Consumers need to be motivated and not lured.
While trophies are nice to show, they need to represent a true achievement. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;"><a href="http://en.wikipedia.org/wiki/Game_theory" target="_blank">Game theories</a> have
long been addressing the issues of motivation and creating the economics of
behavior. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">The well-known <a href="http://en.wikipedia.org/wiki/Prisoner%27s_dilemma" target="_blank">prisoner’sdilemma</a> addresses the economy of fidelity by imposing different rules of
engagement; a reasonable player is bound to a particular behavior in order to
climb up the ladder of success.</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Equally celebrated,
is the <a href="http://en.wikipedia.org/wiki/Nash_equilibrium" target="_blank">Nash Equilibrium</a> used to analyze strategic interactions of a multitude
of decision makers. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Both of the examples
above assume the intelligence and reasonability of the players, and comprised
of bona fide motivators.</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Data services such as
sites, telecommunication, enterprise applications etc. usually contain a range
of challenges that flex and differ depending on the current situation of the
participating user. In a way, much like board games, the rules of engagement
differ in dependence of the state and history of the user. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">To match such an
elaborate engagement system, the <a href="http://en.wikipedia.org/wiki/Markov_chain" target="_blank">Markov chain</a> proves to be best accurate. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">The Markov chain is a
mathematical system that describes transitions between a finite (or countable)
number of states. This implementation provides the robustness and flexibility
of a multitude of challenges that are either with or without accumulation of
memory. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">Perhaps the best
known implementation of the Markov chain is in google’s <a href="http://en.wikipedia.org/wiki/Game_theory" target="_blank">PageRank </a>algorithm,
although it can be manifested in as simple as a <a href="http://en.wikipedia.org/wiki/Snakes_and_ladders" target="_blank">board game</a>. </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; mso-pagination: none; text-autospace: none;">
<span style="font-family: "Arial","sans-serif"; font-size: 10.0pt;">So can the Markov
chain be used for site gamification?</span></div>
<div class="MsoNormal" style="margin-bottom: 0in;">
<span style="font-family: Arial, sans-serif; font-size: small;">Apparently it can. </span><br />
<span style="font-family: Arial, sans-serif; font-size: small; line-height: normal;"><br /></span>
<br />
<span style="font-family: Arial, sans-serif; font-size: small;">For more info: <a href="http://tierx.co/" target="_blank">Tierx</a></span><span style="font-family: Arial, sans-serif; font-size: x-small; line-height: normal;"><span style="font-size: x-small;"><span style="font-size: x-small;"> </span></span></span><br />
<span style="font-family: Arial, sans-serif; font-size: x-small; line-height: normal;"><span style="font-size: x-small;"><span style="font-size: x-small;"> </span></span></span>
</div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-30391547581860879912012-10-27T11:33:00.000+11:002012-10-27T11:33:07.161+11:00RMagic - image processing for RoR<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.imagemagick.org/image/wizard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://www.imagemagick.org/image/wizard.jpg" height="200" width="150" /></a></div>
I have a few projects that required basic image manipulation. Easy stuff like cropping and resizing images that users upload in the application.<br />
<br />
<a href="http://www.imagemagick.org/script/index.php" target="_blank">Image Magic</a> provides a nice solution for this both on Windows and Linux (the two environments i use) although they also provide libraries for MAC.<br />
<br />
To install on windows first download and install the <a href="http://www.imagemagick.org/script/binary-releases.php#windows" target="_blank">windows installer for Image Magic.</a><br />
Note that you will need the installer to include the C libraries as well.<br />
<br />
Then proceed to install the RMagick gem by this command (<a href="https://github.com/rmagick/rmagick/wiki" target="_blank">source</a>):<br />
<br />
<pre style="-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(204, 204, 204); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; margin: 15px 0px; orphans: 2; overflow: auto; padding: 6px 10px; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;"><code style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: none; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; margin: 0px; padding: 0px; white-space: pre;">gem install rmagick -- '--with-opt-dir="[path to ImageMagick]"'</code></pre>
And don't miss any character. just replace the [path to ImageMagic] with the location the installer put the image magic installation.<br />
<br />
The installation for Ubuntu is slightly easier:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">apt-get update<br />sudo apt-get install imagemagick libmagickcore-dev<br />sudo apt-get install libmagickwand-dev<br />sudo gem install rmagick</span><br />
<br />
Once you have the gem installed, add the following line to the gem file:<br />
<span style="font-family: "Courier New",Courier,monospace;">gem "rmagick", "~> 2.13.1"</span><br />
And run the following command:<br />
<span style="font-family: "Courier New",Courier,monospace;">bundle</span><br />
<br />
In the files you want to use this gem include:<br />
<span style="font-family: "Courier New",Courier,monospace;">require 'rubygems'<br />require 'RMagick'</span><br />
<br />
You may find the <a href="http://www.imagemagick.org/RMagick/doc/" target="_blank">instructions for the image manipulation facilities</a> useful as well.</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-76971014567691054862012-10-14T22:09:00.000+11:002012-10-14T23:32:42.455+11:00Book Review: Sencha's ExtGWT Coockbook<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCPWrkbXFTiWl3YZl7kyKdnJmgT5GUyjq5MQ6czuAZGfRRVqkshYz-YYmZVv7OZBXSasyXUpyajEF05hjKYkMpH_zgR1F_ORz3tWlXt6zBk0hYmdiITVuigQDIQBSTEdZ0Tk_ItPPGyi0/s1600/ExtGWT+cookbook.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCPWrkbXFTiWl3YZl7kyKdnJmgT5GUyjq5MQ6czuAZGfRRVqkshYz-YYmZVv7OZBXSasyXUpyajEF05hjKYkMpH_zgR1F_ORz3tWlXt6zBk0hYmdiITVuigQDIQBSTEdZ0Tk_ItPPGyi0/s1600/ExtGWT+cookbook.jpg" /></a></div>
The past few days I've been going through the <a href="http://www.packtpub.com/extgwt-rich-internet-application-cookbook/book" target="_blank">ExtGWT Rich Internet Application Cookbook</a> which is fresh out the the PacktPub press.<br />
<br />
This Cookbook reviews the usage of the <a href="http://www.sencha.com/examples-2/#overview" target="_blank">Sencha's ExtGWT </a>GUI packages, A <a href="https://developers.google.com/web-toolkit/" target="_blank">GWT </a>application framework.<br />
<br />
The book has been written by <i><a href="http://ajaxpoet.wordpress.com/author/bitrunk/" target="_blank">Odili Charles Opute</a></i> and <i><a href="http://www.linkedin.com/in/odedns" target="_blank">Oded Nissan</a></i>, the latter is an old friend and an inspiring professional I hold dear.<br />
<br />
Oded says: "<i>GWT allows the use a single high level, object oriented and strongly typed language for developing web application. (this is the same concept behind the <a href="http://en.wikipedia.org/wiki/Dart_(programming_language)" target="_blank">DART programming language</a> that Google in involved with). Developers who are not JavaScript, HTML/CSS experts can then develop complex rich internet applications using Java.<br />With Java, developers can use <a href="http://en.wikipedia.org/wiki/Object-oriented_design" target="_blank">OO design</a>
pattern in their client code, a capability that is missing
when developing web applications using JavaScript and markup.<br />The
main criticism against GWT is that it prevents developers from using
JavaScript and HTML markup directly, thus preventing flexibility.<br />I
would say
that if you are shooting to develop a complex and revolutionary web
site, GWT would probably not be your first choice (although there are
plenty examples of unique application built using GWT) . However, GWT is
a very good fit for developing form based web applications, probably covering most of the Enterprise and SMB applications.</i>"<br />
<br />
Using GWT for web GUI implementation can work not only for Java Server side. As long as you are using <a href="http://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank">RESTful interfaces</a>, RoR can suite just fine.<br />
<br />
For me, the aesthetics of coding is a major concern. Much like writing prose, code should be expressive and clear. After all, it is telling a story. Clarity of code helps developers create the right mental image of the mechanics and stream line of the moving parts.<br />
Noisy and cluttered code on the other hand induces malfunction (AKA Bugs).<br />
<br />
The first impression I got from the book was the clarity and simplicity of the examples and explanations. Being a ruby sort of person as I am, it actually made me miss coding in Java just a bit.<br />
<br />
What I found in the book were 80 examples for GUI development and appendixes for event handling, Icon manipulation, RPC and file uploading.<br />
In short, all the floaters you might need when jumping into the ocean of GWT GUI development.<br />
<br />
The examples took me from the obvious to the advanced, and although I have years of Java development behind me, the explanations are structured in a way that could be easy for the novice and not tedious for the expert.<br />
<br />
<b><u>Conclusion:</u></b><br />
When Choosing GWT and the Sencha package, get a copy of this cookbook. I give it the thumbs up.<br />
<br /></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-81334644971705767502012-10-12T21:59:00.000+11:002012-10-12T22:07:56.657+11:00RoR Double Clutch <div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0WOdldb2GTA4BeoB_RuCMNvqlsIUFs9p7OFVyGLjOxyHqTQhQvs8ot6rfz1fIMPi-6oK-i6GXvWqhyphenhyphenXk44idzr-J5GT1P_FmUQ-jDeuj8Jd4kgBRVAtoF0V8IeSkmC9n8gXFYS5zD5Yc/s1600/logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0WOdldb2GTA4BeoB_RuCMNvqlsIUFs9p7OFVyGLjOxyHqTQhQvs8ot6rfz1fIMPi-6oK-i6GXvWqhyphenhyphenXk44idzr-J5GT1P_FmUQ-jDeuj8Jd4kgBRVAtoF0V8IeSkmC9n8gXFYS5zD5Yc/s200/logo.jpg" width="187" /></a></div>
This is a pattern have implemented in three different projects of mine, so I'm writting it down once and for all the next times I wrap my head arround this until I remember I have already have done it.<br />
<br />
In the Dezquare project, the users are offered a game that helps them in finding a sutable designer. The game varies accorging to all sorts of conditions. The sequence is broken down into a series of basic elements that can be manipulated and tweeked from an admin consule.<br />
<br />
The aim is to have an implementor grabbed from the database and react to a particular context as part of a user flow sequance<br />
<br />
<br />
<br />
<br />
<br />
<h4 style="text-align: left;">
The players:</h4>
<ul style="text-align: left;">
<li>A controller</li>
<li>A context object (as an ActiveRecord)</li>
<li>A referenced implementor descriptor (as an ActiveRecord)</li>
<li>An implementor</li>
</ul>
<h4 style="text-align: left;">
The sequence:</h4>
<div>
<ol style="text-align: left;">
<li>The controller identifies the context object and passes the request params</li>
<li>The context object finds its implementor descriptor and passes itself as an argument</li>
<li>The implementor descriptor converts its implementor class name field into an entity (imp.camelize.constantize)</li>
<li>The implementor descriptor invokes on the implementor method with the context object and its own agruments field (if applicable)</li>
</ol>
<h4 style="text-align: left;">
The code </h4>
<div style="text-align: left;">
<i>Note: this code will not work by itself. its only expressing the idea</i></div>
</div>
<div>
The standard <b>controller </b>answering a play request</div>
<div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">def play</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> @game=Game.find(session[:game_id])</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> @results = @game.set(params)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">end</span></div>
</div>
<div>
<br /></div>
<div>
The <b>context object (Game)</b>, persistant and stateful, belongs to a "<b><i>stage</i></b>" and passes the request and context</div>
<div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">def set(params)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> self.stage.set(self,params)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">end</span></div>
</div>
<div>
<br /></div>
<div>
The <b>implementor descriptor (Stage)</b>, persisted common object, known here as the "<b><i>stage</i></b>" generated an entity and calls it.</div>
<div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">def klass</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> self.imp.camelize.constantize</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">end</span></div>
</div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">def set(game,params)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> klass.set(game,params,self.arguments)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">end</span></div>
</div>
<div>
<br /></div>
<div>
The <b>implementor (name derived from a data field)</b>, unpersisted, statless entity, acts upon the context it is given and returns the results</div>
<div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">def self.set(game,params,arguments)</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"> #pay dirt</span></div>
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;">end</span></div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-45107132521431193072012-08-30T05:49:00.000+10:002012-08-30T06:45:03.023+10:00Elation<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAer3QWsujR8FlnkZJYtdKH3ZDKrpceEuVXQpsrKy21RB-fGoM8FxCJHS0wAHkQvhKt_jJyoElRtM0XHGRA3Izy6qRXPorsm2OQq09aFbasAuqvYidAOd1ufHJZuQ-5t2oTObada-0Ev4/s1600/WB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAer3QWsujR8FlnkZJYtdKH3ZDKrpceEuVXQpsrKy21RB-fGoM8FxCJHS0wAHkQvhKt_jJyoElRtM0XHGRA3Izy6qRXPorsm2OQq09aFbasAuqvYidAOd1ufHJZuQ-5t2oTObada-0Ev4/s1600/WB.png" /></a></div>
This morning (GMT+2) we have successfully launched the new <a href="http://wikibrains.com/" target="_blank">Wikibrains</a> site into public beta. This is the elation of the 2 week development sprint we made, implementing a long list of an even longer list of suggestions comments and responses we got from the private beta launch a month ago.<br />
<br />
Developing a project like Wikibrains is not easy mainly because its not trivial to step out of ones skin and try to get a fresh look at things. To see whats really needed and what is the pure fantasy, irrelevant for others.<br />
This is where the early adopters come in and have a major impact on the decision making for the products features.<br />
We got truck loads of awesome suggestions and I am grateful and thankful to all the people who took the time to write to us.<br />
<br />
<h3 style="text-align: left;">
Ongoing road map:</h3>
<h4 style="text-align: left;">
Migrate to HTML5/Java-script</h4>
As discussed in a <a href="http://giladmanor.blogspot.co.il/2012/08/wikibrains-migration-to-non-flash-site.html" target="_blank">previous post</a>, we are abandoning the Flex/Flash solution for a light HTML5/JS solution. we will start with a lean editor that will be available along side the robust Flash editor and gradually improve it until we can completely replace the old one.<br />
<h4 style="text-align: left;">
Socialization and Gamification</h4>
We will enable users to follow other users and their contributions to Wikibrains. Contribtors ratings and an assortment of badges.<br />
<h4 style="text-align: left;">
Public, Group and Private domains</h4>
In order to make idea sharing and collaboration even more easy and intuitive we will implement 3 different scopes of privacy. The public domain, where unregistered users can add their associations to any idea. The group domain, were users can collaborate and create mind maps together and restring the editing of the mind map to the group members only. Finally, private mind maps, that are only visible to the creator.<br />
<h4 style="text-align: left;">
Brain API's and widgets</h4>
We are intending on opening the access to the data sources via <a href="http://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank">RESTful </a>API's so any one who would like to use and take advantage of the abundance of semantic information will be able to. After all, the Wikibrains site implements only one approach on what can be accomplished with an associative learning machine. We will start by publishing a set of widgets that enable basic interactions with the graph and open source them so developers may use it for their own benefits.<br />
<br />
Bugs will be addressed continuously.<br />
<br />
<br />
<br /></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-64737749431008648262012-08-28T07:25:00.000+10:002012-08-28T07:25:16.290+10:00Wikibrains new look<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-riclV-gEm8uSFs5uy-Q5Z9qvNVPps_f8eW-PDqib4FKSH6wAaDIB6ZMO1qNcx_4cO0A5WrvS1s7AKmev-U-2BDs6tGb96KR4nlczOgwrK7QbyRHKGQmN-XnZuM23tU5Izc1OuDh6osA/s1600/Logo-Signup.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-riclV-gEm8uSFs5uy-Q5Z9qvNVPps_f8eW-PDqib4FKSH6wAaDIB6ZMO1qNcx_4cO0A5WrvS1s7AKmev-U-2BDs6tGb96KR4nlczOgwrK7QbyRHKGQmN-XnZuM23tU5Izc1OuDh6osA/s1600/Logo-Signup.png" /></a></div>
During the past few weeks we were all too busy with a series of changes we have implemented into the Wikibrains web application. This is the first step in migrating Wikibrains to Javascript and away from flash. This phase is almost complete and expected to debut in a week.<br />
<br />
We have implemented a new look, simple and clean, thus emphasizing the actual data results over the design quirks. Here are a few examples I snatched up from the new application:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhMVAeTtHcCuUsPMCAAQgDxhKT16LphSWXSUQi9YxYv1RQm_QtmMJuVOrQDGpXAn5fXKG2LhzsSO-bPkaNR318FuYpC11jq0zq-tFLIMfGLTRDkrtVOqaNDvlRaxnVM1wmFgO3jV1N6LI/s1600/w1.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhMVAeTtHcCuUsPMCAAQgDxhKT16LphSWXSUQi9YxYv1RQm_QtmMJuVOrQDGpXAn5fXKG2LhzsSO-bPkaNR318FuYpC11jq0zq-tFLIMfGLTRDkrtVOqaNDvlRaxnVM1wmFgO3jV1N6LI/s400/w1.JPG" width="400" /></a></div>
Accessing the graph information is now available in two primary formats. The Brain Browser format accesses the word nodes on the graph and allows free browsing through the associations that are defined by users.<br />
<br />
Each graph result is accompanies by an acknowledgement to the contributors and a list of top mind maps that include the main topic of the search.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU2Ug2kTK7dRvlxz2oXfEMyIeVwqL1lzt8zh8lgAzv5IRkO9noI-h4XDvqHOzr3qchCmt0NPayL5zw1y9eX-SoAaXvJWHyx8DdET8NWM6IuTdn8tZt7-NLetZWTJscRl_FnHAdKjK5Gj4/s1600/w2.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU2Ug2kTK7dRvlxz2oXfEMyIeVwqL1lzt8zh8lgAzv5IRkO9noI-h4XDvqHOzr3qchCmt0NPayL5zw1y9eX-SoAaXvJWHyx8DdET8NWM6IuTdn8tZt7-NLetZWTJscRl_FnHAdKjK5Gj4/s400/w2.JPG" width="400" /></a></div>
Browsing the graph data has a mind map view. This is a read only view of a particular mind map and for the time being, is not browsable by clicking on the nodes on the graph. Since a mind map is the result of a single contributor, we zoom in on the owner and the other things he had created in Wikibrains.<br />
<br />
When clicking on a contributor link a public profile is presented with more details and achievements (in the form of badges) that are credited to the particular person.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBNyM7RxgJCJMq9t8p8hEyUdZKMSoJgAhpr-fzhTMjV677AHw4rDQJ03JLRIHFBP7jACCKQvCEgYEso_98wc13dISAGqcym6auNTzoWkpm20BKYRuCCX8wvKq8Vy_OX52Fq2iOa1tm1OI/s1600/w3.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBNyM7RxgJCJMq9t8p8hEyUdZKMSoJgAhpr-fzhTMjV677AHw4rDQJ03JLRIHFBP7jACCKQvCEgYEso_98wc13dISAGqcym6auNTzoWkpm20BKYRuCCX8wvKq8Vy_OX52Fq2iOa1tm1OI/s320/w3.JPG" width="320" /></a></div>
In sight of our goal to encouraging participation in teaching us new words and word association, we reward badges accordingly.<br />
We created a set of badges that symbolizes each trait we admire, if its a person that creates allot of mind maps, or someone that is responsible for a great deal of associations.<br />
<br />
So there.<br />
I am exited and eager to hear how our users will like and react to this change we are making.<br />
<br />
Good luck to us all.<br />
<br /></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-33353070222962448082012-08-24T23:24:00.003+10:002012-08-24T23:24:42.467+10:00Rails DOT Routing<div dir="ltr" style="text-align: left;" trbidi="on">
The default rout match for rails considers the dot as a place holder for the format type that is expected in return.<br />
When implementing a free text search over GET, its important to change this configuration.<br />
<br />
Default configuration:<br />
<span style="font-family: Courier New, Courier, monospace;">match ':controller(/:action(/:id))(.:format)'</span><br />
<br />
This will not handle a query as following:<br />
<span style="font-family: Courier New, Courier, monospace;"> /site/search/I am looking for . in a sentence</span><br />
<br />
A working configuration would look like the following:<br />
<span style="font-family: Courier New, Courier, monospace;">match ':controller(/:action(/:id))',:id => /[^\/]*/</span><br />
<br />
<br />
Found at the <a href="http://coding-journal.com/rails-3-routing-parameters-with-dots/" target="_blank">coding journal</a></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-23303555957901803002012-08-19T00:02:00.000+10:002012-08-19T00:02:08.435+10:00Wikibrains migration to a non-flash site<div dir="ltr" style="text-align: left;" trbidi="on">
A few days ago, we had a long hard talk about the future <a href="http://en.wikipedia.org/wiki/User_interface" rel="nofollow" target="_blank">UI </a>technology of <a href="http://wikibrains.com/sharing/mindmap/62" target="_blank">Wikibrains</a>. We were debating two technologies for implementing the Wikibrains graph (mind map) editor.<br />
On the one hand, we have invested countless hours in the <a href="http://www.adobe.com/products/flex.html" rel="nofollow" target="_blank">Adobe Flex</a> (AKA Flash) based editor, while on the other hand, thoughts about migrating to a much lighter and brisk implementation in HTML/<a href="http://en.wikipedia.org/wiki/JavaScript" target="_blank">Javascriupt</a>.<br />
<br />
The first step we took was to check out the feasibility and reaction of people to the new option, but implementing a read only version of the graph view in our social sharing landing page.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRZhEblxoNulDFYt8FgTpAdr_HcySmThqz8qK7ZbgARwqf0NTigS_x5YWqpqYx01UcDwf5lGiASeYAp4CNB778f4mxsmBJpnjfQykG7I2MwEnkjy2Zak9dwfCc0rfZEtvPRAMA_apbItU/s1600/Capture.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRZhEblxoNulDFYt8FgTpAdr_HcySmThqz8qK7ZbgARwqf0NTigS_x5YWqpqYx01UcDwf5lGiASeYAp4CNB778f4mxsmBJpnjfQykG7I2MwEnkjy2Zak9dwfCc0rfZEtvPRAMA_apbItU/s320/Capture.JPG" width="320" /></a>It took about a day and a half to convert a JavaScript <a href="http://kenneth.kufluk.com/google/js-mindmap/" target="_blank">tree view by Kenneth</a> to a graph view and making it ready for the Wikibrains graph data injection.<br />
<br />
Once published, the reaction to the sharing page was phenomenal, and its popularity almost matched the index page.<br />
<br class="Apple-interchange-newline" />
Faster to load and better UI performance made us decide to use this structure as the next step in our editors development. not to mention the fact that it works on mobile platforms without any extra effort.<br />
<br />
JavaScript came a log way the past years in terms of rendering engines on browsers and the results is easily noticeable in the event management and motion rendering. And I guess, that practically made the decision for us.<br />
<br />
So long Flex.<br />
<br />
<br />
<br /></div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-36138259970918323142012-08-18T23:09:00.001+10:002012-08-18T23:09:43.880+10:00Why can't machines understand emotions?<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dIgFkOsRgaEo3HejHBYbhhnN-sNTamj3mt_nGcCAx8jfnoL-Rjiv9-QHLnXsRG5nZlWeA4mf5Lqd1QydI_GRyU0AsFLkP4EjUlhym-cZRshgnVM556mSqMVg_FlS6tr-PPZkzaPOWzg/s1600/love+not+found.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="56" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dIgFkOsRgaEo3HejHBYbhhnN-sNTamj3mt_nGcCAx8jfnoL-Rjiv9-QHLnXsRG5nZlWeA4mf5Lqd1QydI_GRyU0AsFLkP4EjUlhym-cZRshgnVM556mSqMVg_FlS6tr-PPZkzaPOWzg/s320/love+not+found.JPG" width="320" /></a></div>
This is a real error i got, because of permission restriction in running RoR. </div>
<div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-45179877417081140522012-08-02T06:34:00.000+10:002012-08-02T06:34:45.946+10:00Using the Facebook Sherer<div dir="ltr" style="text-align: left;" trbidi="on">
Facebook provides a nice and easy took to help in using its 'Sherer' utility<br />
<br />
<a href="http://developers.facebook.com/tools/debug">http://developers.facebook.com/tools/debug</a>
<br />
<br />
<br /></div><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-56095656723558447802012-08-01T02:30:00.002+10:002012-08-01T02:30:27.394+10:00Wikisrains moves to Public Beta phase<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAer3QWsujR8FlnkZJYtdKH3ZDKrpceEuVXQpsrKy21RB-fGoM8FxCJHS0wAHkQvhKt_jJyoElRtM0XHGRA3Izy6qRXPorsm2OQq09aFbasAuqvYidAOd1ufHJZuQ-5t2oTObada-0Ev4/s1600/WB.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="65" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAer3QWsujR8FlnkZJYtdKH3ZDKrpceEuVXQpsrKy21RB-fGoM8FxCJHS0wAHkQvhKt_jJyoElRtM0XHGRA3Izy6qRXPorsm2OQq09aFbasAuqvYidAOd1ufHJZuQ-5t2oTObada-0Ev4/s320/WB.png" width="320" /></a></div>
Months of hard work have finally resulted in airing the <a href="http://wikibrains.com/" target="_blank">WikiBrains </a>machine learning engine.<br />
Having people using it is so exiting, since as more of them do, the smarted it gets.<br />
<br />
Although one would need to register to actually use the brainstorm GUI tool, its easy to see the daily increase in vocabulary and context just by going into the search page and checking out '<a href="http://wikibrains.com/sharing/index?id=Apple" target="_blank">Apple</a>' (just an example).<br />
<br />
Each time a user lines up a couple of words, may they be of his own design or using existing connections from the suggestion list, the brain is enriched by a new synapse.<br />
<br />
The wiki engine uses a <a href="http://neo4j.org/" target="_blank">graph database</a> to store the words as objective points and the subjective links between them are what people have to say about those words.<br />
<br />
We still have several usability issues with the GUI, perhaps too cumbersome one may argue. but despite some snags on the way, it works (which makes me really happy). No performance issues so far, and the user base is steadily growing.<br />
<br />
Thumbs up for the Wikibrains team!<br />
<br />
<br />
<br />
<br />
<br />
<br />
.<br />
<br /></div><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-59773834767393720072012-04-15T05:38:00.000+10:002012-04-15T05:38:41.949+10:00Titanium HTTPClient, Sending a complex object<div dir="ltr" style="text-align: left;" trbidi="on">
If you need to send a complex object on a request through the Titanium HTTPClient, an object that has more then a single level of data, for example:<br />
<span style="font-family: 'Courier New', Courier, monospace;">var data_to_send={</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> user:{name:'Gilad', l_name:'Manor'}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">}</span><br />
Passing this object, as is, to the HTTPClient will result in the server getting the sub object as a string, instead of an object.<br />
To have this properly sent, you will need to wrap the data with JSON.stringify<br />
i.e.<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;">client.setRequestHeader('Content-Type', </span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> 'application/json; charset=utf-8');</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">client.send(<b>JSON.stringify(data)</b>);</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
</div><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com1tag:blogger.com,1999:blog-8843397059880399331.post-8574334361645024112012-04-10T00:15:00.000+10:002012-04-10T00:17:49.247+10:00Titanium for Android and RoR<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyFv-SpGUNyNWgNZLa9cns05FCnLDy4DS9Ump0vCvxUwW4kKHXyyENDS9NvPeMMwdSL7f83goaPxhsVwCHhqkdNaIEyb_ErTfwFazHiS4a-uJ6Pz5uTl-G9U8MWpXhYJCTBfNFQSN_3vQ/s1600/moris+copy.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyFv-SpGUNyNWgNZLa9cns05FCnLDy4DS9Ump0vCvxUwW4kKHXyyENDS9NvPeMMwdSL7f83goaPxhsVwCHhqkdNaIEyb_ErTfwFazHiS4a-uJ6Pz5uTl-G9U8MWpXhYJCTBfNFQSN_3vQ/s200/moris+copy.png" width="200" /></a></div>
Lately, I've been playing around with the <a href="http://developer.appcelerator.com/">Titanium IDE</a> for mobile development.<br />
Its pretty nice once you get a hang of it.<br />
My first application (code name Moris) I made to communicate as a mobile front end for the <a href="http://giladmanor.blogspot.com/p/gizmo-gamification-engine.html">Gizmo </a>server.<br />
<br />
It came out rather simple since my API on the server side are aleady set to spit out JSON structures.<br />
<br />
<br />
<br />
I've found that the simplest way is as following:<br />
First I created a generic send function with a global client object:<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-size: x-small;"><span style="font-family: 'Courier New', Courier, monospace;">var SERVER = 'https://YOUR-DOMAIN/api/';</span>
</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;"><br /></span></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">var send = function (action, data, resFunc){</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>client.open("POST", SERVER+action);</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> <span class="Apple-tab-span" style="white-space: pre;"> </span>if (resFunc!=null) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> <span class="Apple-tab-span" style="white-space: pre;"> </span>client.setOnload(resFunc);</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> <span class="Apple-tab-span" style="white-space: pre;"> </span>};</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> <span class="Apple-tab-span" style="white-space: pre;"> </span>client.send(data);</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">}</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">var client = Ti.Network.createHTTPClient({</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;"> onload : function(e) {</span></span><br />
<span style="font-size: x-small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;">alert('success '+this.responseText);</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> },</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;"> onerror : function(e) {</span></span><br />
<span style="font-size: x-small;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;">alert('error');</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> },</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> timeout : 5000 /* in milliseconds */</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> });</span><br />
<br />
<br />
Then I add a specific function for each API I'd like to call on the server:<br />
<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;">exports.login = function(user,pwd) {</span></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>send("login", {mail:user, password:pwd}, function(e) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> //alert(this.responseData);</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> Ti.App.fireEvent("gizmo_login_complete", JSON.parse(this.responseText));</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> });</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">};</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">exports.userInfo = function(resultFunction) {</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>send("user_info", {data:null}, resultFunction);</span><br />
<span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">};</span><br />
<div>
<br /></div>
<br />
In these two examples, I've Pass a function that would handle the particular case of returned data.<br />
For the login, I fire a Titanium event that is caught on the app.js while for the user info I inject the function each I do the call.<br />
<br />
<br />
<br />
<br /></div><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0tag:blogger.com,1999:blog-8843397059880399331.post-36681039935059443032012-03-20T12:33:00.002+11:002012-03-20T12:33:46.910+11:00Ruby hash to_xml residue<div dir="ltr" style="text-align: left;" trbidi="on">
When using the to_xml on a ruby hash object, it leaves a <hash> root.</hash><br />
The way to get rid of it is by explicitly specifying the root by the following:<br />
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span><br />
<span style="font-family: 'Courier New', Courier, monospace;">my_hash_object = {:a=>"a", :b=>"b"}</span><br />
<span style="font-family: 'Courier New', Courier, monospace;">result = my_hash_object.to_xml(:root=>"new_root")</span><br />
<br />
And that's what its all about.</div><div class="blogger-post-footer">this feed is brought to you by Gilad Manor http://giladmanor.com</div>giladmanorhttp://www.blogger.com/profile/09539994283922783215noreply@blogger.com0