<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8843397059880399331</id><updated>2012-01-20T07:51:27.085+11:00</updated><category term='persisted'/><category term='application scope'/><category term='web'/><category term='bug'/><category term='development'/><category term='Sydney'/><category term='actionscript 3'/><category term='open source'/><category term='insert'/><category term='desktop application'/><category term='darren saul'/><category term='Australia'/><category term='encryption'/><category term='sqlserver'/><category term='mouse'/><category term='agfa'/><category term='deflate'/><category term='performance'/><category term='sydney meetup'/><category term='item renderer'/><category term='xml'/><category term='i18n'/><category term='scala'/><category term='entrepreneur'/><category term='java'/><category term='mysql'/><category term='security'/><category term='Rails'/><category term='producer consumer'/><category term='Intellectual Property Rights'/><category term='sample'/><category term='flex'/><category term='scaffold'/><category term='component'/><category term='beta'/><category term='time track'/><category term='malformed'/><category term='shared memory'/><category term='annotation'/><category term='Protect Your Password'/><category term='report'/><category term='suppress'/><category term='Agile'/><category term='byte array'/><category term='software'/><category term='Business savvy'/><category term='optimization'/><category term='design'/><category term='ria'/><category term='mx'/><category term='release'/><category term='architecture'/><category term='factory'/><category term='proimage'/><category term='json'/><category term='disclaimer'/><category term='list'/><category term='rufus-scheduler'/><category term='cache'/><category term='time label'/><category term='TextInput'/><category term='skype'/><category term='tomcat'/><category term='event'/><category term='hacking'/><category term='itemrenderer'/><category term='export'/><category term='graph'/><category term='http'/><category term='application'/><category term='press'/><category term='adobe air'/><category term='compression'/><category term='lisence'/><category term='hebrew'/><category term='neo4j'/><category term='windows'/><category term='sydney open coffee'/><category term='port'/><category term='boxing'/><category term='embed'/><category term='database'/><category term='apache'/><category term='&quot;always on top&quot;'/><category term='TextArea'/><category term='getDefinitionByName'/><category term='Thread'/><category term='mdi'/><category term='1.8.7'/><category term='document'/><category term='white rabbit'/><category term='mysql2'/><category term='CSV'/><category term='Multi Treading'/><category term='log4j'/><category term='queue'/><category term='the easiest target'/><category term='tcp'/><category term='scrum'/><category term='NullPointerException'/><category term='sql'/><category term='Ruby'/><category term='httpservice'/><category term='mouseChildren'/><category term='right to left'/><category term='domain expert'/><category term='newsway'/><category term='wamp'/><category term='management'/><title type='text'>hands on Gilad Manor</title><subtitle type='html'>hands on java, ruby, flex and technology in general
Scala, PHP, rundll.exe, development, password generator, windows application, infoq, javaworld,</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5920185627243230415</id><published>2012-01-20T07:51:00.003+11:00</published><updated>2012-01-20T07:51:27.101+11:00</updated><title type='text'>Flex Debugging Not Working on Chrome w7</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The solution is &lt;a href="http://www.timo-ernst.net/2010/04/chrome-flash-debugger-not-connecting-to-flexflash-builder/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5920185627243230415?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5920185627243230415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2012/01/flex-debugging-not-working-on-chrome-w7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5920185627243230415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5920185627243230415'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2012/01/flex-debugging-not-working-on-chrome-w7.html' title='Flex Debugging Not Working on Chrome w7'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-1340488197995141361</id><published>2011-10-16T20:24:00.000+11:00</published><updated>2011-10-16T20:24:22.405+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql2'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Mysql2::Error (Invalid date: xx) on a text field?!</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I have this rule, the longer it takes to figure out a bug, the dumber the solution is going to be. This one was no exception.This bug on the rails adapter for mysql (the native &lt;b&gt;Mysql2&lt;/b&gt; for Windows) cost me a day and a half of bewilderment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The symptoms were that when populating a particular field in a table caused the &lt;b&gt;created_at&lt;/b&gt; filed that was directly after to corrupt.&lt;br /&gt;Although the entry would save successfully, once i tried to retrieve it, it would omit an &lt;b&gt;argument error&lt;/b&gt;, without&amp;nbsp; any explanations&amp;nbsp; or indication to the field that was causing the problem.&lt;br /&gt;&lt;br /&gt;After literally hours spent reinstalling and reconfiguring and redeploying my application and the run times involves i stumbled upon this error "&lt;b&gt;Mysql2::Error (Invalid date: xx)&lt;/b&gt;" where &lt;b&gt;xx &lt;/b&gt;was the text value of the field preceding the "created_at" standard field.&lt;br /&gt;A quick &lt;a href="http://www.google.com/search?gcx=w&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=rails+invalid+date+error+on+a+non+data+field#hl=en&amp;amp;pwst=1&amp;amp;sa=X&amp;amp;ei=NzqaTpe8EtCZhQenoLCDBA&amp;amp;ved=0CBkQvwUoAQ&amp;amp;q=Mysql2%3A%3AError+%28Invalid+date%3A+xx%29+on+a+text+field&amp;amp;spell=1&amp;amp;bav=on.2,or.r_gc.r_pw.,cf.osb&amp;amp;fp=a7d5b7030ebfa2c5&amp;amp;biw=1920&amp;amp;bih=989"&gt;search on Google&lt;/a&gt; pointed me to the bug in Mysql2.&lt;br /&gt; &lt;br /&gt;My solution was (cross my heart and hope to die) was to add an extra field that i never populate before the date fields. &lt;br /&gt;&lt;br /&gt;Good Luck.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-1340488197995141361?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/1340488197995141361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/10/mysql2error-invalid-date-xx-on-text.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1340488197995141361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1340488197995141361'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/10/mysql2error-invalid-date-xx-on-text.html' title='Mysql2::Error (Invalid date: xx) on a text field?!'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-1112212997329680990</id><published>2011-08-24T23:14:00.000+10:00</published><updated>2011-08-24T23:14:57.222+10:00</updated><title type='text'>Switching between Ruby Runtime versions on Windows</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;A nice tool for switching between ruby versions on windows is the&amp;nbsp;&lt;a href="https://github.com/vertiginous/pik"&gt;pik gem&lt;/a&gt;&lt;br /&gt;To use it, run&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;gem install pik&lt;/span&gt;&lt;br /&gt;Install locally&amp;nbsp;by running:&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;pik_install C&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;:\&lt;/span&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;pik&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;And add the installation dir (in this case c:\pik) to your system path.&lt;br /&gt;Once you have that set up, you add ruby installations by running&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;pik add C&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;:\&lt;/span&gt;&lt;span class="typ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #2b91af; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Ruby192&lt;/span&gt;&lt;span class="pun" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;\&lt;/span&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;bin&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;and switch&amp;nbsp;between&amp;nbsp;them by&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;&lt;span class="pln" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: black; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;pik &lt;/span&gt;&lt;span class="lit" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;192&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;&lt;span class="lit" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #eeeeee; 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; white-space: pre;"&gt;&lt;span class="lit" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-1112212997329680990?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/1112212997329680990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/08/switching-between-ruby-runtime-versions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1112212997329680990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1112212997329680990'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/08/switching-between-ruby-runtime-versions.html' title='Switching between Ruby Runtime versions on Windows'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7658394665752350914</id><published>2011-08-24T23:13:00.000+10:00</published><updated>2011-08-24T23:13:32.524+10:00</updated><title type='text'>Running Rails 3.x with mysql2 on Windows</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Every time I have to set up Ruby &amp;amp; Rails with MySQL on windows its the same old drag.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The easy part goes like this:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Installing Ruby 1.9&lt;/i&gt;: download &lt;a href="http://rubyinstaller.org/downloads"&gt;ruby installer&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Installing gem&lt;/i&gt;: &amp;nbsp;follow &lt;a href="http://docs.rubygems.org/read/chapter/3"&gt;gem installation instructions&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Install MYSQL&lt;/i&gt;: I like using the &lt;a href="http://www.wampserver.com/en/"&gt;WAMP &lt;/a&gt;server, but its also possible to go for the &lt;a href="http://dev.mysql.com/downloads/installer/5.5.html"&gt;MySQL regular installation&lt;/a&gt;&lt;br /&gt;and:&lt;br /&gt;&lt;i&gt;Install Rails 3.x&lt;/i&gt;: run &lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;b&gt;gem install rails&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But then you will need to:&lt;br /&gt;&lt;b&gt;Install mysql2 by&lt;i&gt;&amp;nbsp;&lt;/i&gt;running&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #fafafa; color: #444444; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 13px; line-height: 17px;"&gt;gem install mysql2 -v 0.2.6&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;and&lt;br /&gt;&lt;b&gt;Copy&amp;nbsp;&lt;span class="Apple-style-span" style="color: #666666;"&gt;libmySQL.dll&lt;/span&gt; from mysql bin to ruby-home/bin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now generate and run your server.&lt;br /&gt;Don't forget to configure your database.yml file&lt;br /&gt;&lt;br /&gt;Note: that if when sunning the server, it responds like:&lt;br /&gt;&lt;i&gt;Could not find gem 'mysql2 (~&amp;gt; 0.2.11)' in any of the gem sources listed in your Gemfile&lt;/i&gt;&lt;br /&gt;Then go into your server root directory and open up the Gemfile&lt;br /&gt;substitute the line:&lt;br /&gt;&lt;i&gt;gem 'mysql2', '~&amp;gt; 0.2.11'&lt;/i&gt;&lt;br /&gt;with&lt;br /&gt;&lt;i&gt;gem 'mysql2', '~&amp;gt; 0.2.6'&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;...And your good to go.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7658394665752350914?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7658394665752350914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/08/running-rails-3x-with-mysql2-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7658394665752350914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7658394665752350914'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/08/running-rails-3x-with-mysql2-on-windows.html' title='Running Rails 3.x with mysql2 on Windows'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-9114728401184723480</id><published>2011-08-11T06:00:00.000+10:00</published><updated>2011-08-11T06:00:28.676+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><category scheme='http://www.blogger.com/atom/ns#' term='1.8.7'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Ruby 1.8.7 CSV parser workaround</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Apparently there is some kind of problem when using the &lt;b&gt;CSV &lt;/b&gt;parser for particular text structures. I want able to determine the exact cause of this problem expect that for some &lt;b&gt;csv &lt;/b&gt;structures, the parse process result in an error.&lt;br /&gt;&lt;br /&gt;In my frustration I resorted to write my one parser that is implemented as following:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;b style="color: #0b5394;"&gt;def self.parse(text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rows=text.split("\r")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; res=[]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rows.each{|row|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; res &amp;lt;&amp;lt; row.split(",")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; res&lt;br /&gt;&amp;nbsp; end&lt;/b&gt;&lt;br /&gt;And amazingly enough, that's what did the trick.&lt;br /&gt;&lt;br /&gt;Independent on Sundays. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-9114728401184723480?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/9114728401184723480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/08/ruby-187-csv-parser-workaround.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/9114728401184723480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/9114728401184723480'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/08/ruby-187-csv-parser-workaround.html' title='Ruby 1.8.7 CSV parser workaround'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3798611235216103841</id><published>2011-08-02T10:03:00.000+10:00</published><updated>2011-08-02T10:03:01.542+10:00</updated><title type='text'>Flex and Rails</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;Hi Peter&lt;br /&gt;Thanks for visiting my blog&lt;br /&gt;&lt;br /&gt;In my company we have quite an extensive use of the ruby - flex combination, and to my experience it has the best results for the fastest development time.&lt;br /&gt;&lt;br /&gt;The key to communicate between rails and flex is to set up REST services that generate json/xml structures.&lt;br /&gt;&lt;br /&gt;On the server side, all you have to do is have the controller render the result as json/xml using the following line:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;render :json =&amp;gt; {an object with the data you want to send}&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;or&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;render :xml =&amp;gt; {an object with the data you want to send}&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It works just as well in rails 3 as in 2.x&lt;br /&gt;&lt;br /&gt;On the flex side, it gets a little more complicated, but in essence, you send an http request to the rails service and on the ResultEvent you encode the string you get to json/xml respectively&lt;br /&gt;&lt;br /&gt;here is a code example:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;protected function call(action:String,arg:Object,resFunc:Function, failFunc:Function,resultFromat:String="e4x"):void{&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var service:HTTPService;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service = new HTTPService();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.url = server+"/"+action;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.method = "POST";&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.contentType = "application/xml";&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.resultFormat = resultFromat;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.useProxy = false;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.addEventListener(ResultEvent.RESULT,resFunc);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.addEventListener(FaultEvent.FAULT, failFunc);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arg["account_id"] = accountId;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; arg["service_key"] = serviceKey;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var req:Object = new Object();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; req["data"] = arg&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; service.send(req);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;public function getDetails(result:Function,fault:Function):void{&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var o:Object = new Object();&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; call("get_details",o,result,fault);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;private function detailsResult(e:ResultEvent):void{&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; details= JSON.decode(String(e.result)); &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3798611235216103841?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3798611235216103841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/08/flex-and-rails.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3798611235216103841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3798611235216103841'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/08/flex-and-rails.html' title='Flex and Rails'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-18569304553697637</id><published>2011-08-01T09:36:00.000+10:00</published><updated>2011-08-01T09:36:04.859+10:00</updated><title type='text'>Where do Good Ideas Come From</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;At WikiBrains, we have solved this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/NugRZGDbPFU/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NugRZGDbPFU&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/NugRZGDbPFU&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned, while we change the world.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-18569304553697637?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/18569304553697637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/08/where-do-good-ideas-come-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/18569304553697637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/18569304553697637'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/08/where-do-good-ideas-come-from.html' title='Where do Good Ideas Come From'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-158992656689706267</id><published>2011-04-21T16:36:00.000+10:00</published><updated>2011-04-21T16:36:18.076+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rufus-scheduler'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Ruby rufus-scheduler on Rails</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I've been playing around with the &lt;a href="https://github.com/jmettraux/rufus-scheduler"&gt;rufus-scheduler&lt;/a&gt;, trying to make it work in a rails environment.&lt;br /&gt;The problem I was facing was that the new threads that were created by the scheduler for running the jobs were somehow detached from the the Active Record environment resulting in a failure to load my application models within their scope.&lt;br /&gt;&lt;br /&gt;Every time I tried loading a model object from the database I would get an error that the copy of my job instance &lt;i&gt;&lt;b&gt;"has been removed from the module tree but is still active"&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Pretty confusing&lt;br /&gt;&lt;br /&gt;My &lt;i&gt;cowboy programming&lt;/i&gt; solution for this was to activate a block as the job instance and in it invoke a controller. from the controller, I managed to access everything I needed in terms of active support.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The code as following:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;scheduler.every "10s" , :timeout =&amp;gt; "1m", :tags =&amp;gt; "etl_job" do |job|&lt;br /&gt;&amp;nbsp; url = "#{server_url}?tag=#{job.params[:tags]}"&lt;br /&gt;&amp;nbsp; run(url)&lt;br /&gt;end&lt;/blockquote&gt;The &lt;i&gt;&lt;b&gt;run&lt;/b&gt;&lt;/i&gt; is defined as:&lt;br /&gt;&lt;blockquote style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;def self.run(url)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logger.debug "--- Initiating Job with:&amp;nbsp; #{url} "&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uri = URI.parse(url)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; http = Net::HTTP.new(uri.host, uri.port)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; http.use_ssl = true if uri.scheme == 'https'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request = Net::HTTP::Get.new(uri.request_uri)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; response = http.request(request)&lt;br /&gt;&amp;nbsp; end&lt;/blockquote&gt;The url hits a controller and from there everything acts normally for rails.&lt;br /&gt;&lt;br /&gt;Independent on Sundays &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-158992656689706267?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/158992656689706267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2011/04/ruby-rufus-scheduler-on-rails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/158992656689706267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/158992656689706267'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2011/04/ruby-rufus-scheduler-on-rails.html' title='Ruby rufus-scheduler on Rails'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4344973807979921206</id><published>2010-12-09T22:32:00.001+11:00</published><updated>2010-12-09T22:34:45.745+11:00</updated><title type='text'>Israel 21c post on the tierx application</title><content type='html'>&lt;h2 class="contentheading"&gt;Prepare for a revolution in social media marketing&lt;span class="createby" style="color: #898989; font-size: 12px; font-weight: bold; margin-left: 40px; position: relative;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;h2 class="contentheading"&gt;&lt;span class="createby" style="color: #898989; font-size: 12px; font-weight: bold; margin-left: 40px; position: relative;"&gt;By Jeremy Last  &lt;/span&gt;&lt;/h2&gt;&lt;h2 class="contentheading"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;A groundbreaking product from an Israeli on-line marketing  service is set to revolutionize the way social media is utilized by the  corporate world.&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;Once the exclusive realm of a handful of computer geeks, over the  last five years social media networks have been transformed into an  Internet phenomenon with hundreds of millions of members.&lt;br /&gt;Businesses across the globe are aware of the potential inherent in  these networks to connect with customers, but few have been able to take  full advantage of the ever-growing databases belonging to websites like  Facebook and Twitter.&lt;br /&gt;Now a groundbreaking product, developed by Israel's on-line marketing service provider &lt;b&gt;&lt;a href="http://valueshine.com/"&gt;Valueshine&lt;/a&gt;&lt;/b&gt;, is set to revolutionize the way social media is utilized by the corporate world.&lt;br /&gt;Valueshine's &lt;b&gt;&lt;a href="http://tierx.valueshine.com/"&gt;Tier-x&lt;/a&gt;&lt;/b&gt;  software enables companies to turn every customer into a business  partner, generating their own profits through the power of social media  networking.&lt;br /&gt;These partners are able to bring in more customers, and earn money,  through the simple marketing power of personal recommendations.  Customers use social networks such as Facebook and Myspace as well as  email accounts like YahooMail and GMail to invite friends to join their  mini-network.&lt;br /&gt;&lt;b&gt;Taking the gaming world by storm&lt;/b&gt;&lt;br /&gt;The gaming industry has been the first to jump in. Six months after  Tier-x's January launch, Valueshine has already built a bespoke version  for leading online poker site &lt;b&gt;&lt;a href="http://www.noblepoker.com/"&gt;Noblepoker.com&lt;/a&gt;&lt;/b&gt;, owned by British-based Internet gaming conglomerate PartyGaming.&lt;br /&gt;Called the Noble Partners Program, it is the first time ever that  players are able to earn consistent dividends from online poker even  when they're not playing. This innovation is taking the Internet  gambling world by storm.&lt;br /&gt;Valueshine's chief technical officer Gilad Manor was a key member of  the team that developed Tier-x. He joined Valueshine in 2009 when it had  been providing boutique on-line marketing services for high-tech  companies, focusing on affiliate recruitment and management for six  years.&lt;br /&gt;"The obvious trend we saw was that the world is going social - in the  gaming industry, entertainment world, in news, even in the way people  shop, Manor tells ISRAEL21c. "The network is becoming global and local  at the same time. People have friends from all around the globe while  staying in close contact with the same group of people. The strength of  community-based services is on the rise."&lt;br /&gt;It was this realization which prompted the creation of Tier-x and  encouraged Noble Poker to get involved. Previously, on-line poker sites  generally attracted players through advertising and search engine  optimization. But Noble Partners relies on a far more reliable source -  word of mouth.&lt;br /&gt;&lt;b&gt;A new approach to business &lt;/b&gt;&lt;br /&gt;Launched in mid-August, the product already boasts hundreds of  members and Manor is excited by the potential impact the Partners  Program could have on the entire on-line poker industry. "This new  approach could change the way Internet poker companies do business. It's  very exciting," says Manor.&lt;br /&gt;Unlike other referral schemes, the Noble Partners Program pays  players every month rather than giving them a one-off bonus, and the  money earned is real cash. Once they become Noble Partners, players  create their own networks and then earn a percentage whenever their  friends play, with the cash paid directly into their Noble Poker account  each month.&lt;br /&gt;Manor has been "exhilarated" by the response to the launch of Tier-x  and sees the success of Noble Partners as only the tip of the iceberg.  "From the early, positive reactions we've been getting, I think it has  already changed the way things work in on-line poker.&lt;br /&gt;"I think the conventional ways of recruiting new players in the  gaming industry, particularly in the poker industry, are worn out. The  poker room companies are all using the same methods and nobody has any  edge. The Noble Partners Program is an edge no one else has right now."&lt;br /&gt;&lt;b&gt;A major change in marketing practices &lt;/b&gt;&lt;br /&gt;Valueshine is currently building similar products for other companies  and industries. According to Manor: "The advantages of advertising  through word-of-mouth marketing rather than the cumbersome traditional  advertising methods can be applied to most businesses. We can see hotels  and restaurants, credit card and insurance companies getting involved.&lt;br /&gt;"People are tired of the traditional advertising they are subjected  to day in, day out, on the Internet, on the television, on billboards.  You naturally build a wall and defend yourself from that mass exposure  to information. But in spite of that you always rely on a good word from  a friend. If a friend recommends something and enjoys it you are more  likely to use that and join that group yourself. That is what we are  building on," he tells ISRAEL21c.&lt;br /&gt;Manor is particularly enthused by Valueshine's placing itself on the  cutting edge of what could be a major change in marketing practices.  "The on-line social revolution is extremely exciting, and it's a great  feeling to be part of this global change with a solution like Tier-x.  The circle is widening and that's easy to understand when considering  the massive scale Tier-x can reach."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.israel21c.org/201011118503/technology/prepare-for-a-revolution-in-social-media-marketing"&gt;Original post at Israel21c&lt;/a&gt; &lt;br /&gt;&lt;h2 class="contentheading"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4344973807979921206?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4344973807979921206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/12/israel-21c-post-on-tierx-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4344973807979921206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4344973807979921206'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/12/israel-21c-post-on-tierx-application.html' title='Israel 21c post on the tierx application'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7442114053213280183</id><published>2010-11-30T20:31:00.000+11:00</published><updated>2010-11-30T20:31:29.874+11:00</updated><title type='text'>Where is Zed?</title><content type='html'>Yesterday, I said goodbye to a dear friend.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_K0XxPUglAM4/TPTDm2qmYvI/AAAAAAAABe0/EoZ5b7x54fs/s1600/ShaySarid.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_K0XxPUglAM4/TPTDm2qmYvI/AAAAAAAABe0/EoZ5b7x54fs/s320/ShaySarid.png" width="267" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will remember him for the joy, and for the good times.&lt;br /&gt;love you, Shay!&lt;br /&gt;&lt;br /&gt;Look over us.&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7442114053213280183?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7442114053213280183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/11/where-is-zed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7442114053213280183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7442114053213280183'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/11/where-is-zed.html' title='Where is Zed?'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_K0XxPUglAM4/TPTDm2qmYvI/AAAAAAAABe0/EoZ5b7x54fs/s72-c/ShaySarid.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2369334595097284860</id><published>2010-11-11T20:57:00.001+11:00</published><updated>2010-11-11T20:59:36.533+11:00</updated><title type='text'>Rails Application variable II</title><content type='html'>Ah, it turns out that my heist and ignorance in Ruby and Rails I missed out on the Rails.cache options.&lt;br /&gt;All you need is...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; def self.alive? (id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Rails.cache.read(id)!=nil and (Time.now - Rails.cache.read(id))&amp;lt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rails.cache.delete(id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; def self.present(id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rails.cache.write(id,Time.now)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(...love)&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2369334595097284860?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2369334595097284860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/11/rails-application-variable-ii.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2369334595097284860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2369334595097284860'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/11/rails-application-variable-ii.html' title='Rails Application variable II'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3942121373187607489</id><published>2010-10-31T10:51:00.001+11:00</published><updated>2010-10-31T22:48:37.853+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thread'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='application scope'/><category scheme='http://www.blogger.com/atom/ns#' term='shared memory'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Rails Application variable</title><content type='html'>It almost seemed that there was no easy way out of putting application scope variables in the database.&lt;br /&gt;But there is a way out:&lt;br /&gt;&lt;b style="color: #38761d;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if Thread.main[:uuid] == nil &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.main[:uuid]=0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uid = Thread.main[:uuid] += 1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This code accesses the mail thread of the rails process and puts a variable on it. (the thread is an object and can have key =&amp;gt; value sets)&lt;br /&gt;And since rails has only one main thread... its shared with all the threads underneath.&lt;br /&gt;&lt;br /&gt;Good Luck&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3942121373187607489?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3942121373187607489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/rails-application-variable.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3942121373187607489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3942121373187607489'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/rails-application-variable.html' title='Rails Application variable'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5638737983442332153</id><published>2010-10-29T11:05:00.000+11:00</published><updated>2010-10-29T11:05:30.300+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='i18n'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><title type='text'>Multilingual Support for Flex</title><content type='html'>Some Cowboy coding techniques for supporting multilingual flex interfaces:&lt;br /&gt;Instead of the usual form (&lt;a href="http://www.adobe.com/devnet/air/flex/articles/localizing_flex_air_apps.html"&gt;from an Adobe development center post&lt;/a&gt;):&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: #274e13; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt;...text="{resourceManager.getString('resources', 'POSTDISPLAY_POST_TITLE')}"...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;My label looks like:&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: #274e13; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt;...text="{gS['POSTDISPLAY_POST_TITLE']}"...&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Which is so much shorter and nicer to read when you are coding.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;gS &lt;/b&gt;is actually a static object (i.e. hash map) that I load with all the key:value pairs of the language.&lt;br /&gt;Once you declare &lt;b&gt;gS &lt;/b&gt;as &lt;span style="color: #0b5394;"&gt;[&lt;/span&gt;&lt;b style="color: #0b5394;"&gt;Bindable&lt;/b&gt;&lt;span style="color: #0b5394;"&gt;]&lt;/span&gt; you can replace the object at runtime with other languages, resulting with the replacement of all the strings in the application.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Note&lt;/b&gt;: the compiler issues a warning that since you are using square brackets, the GUI object will not be able to detect changes in the data source. &lt;b&gt;Well, it does&lt;/b&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Independent on Sundays&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace; font-size: 14px; line-height: 19px; white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5638737983442332153?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5638737983442332153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/multilingual-support-for-flex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5638737983442332153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5638737983442332153'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/multilingual-support-for-flex.html' title='Multilingual Support for Flex'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4600656221671483274</id><published>2010-10-28T20:33:00.000+11:00</published><updated>2010-10-28T20:33:56.296+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skype'/><category scheme='http://www.blogger.com/atom/ns#' term='port'/><category scheme='http://www.blogger.com/atom/ns#' term='wamp'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>"localhost" Server isn't working? Blame Skype!</title><content type='html'>&lt;img alt="Skype is the Devil" src="http://i155.photobucket.com/albums/s317/PUMPKINZ07/DevilSkype.png" /&gt;It took me a while to reach this grim conclusion, The Skype client blocks quite allot of communication ports on the machine its running on. &lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;, &lt;a href="http://www.wampserver.com/en/"&gt;WAMP &lt;/a&gt;and &lt;a href="http://rubyonrails.org/"&gt;RoR&lt;/a&gt; are effected (as far as i can tell).&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;Kill the Skype process.&lt;br /&gt;&lt;br /&gt;Good Luck.&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4600656221671483274?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4600656221671483274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/localhost-server-isnt-working-blame.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4600656221671483274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4600656221671483274'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/localhost-server-isnt-working-blame.html' title='&quot;localhost&quot; Server isn&apos;t working? Blame Skype!'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-6057257784860608605</id><published>2010-10-27T19:38:00.000+11:00</published><updated>2010-10-27T19:38:22.199+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlserver'/><category scheme='http://www.blogger.com/atom/ns#' term='insert'/><title type='text'>Exporting from SQLServer to SQL insert script</title><content type='html'>The problem:&lt;br /&gt;Export data from an MS SQL server to an SQL script of insert statements&lt;br /&gt;&lt;br /&gt;It appears that there is no built in option for performing such a simple a task. After all, SQL is the common protocol for SQL based databases.&lt;br /&gt;&lt;br /&gt;What i did manage to find is a script (stored procedure) for &lt;a href="http://vyaskn.tripod.com/code/generate_inserts.txt"&gt;SQLServer 2000&lt;/a&gt; and &lt;a href="http://vyaskn.tripod.com/code/generate_inserts_2005.txt"&gt;SQLServer 2005&lt;/a&gt;&lt;br /&gt;The original post and instructions are available &lt;a href="http://vyaskn.tripod.com/code.htm#inserts"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Good luck&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-6057257784860608605?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/6057257784860608605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/exporting-from-sqlserver-to-sql-insert.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/6057257784860608605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/6057257784860608605'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/exporting-from-sqlserver-to-sql-insert.html' title='Exporting from SQLServer to SQL insert script'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-984579651076256953</id><published>2010-10-24T06:22:00.000+11:00</published><updated>2010-10-24T06:22:40.313+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>AAdmin - Flex on Rails Agile Admin Application</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_K0XxPUglAM4/TMKvBOgNA_I/AAAAAAAABdo/1Ij3V885VMs/s1600/AAdmin.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://3.bp.blogspot.com/_K0XxPUglAM4/TMKvBOgNA_I/AAAAAAAABdo/1Ij3V885VMs/s200/AAdmin.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;b&gt;AAdmin &lt;/b&gt;is a little project I'm developing on the side, for &lt;a href="http://valuehsine.com/"&gt;Valueshine&lt;/a&gt; which in essence is a fast Administration Application based on a Ruby on Rails back-end and a Flex Web front-end.&lt;br /&gt;&lt;br /&gt;I love fast development mainly because I'm a lazy son of a batch file and for some reason, I feel that Ruby and Rails was made just for people like me.&lt;br /&gt;&lt;br /&gt;Having a server side application that 70% of its tasks sum up to persistence functionality just screamed scaffolding to me. the only obvious difference is that for the sake of using a flex client, i would have to skip over the default view machinery, that are generated by the rails scaffold.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Pre Programming: &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;I've created the alternative controller template so scaffolding command would generate an XML based web service.&lt;br /&gt;to match that I've written an ActionScript client side that talks CRUD on the one side and hands out a set of a-sync methods on the other side.&lt;br /&gt;&lt;br /&gt;The application, is based on the two elements described above, let me have a RoR restful web services that would accommodate a rich client. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;The server:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;I have employed a standard scaffold script generation with a tweak to the controller template. this change bypasses the standard view that is created by Rails to relay on pure XML rendering.&lt;br /&gt;there is one extra controller that is utilized for configuration data purpose. I use it for authentication, and to extract the entities structure xml file. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;The Client:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;This part is where the quick admin app comes to play. the AAdmin client enables all CRUD functionality on a list of entities, predefined in an entity xml.&lt;br /&gt;the client logs in, extracts the entity xml file, and presents the table structure and functionality according to the definitional in the file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Screen shoots:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="219" src="http://1.bp.blogspot.com/_K0XxPUglAM4/TMKzzp9fB0I/AAAAAAAABds/gqqhhxsxbuY/s320/aa1.png" style="margin-left: auto; margin-right: auto;" width="320" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;AAdmin &lt;/b&gt;Login Screen.&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_K0XxPUglAM4/TMKzzp9fB0I/AAAAAAAABds/gqqhhxsxbuY/s1600/aa1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="196" src="http://2.bp.blogspot.com/_K0XxPUglAM4/TMKz5agA5VI/AAAAAAAABdw/qELMcEFdCl0/s320/aa2.png" style="margin-left: auto; margin-right: auto;" width="320" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The &lt;b&gt;CRUD &lt;/b&gt;Data View&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_K0XxPUglAM4/TMKz5agA5VI/AAAAAAAABdw/qELMcEFdCl0/s1600/aa2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="196" src="http://1.bp.blogspot.com/_K0XxPUglAM4/TMKz9T79n4I/AAAAAAAABd0/-ca4MPKb2hU/s320/aa3.png" style="margin-left: auto; margin-right: auto;" width="320" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The &lt;b&gt;Create &lt;/b&gt;and &lt;b&gt;Edit &lt;/b&gt;screen&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Resources: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://softarama.com/labs/ROR/public/scaffold_templates/new/controller.rb"&gt;controller.rb&lt;/a&gt; - scaffold template for xml web services&lt;/li&gt;&lt;li&gt;&lt;a href="http://softarama.com/labs/ROR/public/scaffold_templates/orig/controller.rb"&gt;controller.rb&lt;/a&gt; - original template&lt;/li&gt;&lt;li&gt;&lt;a href="http://softarama.com/labs/ROR/public/ActiveResourceClient.as"&gt;ActiveReasourceClient.as&lt;/a&gt; - client side adapter&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-984579651076256953?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/984579651076256953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/aadmin-flex-on-rails-agile-admin.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/984579651076256953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/984579651076256953'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/aadmin-flex-on-rails-agile-admin.html' title='AAdmin - Flex on Rails Agile Admin Application'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K0XxPUglAM4/TMKvBOgNA_I/AAAAAAAABdo/1Ij3V885VMs/s72-c/AAdmin.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4765810411834605115</id><published>2010-10-20T05:29:00.001+11:00</published><updated>2010-10-20T05:37:25.329+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='httpservice'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='scaffold'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><title type='text'>Flex for Rails Scaffolding (cont) - the controller template</title><content type='html'>I've made a little improvement&amp;nbsp; to my development process, in such a way that the scaffolding i do for creating the web services I later use for my flex client are generated in their final form without the need to adjust them.&lt;br /&gt;What i did was make some changes to the controller scaffold template.&lt;br /&gt;The controller.rb template file is located at: &lt;span style="color: purple;"&gt;[Ruby Home]\lib\ruby\gems\1.8\gems\rails-2.3.4\lib\rails_generator\generators\components\scaffold\templates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Backup the original (or pick it up from &lt;a href="http://softarama.com/labs/ROR/public/scaffold_templates/orig/controller.rb"&gt;here&lt;/a&gt;).&lt;br /&gt;Download the &lt;a href="http://softarama.com/labs/ROR/public/scaffold_templates/new/controller.rb"&gt;modified template&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Template should end up looking like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;class &amp;lt;%= controller_class_name %&amp;gt;Controller &amp;lt; ApplicationController&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def index&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.all&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @&amp;lt;%= file_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;/1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;/1.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def show&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.find(params[:id])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @&amp;lt;%= file_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;/new&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;/new.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def new&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.new&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @&amp;lt;%= file_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # GET /&amp;lt;%= table_name %&amp;gt;/1/edit&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def edit&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.find(params[:id])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @&amp;lt;%= file_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # POST /&amp;lt;%= table_name %&amp;gt;&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # POST /&amp;lt;%= table_name %&amp;gt;.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def create&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.new(params[:&amp;lt;%= file_name %&amp;gt;])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if @&amp;lt;%= file_name %&amp;gt;.save&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; '&amp;lt;%= class_name %&amp;gt; was successfully created.'}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; @&amp;lt;%= file_name %&amp;gt;.errors}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # PUT /&amp;lt;%= table_name %&amp;gt;/1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # PUT /&amp;lt;%= table_name %&amp;gt;/1.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def update&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.find(params[:id])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if &amp;lt;%= file_name %&amp;gt;.update_attributes(params[:&amp;lt;%= file_name %&amp;gt;])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; '&amp;lt;%= class_name %&amp;gt; was successfully updated.'}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; @&amp;lt;%= file_name %&amp;gt;.errors}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # DELETE /&amp;lt;%= table_name %&amp;gt;/1&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; # DELETE /&amp;lt;%= table_name %&amp;gt;/1.xml&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; def destroy&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt; = &amp;lt;%= class_name %&amp;gt;.find(params[:id])&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @&amp;lt;%= file_name %&amp;gt;.destroy&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; '&amp;lt;%= class_name %&amp;gt; was successfully deleted.'}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4765810411834605115?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4765810411834605115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/10/flex-for-rails-scaffolding-cont.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4765810411834605115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4765810411834605115'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/10/flex-for-rails-scaffolding-cont.html' title='Flex for Rails Scaffolding (cont) - the controller template'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2127055303665349735</id><published>2010-09-24T08:57:00.000+10:00</published><updated>2010-09-24T08:57:53.362+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='scaffold'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Flex For Rails Scaffold</title><content type='html'>I’ve written a little component for connecting flex with rails scaffold as close as possible. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 1: Create a scaffold for Card&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Within your rails application run the script:&lt;br /&gt;&lt;pre&gt;./script/generate scaffold card id:integer timeStamp:timestamp data:text&lt;/pre&gt;&lt;br /&gt;(&lt;a href="http://www.orthogonalthought.com/blog/index.php/2007/06/mysql-and-ruby-on-rails-datatypes/" target="_blank"&gt;data types with Ruby and mySQL&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 2: Change the Card controller &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Edit the Card Controller found at: &lt;a href="http://labs.softarama.com/ROR/public/cards_controller.rb" target="_blank"&gt;myApp/app/controllers/cards_controller.rb&lt;/a&gt; and remove all view elements. this will make the controller omit pure XML structures&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;should result with the controller looking like:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class CardsController &amp;lt; ApplicationController &lt;br /&gt;&amp;nbsp; # GET /cards &lt;br /&gt;&amp;nbsp; # GET /cards.xml &lt;br /&gt;&amp;nbsp; def index &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @cards = Card.all &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @cards &lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /cards/1 &lt;br /&gt;&amp;nbsp; # GET /cards/1.xml &lt;br /&gt;&amp;nbsp; def show &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.find(params[:id]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @card &lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /cards/new &lt;br /&gt;&amp;nbsp; # GET /cards/new.xml &lt;br /&gt;&amp;nbsp; def new &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.new &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @card &lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # GET /cards/1/edit &lt;br /&gt;&amp;nbsp; def edit &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.find(params[:id]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; @card &lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # POST /cards &lt;br /&gt;&amp;nbsp; # POST /cards.xml &lt;br /&gt;&amp;nbsp; def create &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.new(params[:card]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if @card.save &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; 'Card was successfully updated.'} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; @card.errors} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # PUT /cards/1 &lt;br /&gt;&amp;nbsp; # PUT /cards/1.xml &lt;br /&gt;&amp;nbsp; def update &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.find(params[:id]) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if @card.update_attributes(params[:card]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; 'Card was successfully updated.'} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; @card.errors} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&amp;nbsp; end &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; # DELETE /cards/1 &lt;br /&gt;&amp;nbsp; # DELETE /cards/1.xml &lt;br /&gt;&amp;nbsp; def destroy &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card = Card.find(params[:id]) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @card.destroy &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; render :xml =&amp;gt; {:notice =&amp;gt; 'Card was successfully updated.'} &lt;br /&gt;&lt;br /&gt;&amp;nbsp; end &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Step 3: Client Side&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To connect to the Rails server use an intermediate adapter called &lt;a href="http://labs.softarama.com/ROR/public/ActiveResourceClient.as" target="_blank"&gt;ActiveResourceClient.as&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For testing, use the &lt;a href="http://labs.softarama.com/ROR/public/ServiceTester.mxml" target="_blank"&gt;ServiceTester.mxml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;good luck&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2127055303665349735?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2127055303665349735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/09/flex-for-rails-scaffold.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2127055303665349735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2127055303665349735'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/09/flex-for-rails-scaffold.html' title='Flex For Rails Scaffold'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7324536026362064247</id><published>2010-09-13T19:44:00.000+10:00</published><updated>2010-09-13T19:44:32.069+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='byte array'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><title type='text'>Passing a Byte Array through JSON</title><content type='html'>Its a well known issue when communicating complex structures between client and server, using the JSON encoding.&lt;br /&gt;I've encountered it when attempting to transfer an encrypted Byte Array back and forth between a client and server, that communicate via JSON.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What doesn't work:&lt;/b&gt; &lt;br /&gt;Base64 encodings and conversions to string formats&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What does work:&lt;/b&gt; &lt;br /&gt;Converting the Byte[] to a number array and back&lt;br /&gt;&lt;br /&gt;Here is an example code in Flex (works just as well in Java / PHP / Python etc)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_K0XxPUglAM4/TI3x1MUXSbI/AAAAAAAABcs/0fH3Y8WsUQs/s1600/Untitled-1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="376" src="http://3.bp.blogspot.com/_K0XxPUglAM4/TI3x1MUXSbI/AAAAAAAABcs/0fH3Y8WsUQs/s400/Untitled-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Independent on Sundays&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7324536026362064247?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7324536026362064247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/09/passing-byte-array-through-json.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7324536026362064247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7324536026362064247'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/09/passing-byte-array-through-json.html' title='Passing a Byte Array through JSON'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K0XxPUglAM4/TI3x1MUXSbI/AAAAAAAABcs/0fH3Y8WsUQs/s72-c/Untitled-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5683939010160357108</id><published>2010-08-14T18:21:00.000+10:00</published><updated>2010-08-14T18:21:26.855+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='itemrenderer'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='item renderer'/><title type='text'>Flex List Item Renderer Repetition</title><content type='html'>The Flex implementation of lists, data grids, and advanced data grids  generate a fixed amount of item renderer components that usually match  the first visible set of elements in the list.&lt;br /&gt;This implementation might cause that elements in the list seem to repeat them selves once you scroll down.&lt;br /&gt;&lt;br /&gt;This is because although the items data is different, since its display  object hasn't been properly refreshed, it shows the data it has from its  previous appearance.&lt;br /&gt;To solve this follow these guidelines:&lt;br /&gt;1. do not set data inline i.e.&lt;b&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mx:label text="{data.text}" &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;2. implement the renderers &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;updateDisplayList&lt;/span&gt; &lt;/b&gt;method to set all the data in place&lt;br /&gt;&lt;br /&gt;that's it, &lt;br /&gt;good luck&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5683939010160357108?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5683939010160357108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/08/flex-list-item-renderer-repetition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5683939010160357108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5683939010160357108'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/08/flex-list-item-renderer-repetition.html' title='Flex List Item Renderer Repetition'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3266031791768346960</id><published>2010-04-01T04:29:00.000+11:00</published><updated>2010-04-01T04:29:27.336+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='deflate'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe air'/><title type='text'>Flex Directory Compression</title><content type='html'>&lt;div style="text-align: justify;"&gt;Here is an example for compression and decompression of files and directories  using the DEFLATE compression algorithm.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The structure I have created for the file structure in the compressed file is  arbitrary.&amp;nbsp; for each file it describes the name and data witch is a byte array  of the file content. Directories do not have a data attribute, but children that  recursively describe files with in.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Download the source code &lt;a href="http://dl.dropbox.com/u/1403101/stuff/Delfator/Deflator.src.rar" target="_blank"&gt;here&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Download the example AIR application &lt;a href="http://dl.dropbox.com/u/1403101/stuff/Delfator/Deflator.air" target="_blank"&gt;here&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://3.bp.blogspot.com/_K0XxPUglAM4/S7OFqBUJ5NI/AAAAAAAABX8/6xlzxsfJfMI/s1600/Untitled.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_K0XxPUglAM4/S7OFqBUJ5NI/AAAAAAAABX8/6xlzxsfJfMI/s320/Untitled.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When running the example, drag and drop&amp;nbsp;a file or directory into the upper  box, this will catch the link and create a compressed version of the file in the  application storage directory (i.e. &lt;em&gt;&lt;user directory="" home=""&gt;/AppData/Roaming/Deflator/Local Store&lt;/user&gt;&lt;/em&gt;) &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To extract the file back, click on the compressed file in the list and click  the&amp;nbsp;extract&amp;nbsp;button. This will recreate the file or directory on your desktop.  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;em&gt;&lt;strong&gt;Please note: &lt;/strong&gt;that if the original file is still on the  desktop when you extract, you will have an error. so if you deflated something  from the desktop, make sure you rename it before you extract&lt;/em&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Good luck.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3266031791768346960?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3266031791768346960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/04/flex-directory-compression.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3266031791768346960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3266031791768346960'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/04/flex-directory-compression.html' title='Flex Directory Compression'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K0XxPUglAM4/S7OFqBUJ5NI/AAAAAAAABX8/6xlzxsfJfMI/s72-c/Untitled.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5976317821498605930</id><published>2010-03-24T22:25:00.000+11:00</published><updated>2010-03-24T22:25:48.454+11:00</updated><title type='text'>First Steps for Apache Pivot, Java-based RIA Framework</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Lucida,'Lucida Grande',Tahoma,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;a href="http://pivot.apache.org/index.html" style="color: #0b59b2; text-decoration: underline;"&gt;Apache Pivot&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;is an open source project, which attempts to create a modern, rich client development platform in Java. Pivot started off as an R&amp;amp;D effort at VMWare in 2007 and was released as an open-source project in June 2008 under the&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html" style="color: #0b59b2; text-decoration: underline;"&gt;Apache 2.0 license&lt;/a&gt;. Pivot then joined the&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://incubator.apache.org/" style="color: #0b59b2; text-decoration: underline;"&gt;Apache Incubator&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;in January 2009 and graduated as a top-level Apache project in December 2009. Pivot is currently driven entirely by the software development community.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Lucida,'Lucida Grande',Tahoma,sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;a href="http://www.infoq.com/news/2010/03/apache-pivot"&gt;Read more on InfoQ&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5976317821498605930?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5976317821498605930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/03/first-steps-for-apache-pivot-java-based.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5976317821498605930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5976317821498605930'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/03/first-steps-for-apache-pivot-java-based.html' title='First Steps for Apache Pivot, Java-based RIA Framework'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7618741388537534450</id><published>2010-03-21T20:41:00.000+11:00</published><updated>2010-03-21T20:41:04.388+11:00</updated><title type='text'>GigaSpaces XAP 7.1 EA: Elastic Middleware, Data Querying and Spring 3.x</title><content type='html'>GigaSpaces XAP is a distributed application server with an in-memory data grid. The XAP 7.1 release includes a number of themes: an Elastic Middleware Service, enhanced virtualization compatibility, data querying, an updated web-based management application, embedded Spring 3.0, and performance improvements. &lt;a href="http://www.infoq.com/news/2010/03/xap-71-pre"&gt;InfoQ explored this EA release to learn more&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7618741388537534450?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7618741388537534450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/03/gigaspaces-xap-71-ea-elastic-middleware.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7618741388537534450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7618741388537534450'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/03/gigaspaces-xap-71-ea-elastic-middleware.html' title='GigaSpaces XAP 7.1 EA: Elastic Middleware, Data Querying and Spring 3.x'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7846882064734739742</id><published>2010-03-05T00:36:00.013+11:00</published><updated>2010-03-05T00:46:23.911+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop application'/><category scheme='http://www.blogger.com/atom/ns#' term='Protect Your Password'/><category scheme='http://www.blogger.com/atom/ns#' term='encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe air'/><title type='text'>Protect Your Passwords! A beta release</title><content type='html'>&lt;div align="justify"&gt;The past month I have spent time developing a little desktop application for safe guarding web account details. This application helps in maintaining a well organized database of secret account information and free text notes, in an ordered and easy to find manner. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;What makes it so safe?&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;This application installs on your local desktop, so the information you type into it never leaves your computer. This application encrypts everything you put into it using a high, U.S. government approved standard called AES-128 (&lt;a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard"&gt;Advanced Encryption Standard&lt;/a&gt;). This application uses the password you provide as part of the encryption key ensuring no one else can breach the critical information you have, unless he has your password. It’s important to remember that nothing is 100% safe, but it helps not to be the easiest pray.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;u&gt;This beta release includes&lt;/u&gt;:&lt;/div&gt;&lt;div align="justify"&gt;· An encrypted database, using AES-128&lt;/div&gt;&lt;div align="justify"&gt;· Managing records for web accounts, mail accounts, software registration and general notes&lt;/div&gt;&lt;div align="justify"&gt;· Managing categories for organizing the records (including custom categories)&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;u&gt;The next release (not a beta) will include&lt;/u&gt;:&lt;/div&gt;&lt;div align="justify"&gt;· File attachments (you will be able to drag in and out files and the system will encrypt/decrypt them accordingly)&lt;/div&gt;&lt;div align="justify"&gt;· Backups (you would be able to have temporal backups and retrieve data in case the computer got corrupted, all backups are fully protected)&lt;/div&gt;&lt;div align="justify"&gt;· Any cool feature I get from people using it (email me for special requests: &lt;a href="mailto:giladmanor@yahoo.com"&gt;giladmanor@yahoo.com&lt;/a&gt;)&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;u&gt;Installing the &lt;i&gt;Protect Your Passwords!&lt;/i&gt; application&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;The installation process is very simple; and it works for all major Operating systems (i.e. windows, Mac and Linux) just follow the instructions on the badge:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div id="flashcontent" style="height: 180px; width: 215px;"&gt;&lt;b&gt;To intsall this application please follow these two steps&lt;/b&gt;&lt;br /&gt;1. Install &lt;a href="http://get.adobe.com/air/"&gt;Adobe Air&lt;/a&gt;&lt;br /&gt;2. Download and run &lt;a href="http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/ProtectYourPasswords.air"&gt;Protect Your Password&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/swfobject.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;  // &lt;![CDATA[  // version 9.0.115 or greater is required for launching AIR apps.     var so = new SWFObject("http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/AIRInstallBadge.swf", "", "237", "203", "9.0.115", "#000000");  so.addVariable("airversion", "1.0");  so.addVariable("appname", "Protect%20Your%20Passwords!");  so.addVariable("appurl", "http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/ProtectYourPasswords.air");  so.addVariable("image", "http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/Untitled-2.jpeg");  so.addVariable("appid", "ProtectYourPasswords");  so.addVariable("pubid", "GiladManor.com");  so.addVariable("appversion", "Beta");  so.addVariable("hidehelp", "true");  so.addVariable("skiptransition", "true");  so.addVariable("str_install", "Get%20It%20Free");  so.write("flashcontent");    // ]]&gt; &lt;/script&gt;&lt;br /&gt;Or &lt;a href="http://dl.dropbox.com/u/1403101/stuff/ProtectYourPassword/ProtectYourPasswords.air"&gt;download &lt;/a&gt;directly and run installation manually.&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&amp;nbsp;After installing you will find the following icon on your desktop:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_K0XxPUglAM4/S4-vacPTSvI/AAAAAAAABUk/xJva1UH78zo/s1600-h/appIcon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_K0XxPUglAM4/S4-vacPTSvI/AAAAAAAABUk/xJva1UH78zo/s320/appIcon.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&amp;nbsp; &lt;/div&gt;&lt;div align="justify"&gt;Double click it, to run the application. After consenting on the disclaimer, you will be asked to enter your master password in a screen shown in figure 1&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh6.ggpht.com/_K0XxPUglAM4/S4-hM0VzUlI/AAAAAAAABTs/u49cXQ9oDYE/s1600-h/1%5B3%5D.jpg"&gt;&lt;img alt="1" border="0" height="275" src="http://lh3.ggpht.com/_K0XxPUglAM4/S4-iYivN_sI/AAAAAAAABTw/FAFIqv0vq4I/1_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="1" width="361" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 1:&lt;/b&gt; Master Password Creation. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The master password is the one password you will need to remember from now on, and better not forget. The master password is used as the key for the encryption of the file containing all the vital data. This means that the encryption is unique to you. The master password registration screen requires you to enter a password of a certain minimum length. While typing your master password the password strength indicator will let you know who safe your password is.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;u&gt;&lt;b&gt;Using the application&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div align="justify"&gt;Once the master password is entered, the next time you open this application you will be asked to enter your master password in order to unlock the application, see figure 2.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/S4-jktB9UqI/AAAAAAAABT0/HL8YBREzSJU/s1600-h/2%5B3%5D.jpg"&gt;&lt;img alt="2" border="0" height="271" src="http://lh5.ggpht.com/_K0XxPUglAM4/S4-kwW64gqI/AAAAAAAABT4/jXoKWhFTvV4/2_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="2" width="354" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 2:&lt;/b&gt; the login screen&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Failing to provide the correct password for over 4 times locks the application, as displayed in figure 3. The reason for this is to make life harder for hackers using automation software to try and guess your password.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/S4-l74EQabI/AAAAAAAABT8/vwbFXxEidJo/s1600-h/3%5B3%5D.jpg"&gt;&lt;img alt="3" border="0" height="118" src="http://lh3.ggpht.com/_K0XxPUglAM4/S4-nHprt_MI/AAAAAAAABUA/GNs6-A0Kc6w/3_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="3" width="274" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 3: &lt;/b&gt;a locked application, no further attempts are allowed until the application is restarted&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;i&gt;&lt;b&gt;Important note: If you forget your master password, there is no way to retrieve the data, not even me, since I will have to have the correct password to decrypt the database.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;After logging in, the application dashboard is opened up, where you have shortcuts to all the important features of the application, as displayed in figure 4.&amp;nbsp;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh4.ggpht.com/_K0XxPUglAM4/S4-oTKG0y1I/AAAAAAAABUE/TsXMEoVwYtU/s1600-h/4%5B3%5D.jpg"&gt;&lt;img alt="4" border="0" height="268" src="http://lh5.ggpht.com/_K0XxPUglAM4/S4-pe3OyxXI/AAAAAAAABUI/SC_vYJ3vZGY/4_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="4" width="350" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 4: &lt;/b&gt;the application dashboard&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;From the dashboard you can:&lt;/div&gt;&lt;div align="justify"&gt;· Search for a protected record, the search is either by a search phrase or by category&lt;/div&gt;&lt;div align="justify"&gt;· Create a new record&lt;/div&gt;&lt;div align="justify"&gt;· Create your own categories, delete existing categories (deleting a category doesn’t delete the records that were related to it)&lt;/div&gt;&lt;div align="justify"&gt;· Change your master password&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Not yet in this version: the settings screen for advanced configuration&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;u&gt;&lt;b&gt;Searching for Records:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div align="justify"&gt;To find a record you are looking for, you may either click on the category it belongs to, or click the search records button. This will move you to the search screen displayed in figure 7.&lt;/div&gt;&lt;div align="justify"&gt;The new record button will move you to the details screen for entering a new record, displayed in figure 6&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The new category button will open up a popup for entering a label for a new category as shown in the following figure 5&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/S4-pfPnHd8I/AAAAAAAABUM/v38HjQ1o9r4/s1600-h/5%5B3%5D.jpg"&gt;&lt;img alt="5" border="0" height="120" src="http://lh5.ggpht.com/_K0XxPUglAM4/S4-pfln_HMI/AAAAAAAABUQ/8jK7tFahPHk/5_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="5" width="280" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 5: &lt;/b&gt;creating a custom category&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Removing an existing category envolves right clicking on the category you would like to remove and selecting “delete”.&lt;/div&gt;&lt;div align="justify"&gt;Clicking the change master password button on the dashboard directs you to the master password screen as displayed in figure 1. Failing to complete this form will leave you with the previous password.&lt;/div&gt;&lt;div align="justify"&gt;Creating a new record is done by the new record screen depicted in figure 6&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/S4-pgRwOLFI/AAAAAAAABUU/L5iir_YPzBw/s1600-h/6%5B3%5D.jpg"&gt;&lt;img alt="6" border="0" height="288" src="http://lh4.ggpht.com/_K0XxPUglAM4/S4-pg0-tnZI/AAAAAAAABUY/qidMmG8x58M/6_thumb%5B1%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="6" width="378" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 6: &lt;/b&gt;creating a new record&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The record form is structured from two input arias, once for standard details, as displayed in figure 6, and the other is for free text notes, which is accessible by clicking on the “Notes” bar in the bottom of the details screen.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Note that when entering a new account, the details form allows you to create a random password to use on the web account. Since you don’t have to remember the special password, it’s easier to have web accounts that are even more secure. Choose the length of password you would like to have and click on the “Generate” button to render a unique password.&lt;/div&gt;&lt;div align="justify"&gt;For convenience, you can put the web address (URL) of the site for the web account. This is saved for later quick access but is not mandatory. &lt;/div&gt;&lt;div align="justify"&gt;The tags have no significant use for now, but in later releases, I intend to have advanced searched and categorization according to these tags, so it might be useful to start tagging your information.&lt;/div&gt;&lt;div align="justify"&gt;Exiting the application or this screen without clicking on the save button; will result in loss of the changes.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The search screen, as shown in figure 7 allows you to look for a particular record of information either by selecting a category, or by a search phase, or a combination of both.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/S4-phQaKH5I/AAAAAAAABUc/GAuhzfJ49QI/s1600-h/7%5B4%5D.jpg"&gt;&lt;img alt="7" border="0" height="307" src="http://lh4.ggpht.com/_K0XxPUglAM4/S4-piOzIdYI/AAAAAAAABUg/PpzoihxRRjI/7_thumb%5B2%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="7" width="401" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Figure 7: &lt;/b&gt;the search screen&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Once you found the record you were looking for, there are several functionality shortcuts you can access on the record display:&lt;/div&gt;&lt;div align="justify"&gt;· Navigate to the web account site by clicking the label. This feature is available only if you entered a valid URL in the link filed on the details form, as shown in figure 6. If you left the field empty, then clicking on the label will open the record for editing&lt;/div&gt;&lt;div align="justify"&gt;· Copy USER NAME to clipboard, this is available to you only if you put the user in the user field in the details form&lt;/div&gt;&lt;div align="justify"&gt;· Copy PASSWORD to clipboard, this is available to you only if you put the user in the password field in the details form.&lt;/div&gt;&lt;div align="justify"&gt;· The little x button is for deleting the record&lt;/div&gt;&lt;div align="justify"&gt;· The little pencil button is for opening the record for editing&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Clicking on any of the category icons on the side will automatically change the search result to include the selected category. &lt;/div&gt;&lt;div align="justify"&gt;That’s it for now, please remember that I welcome any suggestion warmly, feel free to send your suggestions to my mail at: &lt;a href="mailto:giladmanor@yahoo.com"&gt;giladmanor@yahoo.com &lt;/a&gt;or by posting it as a response on this blog.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7846882064734739742?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7846882064734739742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/03/protect-your-passwords-beta-release.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7846882064734739742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7846882064734739742'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/03/protect-your-passwords-beta-release.html' title='Protect Your Passwords! A beta release'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K0XxPUglAM4/S4-vacPTSvI/AAAAAAAABUk/xJva1UH78zo/s72-c/appIcon.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-9137851826882865377</id><published>2010-02-14T03:44:00.001+11:00</published><updated>2010-03-10T18:55:22.035+11:00</updated><title type='text'>Flex Asynchronous Ciphering using as3crypto</title><content type='html'>&lt;div style="text-align: justify;"&gt;Built myself a little &lt;b&gt;&lt;i&gt;password safe &lt;/i&gt;&lt;/b&gt;application based on Adobe AIR, and one of the features I wanted to put into it was to store encrypted files. I downloaded the &lt;a href="http://code.google.com/p/as3crypto/" target="_blank"&gt;as3crypto&lt;/a&gt; package from google code, and had my encryption/decryption functionality ready and working in an hour.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It was working smoothly right until I tries to use&amp;nbsp; it on a slightly larger file (a 6.7Mb image file) when the application froze and i got the “&lt;i&gt;Not responding&lt;/i&gt;” message on the title of the application window. The application defrosted after a while and the file was processed properly, but it had the GUI locked for far too long.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;No worries, I said to myself, all I need is some background process to do the dirty work while the GUI stays free for working with me.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Its a shame that Adobe Flex do not support multi threads.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Eventually I worked around this problem and wrote a component that interlaces calls to whatever function you give it, so the GUI wont freeze. (see my post on &lt;a href="http://giladmanor.blogspot.com/2010/02/flex-as3-multi-treading-workaround.html" target="_blank"&gt;flex multi threading workaround&lt;/a&gt;).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Then I took to the task of making my ciphering class work a chunk at a time. After a superficial profiling session I came to the conclusion that the reading and writing of the files are by far cheaper operations then the ciphering, so the steps used in the solution are:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Initiate everything: read source file into memory&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Interlace on encrypt and decrypt for a small chunk at a time&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Finalize: write file&amp;nbsp;      &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;i&gt;Note: I made a lenient assumption that I wouldn't store a file I cant open all at once.&lt;/i&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;When I put everything together, it didn't work. I kept crashing on decryption and got an error saying: &lt;b&gt;Error: PKCS#5:unpad: Invalid padding value. expected [252], found [152]&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;I had a vague&amp;nbsp; idea what this meant, but no idea what I was doing wrong. The answer came to me an hour after i posted &lt;a href="http://stackoverflow.com/questions/2246571/padding-error-in-as3crypto-when-trying-to-work-a-sync" target="_blank"&gt;a mayday question on stack overflow&lt;/a&gt;. so I posted the answer too: &lt;/div&gt;&lt;blockquote style="color: #444444;"&gt;&lt;div align="justify"&gt;&lt;i&gt;the encryption and decryption actions change the actual chunk size. in the &lt;b&gt;processChunck&lt;/b&gt; method, the ByteArray length before encryption was 16400 and after changed to 16416. using the decrypt changes the ByteArray length from 16416 back to 16400.&lt;/i&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;i&gt;hence the solution i chose was to use two numeric values, one for each method used.&lt;/i&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;i&gt;I have no idea why this happens, its not the padding (tested it with Crypto.getPad("none")).&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div align="justify"&gt;So now I'm sharing it with the world (or rather with the 6 other people who viewed the question in stack overflow so far)&lt;/div&gt;&lt;div align="justify"&gt;Requirements:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Download and add the &lt;a href="http://code.google.com/p/as3crypto/" target="_blank"&gt;as3crypto&lt;/a&gt; package from &lt;i&gt;google code&lt;/i&gt;&amp;nbsp; into your project&lt;/li&gt;&lt;li&gt;Create an interlacing component that would call the async-crypto in pace with the GUI frame rate (or use what i wrote: &lt;a href="http://giladmanor.com/2010/02/flex-as3-multi-treading-workaround.html" target="_blank"&gt;here&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;&amp;nbsp; &lt;/div&gt;&lt;div align="justify"&gt;Download the source for the &lt;a href="http://dl.dropbox.com/u/1403101/stuff/CryptoAsync.rar"&gt;CryptoAsync &lt;/a&gt;and add it into your project.&lt;/div&gt;&lt;div align="justify"&gt;Usage example:&lt;/div&gt;&lt;div style="color: #38761d; text-align: left;"&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-size: xx-small;"&gt;var aCrypt:CryptoAsync = new CryptoAsync("C:/screen.jpg","C:/xxx.crp",key,CryptoAsync.ENCRYPT);       &lt;br /&gt;aCrypt.getSet();        &lt;br /&gt;asyncThread.exec(aCrypt.run,aCrypt);&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-size: xx-small;"&gt;var aCrypt:CryptoAsync = new CryptoAsync("C:/xxx.crp","C:/result.jpg",key,CryptoAsync.DECRYPT);       &lt;br /&gt;aCrypt.getSet();        &lt;br /&gt;asyncThread.exec(aCrypt.run,aCrypt);&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div align="justify"&gt;When:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;key&lt;/b&gt; is a string of your liking&lt;/li&gt;&lt;li&gt;&lt;b&gt;asyncTread&lt;/b&gt; is an instance of &lt;b&gt;&lt;i&gt;AsyncThreadComponent&lt;/i&gt;&lt;/b&gt; you can find &lt;a href="http://giladmanor.com/2010/02/flex-as3-multi-treading-workaround.html" target="_blank"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;good luck&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-9137851826882865377?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/9137851826882865377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/02/flex-asynchronous-ciphering-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/9137851826882865377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/9137851826882865377'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/02/flex-asynchronous-ciphering-using.html' title='Flex Asynchronous Ciphering using as3crypto'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-7581778568162588034</id><published>2010-02-12T09:14:00.004+11:00</published><updated>2011-07-30T07:30:32.792+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Multi Treading'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe air'/><title type='text'>Flex AS3 Multi Treading Workaround</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Its well known that the current versions of Flex (using either the flash or AIR players) do not provide support for multithreading. Everything you do is loaded on the same main thread that is running the GUI too. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;This restriction means that if you have to do a dutiful task, the GUI actually stops responding to the user and&amp;nbsp; your app may even get the “&lt;b&gt;Not Responding&lt;/b&gt;” label in the title bar while its off processing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The way to bypass this issue is to follow two guidelines&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Break down the big process in to smaller, manageable runs. this means that if you have a loop that each iteration is taxing, you would want to call that loop one iteration at a time. &lt;/li&gt;&lt;li style="text-align: justify;"&gt;Call the single iteration in a way that interlaces with the GUI refresh rate. &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://dl.dropbox.com/u/1403101/stuff/AsyncThreadComponent.rar" target="_blank"&gt;Here&lt;/a&gt; is a simple GUI component that you may place on your application, to invoke calls on some other process without hampering the responsiveness of the GUI.     &lt;/div&gt;&lt;div style="text-align: justify;"&gt;The method you call by this component has to be in the nature of:&lt;/div&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #008040;"&gt;function&lt;/span&gt; &lt;b&gt;runFunction&lt;/b&gt;(data:Object):&lt;span style="color: blue;"&gt;Boolean&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://184.106.82.6/downloads/threads-AS.rar" target="_blank"&gt;Download zip file for AsyncThreadComponent&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usage:&lt;/b&gt;&lt;br /&gt;Paste this on your app: &lt;br /&gt;&lt;div style="color: #3d85c6;"&gt;&amp;lt;view:AsyncThreadComponent id="asyncThread" /&amp;gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When you want something to be invoked, create an object and pass the method:&lt;/div&gt;&lt;b&gt;asyncThread.exec(theObject.runFunction,theObject);&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Independent on Sundays&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-7581778568162588034?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/7581778568162588034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2010/02/flex-as3-multi-treading-workaround.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7581778568162588034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/7581778568162588034'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2010/02/flex-as3-multi-treading-workaround.html' title='Flex AS3 Multi Treading Workaround'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-6344490073724707736</id><published>2009-12-18T09:03:00.003+11:00</published><updated>2009-12-18T09:07:13.484+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='component'/><category scheme='http://www.blogger.com/atom/ns#' term='time label'/><title type='text'>The TimeLabel component</title><content type='html'>&lt;p&gt;The time label component is something I slapped together to show accumulated time. Its an enhanced ActionScript3 &lt;em&gt;Label &lt;/em&gt;with a simple API for making it tick.&lt;/p&gt;  &lt;p&gt;Input a numeric value of &lt;em&gt;time in milliseconds&lt;/em&gt;, and the &lt;span style="font-weight: bold; font-style: italic;"&gt;TimeLabel &lt;/span&gt;will display it grouped nicely in days, hours minutes and seconds.&lt;/p&gt;  &lt;p&gt;Invoke the time label’s &lt;em&gt;start&lt;/em&gt;/&lt;em&gt;stop&lt;/em&gt; to make it count seconds in any direction you like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/SyqqxKRMAWI/AAAAAAAABLk/IfwYvtuyvVE/s1600-h/Untitled-1%5B5%5D.png"&gt;&lt;img style="border: 0px none ; display: inline;" title="Untitled-1" alt="Untitled-1" src="http://lh5.ggpht.com/_K0XxPUglAM4/Syqqxp0U5UI/AAAAAAAABLo/Ddv8hDd6SI0/Untitled-1_thumb%5B1%5D.png?imgmax=800" border="0" width="244" height="116" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This is the image of the &lt;strong&gt;&lt;em&gt;TimeLabel&lt;/em&gt;&lt;/strong&gt;, I surrounded with the controls that operate its API.&lt;/p&gt;  &lt;h4&gt;The API is as following:&lt;/h4&gt;  &lt;p&gt;Set and retrieve the numeric value representing time in milliseconds (&lt;em&gt;&lt;strong&gt;note&lt;/strong&gt;; there is no numeric validation, so its up to you&lt;/em&gt;):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;function set data(value:Object):void&lt;/li&gt;    &lt;li&gt;function get data():Object&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Start and stop the timer:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;function start():void&lt;/li&gt;    &lt;li&gt;function stop():void&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Determine if the timer goes up or down:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;function increment():void&lt;/li&gt;    &lt;li&gt;function decrement():void&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://dl.dropbox.com/u/1403101/stuff/TimeLabel.as" target="_blank"&gt;download source code&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-6344490073724707736?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/6344490073724707736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/12/timelabel-component.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/6344490073724707736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/6344490073724707736'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/12/timelabel-component.html' title='The TimeLabel component'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_K0XxPUglAM4/Syqqxp0U5UI/AAAAAAAABLo/Ddv8hDd6SI0/s72-c/Untitled-1_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3538199177877532444</id><published>2009-11-17T08:14:00.002+11:00</published><updated>2009-12-10T01:05:45.119+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disclaimer'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='sample'/><title type='text'>Software Disclaimer Sample</title><content type='html'>&lt;p&gt;I’ve found this text:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;font size="1"&gt;&lt;strong&gt;This SOFTWARE PRODUCT is provided by THE PROVIDER &amp;quot;as is&amp;quot; and &amp;quot;with all faults.&amp;quot; THE PROVIDER makes no representations or warranties of any kind concerning the safety, suitability, lack of viruses, inaccuracies, typographical errors, or other harmful components of this SOFTWARE PRODUCT. There are inherent dangers in the use of any software, and you are solely responsible for determining whether this SOFTWARE PRODUCT is compatible with your equipment and other software installed on your equipment. You are also solely responsible for the protection of your equipment and backup of your data, and THE PROVIDER will not be liable for any damages you may suffer in connection with using, modifying, or distributing this SOFTWARE PRODUCT.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;(taken from: &lt;a href="http://www.deq.louisiana.gov"&gt;www.deq.louisiana.gov&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;just have to replace “THE PROVIDER”&amp;#160; with your name or company name, and hopefully it should be ok.&lt;/p&gt;  &lt;p&gt;if anyone knows about a better generic disclaimer for software, i would really appreciate a tip.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3538199177877532444?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3538199177877532444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/11/software-disclaimer-sample.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3538199177877532444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3538199177877532444'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/11/software-disclaimer-sample.html' title='Software Disclaimer Sample'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2847296481892713634</id><published>2009-11-16T17:02:00.001+11:00</published><updated>2009-11-16T17:02:44.680+11:00</updated><title type='text'>Crafting blog</title><content type='html'>&lt;p&gt;I've revived my old “practical art” blog with some things I've done lately. &lt;/p&gt;  &lt;p&gt;Lately I have been spending my time either on the White Rabbit project or in my studio, making pots and bowls. &lt;/p&gt;  &lt;p&gt;This is the link to my crafty blog: &lt;a title="http://practicalart.blogspot.com/" href="http://practicalart.blogspot.com/"&gt;http://practicalart.blogspot.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And here is a screen shot from the new White Rabbit version:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_K0XxPUglAM4/SwDrAqviidI/AAAAAAAABBU/s-8H1ro-5hM/s1600-h/wr%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wr" border="0" alt="wr" src="http://lh6.ggpht.com/_K0XxPUglAM4/SwDrA79-d-I/AAAAAAAABBY/eiyb-oGTEvs/wr_thumb%5B1%5D.jpg?imgmax=800" width="340" height="362" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this version I thought it nice to use the spring-graph by &lt;a href="http://mark-shepherd.com/blog/"&gt;Mark Shepherd&lt;/a&gt;. I’m not sure its the best concept, but its lots of fun.&lt;/p&gt;  &lt;p&gt;I’ve also been playing around with the skinning, but i haven't mastered it yet ( as one can see )&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2847296481892713634?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2847296481892713634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/11/crafting-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2847296481892713634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2847296481892713634'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/11/crafting-blog.html' title='Crafting blog'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_K0XxPUglAM4/SwDrA79-d-I/AAAAAAAABBY/eiyb-oGTEvs/s72-c/wr_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3501063179233198691</id><published>2009-09-12T00:39:00.004+10:00</published><updated>2009-09-13T03:28:05.142+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Scala, the java of the future</title><content type='html'>&lt;p align="justify"&gt;&lt;strong&gt;The tug-o-war of software development languages gets really confusing; it’s hard to decide what language would prevail and become the new standard in application development. Why is it important? Because we are application developers, and our relevance in the business landscape is linked to the tools we are skilled in operating. &lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;I have heard Professor &lt;a href="http://www.scala-lang.org/node/241"&gt;Martin Odersky&lt;/a&gt; say that &lt;em&gt;&lt;b&gt;Scala is the java of the future&lt;/b&gt;&lt;/em&gt;. Although I cannot vogue for such a promise, I can certainly say that &lt;strong&gt;Scala is the most compelling language I have encountered&lt;/strong&gt;. &lt;/p&gt;  &lt;p align="justify"&gt;Scala has incorporated many ideas, new and old from the other existing languages. Scala functional and object oriented. It has cool stuff like &lt;a href="http://www.scala-lang.org/node/126"&gt;traits&lt;/a&gt; (aka &lt;a href="http://en.wikipedia.org/wiki/Mixin"&gt;mixins&lt;/a&gt;) and &lt;a href="http://www.scala-lang.org/node/242"&gt;Actors&lt;/a&gt; (&lt;a href="http://erlang.org/doc/getting_started/part_frame.html"&gt;erlang style threads&lt;/a&gt;) and &lt;a href="http://www.scala-lang.org/node/120"&gt;advanced pattern matching&lt;/a&gt;. Most of all, Scala is expressive and esthetic. Clean and comprehensible code means easy and efficient maintenance, and that is important.&lt;/p&gt;  &lt;p align="justify"&gt;Scala runs over the JVM. Hence Scala can call upon java functionality and vice versa. Scala also has a .net support but that is not my scope at this time. According to professor Odersky, the overall performance is not hampered and the results are &lt;em&gt;&lt;b&gt;usually as fast as Java&lt;/b&gt;&lt;/em&gt;. Michael Galpin posted some figures about Scala performance on his blog &lt;a href="http://fupeg.blogspot.com/2008/06/scala-vs-java-performance.html"&gt;here&lt;/a&gt; and Nick Wiedenbrueck compared Scala, Java and Groovy &lt;a href="http://stronglytypedblog.blogspot.com/2009/07/java-vs-scala-vs-groovy-performance.html"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Following are some interesting links I found for getting into Scala top down:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Presentations:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;A nice introduction to pragmatic &lt;a href="http://www.infoq.com/presentations/Scala-Jonas-Boner"&gt;Scala development by Jonas Boner&lt;/a&gt; and  the &lt;a href="http://www.slideshare.net/jboner/pragmatic-real-world-scala-45-min-presentation"&gt;presentation slides&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Introduction to &lt;a href="http://www.infoq.com/presentations/lift-web-framework-scala-pollack"&gt;Lift by David Pollak&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;A conversation on &lt;a href="http://blip.tv/file/2484840"&gt;Scala and Groovy by Scott Davis, featuring Dr. Venkat Subramaniam&lt;/a&gt;: &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;Articles:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.artima.com/scalazine/articles/steps.html"&gt;First steps in Scala&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scala-lang.org/docu/files/ScalaByExample.pdf"&gt;Scala by example&lt;/a&gt; (pdf): &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;Downloads:&lt;/u&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.scala-lang.org/downloads/distrib/files/scala-2.7.5.final-installer.jar"&gt;SDK&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scala-lang.org/node/91#ide_plugins"&gt;IDE plugins&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3501063179233198691?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3501063179233198691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/09/scala-java-of-future.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3501063179233198691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3501063179233198691'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/09/scala-java-of-future.html' title='Scala, the java of the future'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2473868435630564573</id><published>2009-09-07T19:23:00.006+10:00</published><updated>2009-09-09T15:09:44.804+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newsway'/><category scheme='http://www.blogger.com/atom/ns#' term='agfa'/><category scheme='http://www.blogger.com/atom/ns#' term='proimage'/><category scheme='http://www.blogger.com/atom/ns#' term='press'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>The NewsWay Reports</title><content type='html'>&lt;p style="text-align: justify" align="justify"&gt;This is the marketing leaflet for the product I am managing for &lt;a href="http://newsway.com/"&gt;&lt;em&gt;ProImage&lt;/em&gt;&lt;/a&gt; which is a subsidiary of &lt;a href="http://www.agfa.com/en/co/index.jsp"&gt;&lt;em&gt;Agfa&lt;/em&gt;&lt;/a&gt;. &lt;em&gt;ProImage&lt;/em&gt; specializes in pre press workflows with its leading product called &lt;em&gt;NewsWay&lt;/em&gt;. The &lt;em&gt;NewsWay&lt;/em&gt; Reports is an enterprise solution that complements the&amp;#160; production workflow and facilitates executive decision making.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_K0XxPUglAM4/Sqc4BYtDZQI/AAAAAAAAAlU/QvGf8QrW3w4/s1600-h/nwr%20b-front%5B7%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="nwr b-front" border="0" alt="nwr b-front" align="left" src="http://lh3.ggpht.com/_K0XxPUglAM4/Sqc4BwmIUdI/AAAAAAAAAlY/p6QGhFE0qnk/nwr%20b-front_thumb%5B5%5D.jpg?imgmax=800" width="156" height="193" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://lh5.ggpht.com/_K0XxPUglAM4/Sqc4CSP8spI/AAAAAAAAAlc/GElGUC-m3Ss/s1600-h/nwr%20b-back%5B5%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="nwr b-back" border="0" alt="nwr b-back" src="http://lh3.ggpht.com/_K0XxPUglAM4/Sqc4CyagPmI/AAAAAAAAAlg/SGI22MYmPnQ/nwr%20b-back_thumb%5B3%5D.jpg?imgmax=800" width="163" height="204" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;&lt;span style="font-size: 130%"&gt;Production events analysis&lt;/span&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;span style="font-size: 130%"&gt;Graphical data visualization&lt;/span&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;&lt;span style="font-size: 130%"&gt;A production data warehouse&lt;/span&gt;&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NewsWay Reports provides easy and quick access and analysis of accumulated production data. This enables you to tune and optimize production for maximum performance, at minimum cost.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This powerful browser-based report generation software provides the ability to compare planned schedules with actual job completion, track deadlines, evaluate plate consumption and track waste. It allows you to review file input and output time of each NewsWay workflow process, and log user times.&lt;/p&gt;  &lt;p&gt;This facilitates the rapid identification of production bottlenecks and enables you to make real-time adjustments to your production.&lt;/p&gt;  &lt;p&gt;NewsWay Reports integrates with any workflow. The reports generated are easily exported to PDF or Excel formats, making them accessible by other people within your organization. You can even automate the creation and distribution of status reports to the executive management for “first thing in the morning”.&lt;/p&gt;  &lt;p&gt;The production statistics are accessible from the NewsWay Reports viewer and via any 3rd party data visualization tool, providing you with the tools you need for in depth analysis of production.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Make the right decisions with NewsWay Reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;NewsWay Reports is a browser based application allowing easy and quick access to accumulated production data. The data is presented in a consistent, easy to read format, enabling statistical analysis to be performed effortlessly and facilitating better decision making.&lt;/p&gt;  &lt;p&gt;Additionally, its advanced querying capabilities enable in-depth analysis of production data, customized to your requirements.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;High Performance Backbone&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;NewsWay Reports is anchored on a specialized Reports Data Processor. The Reports Data Processor gathers production information and performance details from the machines without hampering the production flow of events. The accumulated data is reshaped to fit into a data warehouse where the production information can later be queried with simplicity and efficiency, guaranteeing high performance response to queries.&lt;/p&gt;  &lt;p&gt;The vast amount of information gathered in such a data warehouse enables tracking of even the minutest of trends and bottlenecks.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Comprehensive reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;NewsWay Reports offers three suites of reports designed to meet your budget and needs. All suites include the NewsWay Reports Data Processor and NewsWay Reports Data Warehouse&lt;b&gt;.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NewsWay Basic Reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ideal for many, this solution comes complete with a basic set of reports for output statistics and analysis, workflow throughput, and reporting on historical data.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NewsWay Enterprise Reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;NewsWay Enterprise Reports provides an extended suite of reports that additionally include reports for enterprise transmission and waste analysis.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NewsWay First Class Reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This solution is fully customizable. It provides a tailored solution to meet the needs of the most demanding print production organization.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Credits for the leaflet are to Izzet Edige (ProImage) and Richard Hall (Media Matters).&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.scribd.com/doc/19488940/NewsWay-Reports-Brochure"&gt;View in Scribd&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2473868435630564573?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2473868435630564573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/09/newsway-reports.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2473868435630564573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2473868435630564573'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/09/newsway-reports.html' title='The NewsWay Reports'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_K0XxPUglAM4/Sqc4BwmIUdI/AAAAAAAAAlY/p6QGhFE0qnk/s72-c/nwr%20b-front_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-838174139895118090</id><published>2009-08-20T18:27:00.005+10:00</published><updated>2009-08-25T06:47:47.410+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Application performance, the highways and the sideways (opinion)</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	mso-themecolor:hyperlink; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	mso-themecolor:hyperlink; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;The phrase “&lt;span style="font-style: italic;"&gt;everything should work as fast as possible&lt;/span&gt;” describes the wrong way for developing software. Software is a means to an aim. The aim is a functionality of a sort, just like a car or a house. When constructing a solution, one has to take performance in the context of the solution and not as an ideology. &lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;Imagine how a house would look like if the drive way was paved four lanes wide just for the sake of performance.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The prioritization of performance is determined by the business requirements. A thorough analysis of the required throughput in each of the application flows reveals by itself the highways and the sideways.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Marking the road map in such a way is not premature optimization, but the proper use of the information that the architect has from day one. The final tuning can be done at the later stages when performance issues come up. However, developers need to know how wide the road they are paving should be.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;See also “&lt;a href="http://giladmanor.com/2009/03/data-buckets.html"&gt;Data Buckets&lt;/a&gt;”.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-838174139895118090?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/838174139895118090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/08/application-performance-highways-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/838174139895118090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/838174139895118090'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/08/application-performance-highways-and.html' title='Application performance, the highways and the sideways (opinion)'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4857851301869151736</id><published>2009-08-11T04:10:00.016+10:00</published><updated>2009-08-16T17:36:48.439+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intellectual Property Rights'/><category scheme='http://www.blogger.com/atom/ns#' term='lisence'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='the easiest target'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>License security in Java, don’t be the easiest target</title><content type='html'>&lt;p style="text-align: justify;"&gt;&lt;b&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/SoBigtzU7cI/AAAAAAAAAhQ/Hb8J4pBOttQ/s1600-h/230420091109%5B5%5D.jpg"&gt;&lt;img style="border: 0px none ; display: inline; margin-left: 0px; margin-right: 0px; width: 217px; height: 138px;" title="230420091109" alt="230420091109" src="http://lh4.ggpht.com/_K0XxPUglAM4/SoBihUtatGI/AAAAAAAAAhU/Uun1erSFYEE/230420091109_thumb%5B3%5D.jpg?imgmax=800" align="left" border="0" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;b&gt;Java based enterprise products that are not open source have a big issue with Intellectual Property Rights license protection. The relative ease of byte code decompilation makes it easy to copy the product with the license protection disabled. One can measure the magnitude of the problem just by counting the number of products that claim to have the solution. Dongle, code encryption or machine signatures are popular techniques for license security. However, there is always that weak link, that single validation method, returning a Boolean that checks the existence of the license. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A friend of mine once suggested that instead of striving to be perfect, it’s better to invest just enough to avoid being the easiest target. It’s easy to spot this strategy in nature. If you happen to be a wilder beast, you don’t have to be the fastest runner to survive. Just make sure there are a few others slower then you. If you are a zebra, just go stand next to the wilder beast. When I park next to a Lexus, I don’t bother to lock the doors.&lt;/p&gt;  &lt;p&gt;The way to implement this strategy over software licensing is by understanding the domain of product hacking and license cracking for enterprise installed software. The goal would be to introduce enough complications in order just to become “not the easiest target”. &lt;/p&gt;  &lt;h3 style="color: rgb(204, 102, 0);"&gt;Understanding the domain&lt;/h3&gt;  &lt;p&gt;A business would choose the illegal options of requesting a hacked product if they are far enough or obscure enough from the hands of the IPR owner and only if the cost of the cracked software is considerably lower than the license fee. &lt;/p&gt;  &lt;p&gt;The basic interaction with a hacker is; “&lt;i&gt;I give you money and you give me a working version of the product without the license verification part&lt;/i&gt;”. Since any single method is prone to be broken eventually, sooner or later the hacker will deliver the “goods” as promised; a cracked version of the product. &lt;/p&gt;  &lt;p&gt;The weakness in the hacker’s ‘user story’ is that although the hacker is a master in the technology he employs, he knows nothing about the domain of the product. Thus, obscuring and masking the validation for the license into multiple points in the business logic is an advantage for the IPR owner.&lt;/p&gt;  &lt;h4&gt;Create an illusion&lt;/h4&gt;  &lt;p&gt;By all means, use all the conventional protections; obfuscate the code so it won’t be a picnic after JAD (Java De-compiler). Encrypt and put signatures on the classes that handle the license, and so on. Make the hacker sweat a little, in his comfort zone, before he delivers a hacked version that is not really cracked. &lt;/p&gt;  &lt;h4&gt;Take no immediate action&lt;/h4&gt;  &lt;p&gt;The easiest way for a hacker to pinpoint the license validation code, is by the actions that are taken by your software when the license is invalidated. The easy points to spot may be log messages, explicitly stating the lack of license or the point where the system freezes up, that’s where the hacker starts his reverse engineering. Instead, do the unexpected. Randomization of decision (heads to freeze, tails to grace), Postponing the enforcement action, and reusing the validation variables for other purposes would make the hacking task so much harder. &lt;/p&gt;  &lt;h4&gt;Dead code&lt;/h4&gt;  &lt;p&gt;Implanting license validation code is business logic that is called upon in very specific conditions is probably the best cloaking method. The way to reveal license validations that are hidden in obscured parts of code would be to run every possible scenario. The hacker would have a learning curve to adjust to the unfamiliar domain, in the mean while the business that bought the hacking would suffer more than one production cycle that goes bad on account of licensing.&lt;/p&gt;  &lt;h4&gt;No Code Reuse please&lt;/h4&gt;  &lt;p&gt;As code reuse makes code more readable, the way to secure the license validation would be the exact opposite. Repeat the functionality of the validation without referencing or even repeating the code.&lt;/p&gt;  &lt;h3 style="color: rgb(204, 102, 0);"&gt;In summary&lt;/h3&gt;  &lt;p&gt;The bottom line is money. The price of an acquisition of a legitimate license compared to the price and risks involved in deploying a hacked version. All you have to do is break the hacker’s promise of his delivery. Instability and unpredictability in a hacked product, and an expensive hacking process can bring you just far enough from being &lt;i&gt;the easiest target&lt;/i&gt;. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4857851301869151736?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4857851301869151736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/08/license-security-in-java-dont-be.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4857851301869151736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4857851301869151736'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/08/license-security-in-java-dont-be.html' title='License security in Java, don’t be the easiest target'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_K0XxPUglAM4/SoBihUtatGI/AAAAAAAAAhU/Uun1erSFYEE/s72-c/230420091109_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-8745106445767081815</id><published>2009-08-03T20:29:00.003+10:00</published><updated>2009-08-03T20:37:34.028+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='suppress'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='mouseChildren'/><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><title type='text'>Suppress mouse events on child components - Flex3</title><content type='html'>A college of mine showed me that in order to suppress mouse events on children components is by the obscure property of  &lt;span style="font-weight: bold; font-style: italic;"&gt;mouseChildren =  false;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I use it when i want to catch a mouse event on a container, regardless of the component within that container that was exactly under the mouse.&lt;br /&gt;&lt;br /&gt;There is no way under the heavens to guess this is the functionality of a property with such a name.&lt;br /&gt;&lt;br /&gt;Thanks Liran.&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-8745106445767081815?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/8745106445767081815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/08/suppress-mouse-events-on-child.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8745106445767081815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8745106445767081815'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/08/suppress-mouse-events-on-child.html' title='Suppress mouse events on child components - Flex3'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-8428901162421982495</id><published>2009-07-18T06:50:00.004+10:00</published><updated>2009-07-22T07:01:30.879+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><category scheme='http://www.blogger.com/atom/ns#' term='graph'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='annotation'/><title type='text'>Down the rabbits hole with neo4j (Part 1)</title><content type='html'>&lt;p style="font-weight: bold;"&gt;While standing on one foot, I would say that the neo4j project is an implementation for an embedded java graph database. Unlike the traditional relation databases, the graph database has no table structure for storing its data. Instead it uses a more dynamic (unstructured) network composition. Using mathematical terminology, a network of nodes is called a graph.&lt;/p&gt;  &lt;p&gt;I’ll put my other foot down now. &lt;/p&gt;  &lt;p&gt;Applications use an object data structure in order to describe and abstract the business domain they address. Stitching together the object oriented structure onto the table oriented data structure of a relational database is a major part of the time consumed in server side programming. This price has been, and still is willingly paid because of the absolute reliability of the traditional relational data structures. &lt;/p&gt;  &lt;p&gt;Truth to be said, there are implementations that make much more sense when persisted using tables. However, I would dare to argue that when querying becomes complex and cumbersome, it just might be a sign that the persisting method isn’t appropriate.&lt;/p&gt;  &lt;p&gt;The unstructured graph database leads the field when it comes to implementing an ad-hoc structure that is prone to runtime changes. &lt;/p&gt;  &lt;p&gt;I decided to give it a try after watching &lt;a href="http://www.infoq.com/presentations/emil-eifrem-neo4j"&gt;Emil Efirem’s demonstration&lt;/a&gt; on the web and I’m sharing my experience as I played around with three aspects of use:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Part 1: Converting plain java data objects into persisted neo nodes &lt;/li&gt;    &lt;li&gt;Part 2: Managing lookups &lt;/li&gt;    &lt;li&gt;Part 3: Experimenting With Transactions &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Setting up a neo4j environment&lt;/h4&gt;  &lt;p&gt;The neo4j jars are available on: &lt;a href="http://neo4j.org/download"&gt;http://neo4j.org/download&lt;/a&gt;, under which there are two packages;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The apoc package includes some extra utility jars, i.e. the indexing jar, the shell jar and some examples &lt;/li&gt;    &lt;li&gt;The kernel package includes the bare minimum, i.e. neo and jta jars &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My example project’s source code is also available &lt;a href="http://files.getdropbox.com/u/1403101/graphDB.rar"&gt;here&lt;/a&gt;, compatible for eclipse and intelliJ.&lt;/p&gt;  &lt;h3&gt;Part 1: Converting POJO into neo&lt;/h3&gt;  &lt;p&gt;In my mind’s eye I saw a plain old java data objects that would define my domain data structure. These objects would be passed to some kind of neo facilitating mechanism that would take care of the persistence for me. &lt;/p&gt;  &lt;h4&gt;Using annotations&lt;/h4&gt;  &lt;p&gt;Java annotations are a wonderful tool; I use Annotations to load metadata on class elements, when the metadata is not intended to be part of the primary business course of the class.&lt;/p&gt;  &lt;p&gt;In this example, I have a type representing a person that has a couple of properties and lists of friends and foes. I annotated the fields with the hinting I needed to ease the conversion into neo.&lt;/p&gt;  &lt;p&gt;Note that the conversion is handled at runtime so the annotation retention policy is set appropriately. &lt;/p&gt;  &lt;p&gt;Here is the annotation declaration:&lt;/p&gt;  &lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 402px; height: 278px;"&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; @&lt;span style="color: rgb(0, 0, 255);"&gt;interface&lt;/span&gt; Persistance {&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  Type type() &lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt; Type.Property;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  Peers relationType() &lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt; Peers.NA;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; enum Type {&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;    Property, Peer&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;The annotated POJO, representing my person data is as follows:&lt;br /&gt;&lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 402px; height: 272px;"&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; enum Peers &lt;span style="color: rgb(0, 0, 255);"&gt;implements&lt;/span&gt; RelationshipType {&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  Friend, Foe, NA&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Person {&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  @Persistance(type = Persistance.Type.Property)&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; String name;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  @Persistance(type = Persistance.Type.Property)&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; String nickname;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  @Persistance(type = Persistance.Type.Peer, relationType = Peers.Friend)&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; List&amp;lt;Person&amp;gt; friends;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  @Persistance(type = Persistance.Type.Peer, relationType = Peers.Foe)&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; List&amp;lt;Person&amp;gt; foes;&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;/pre&gt;&lt;/pre&gt;And so on…&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The conversion to the neo nodes &lt;/h3&gt;The neo world speaks in two basic terms, the node and the relation. Each can bear its own properties.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The nodes have no typing, which I think is a shame, but relationships do require typing. I went along with the recommendations and defined my relationship as an enum.&lt;/p&gt;The snippet for the relationship type:&lt;br /&gt;&lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 390px;"&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; enum Peers &lt;span style="color: rgb(0, 0, 255);"&gt;implements&lt;/span&gt; RelationshipType {&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;  Friend, Foe, NA&lt;br /&gt;&lt;/pre&gt;&lt;pre   style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;font-family:consolas,'Courier New',courier,monospace;font-size:12px;"&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;&lt;/pre&gt;&lt;/pre&gt;The persistence mechanism is a recursive breakdown of the POJO graph (the person and all this friends etc.) according to the hints I get on the annotations.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Within a neo transaction I call the converting method by passing the object I want to persist onto it:&lt;/p&gt;&lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 402px; height: 269px;"&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    Transaction tx = neo.beginTx();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    Node node = &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;try&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      node = objectToNode(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      tx.success();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; node.getId();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    } &lt;span style="color: rgb(0, 0, 255);"&gt;catch&lt;/span&gt; (Exception e) {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      tx.failure();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      e.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    } &lt;span style="color: rgb(0, 0, 255);"&gt;finally&lt;/span&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      tx.finish();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;The method &lt;i&gt;objectToNode(..)&lt;/i&gt; is the recursive part and I load it with a stack map to prevent the recursive calls from looping forever on objects that were already processed.&lt;/p&gt;&lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 414px; height: 296px;"&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (stack == &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;) {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      stack = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; HashMap&amp;lt;Object, Node&amp;gt;();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (stack.containsKey(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;)) {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; stack.get(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    Node node = neo.createNode();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    stack.put(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;, node);&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    Class cls = &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;.getClass();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    Field[] fields = cls.getDeclaredFields();&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (Field field : fields) {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      &lt;span style="color: rgb(0, 128, 0);"&gt;// only persisting the fields that have my special annotation&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (field.isAnnotationPresent(Persistance.&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;)) {&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;        processFieldData(node, &lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;, field, stack);&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre face="consolas,'Courier New',courier,monospace" size="12px" style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; node;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;The method &lt;i&gt;processFieldData(..)&lt;/i&gt; is where the annotations are processed. Properties are loaded on the nodes and hints for relationships invoke the recursive call that handles the linked objects as independent nodes.&lt;/p&gt;&lt;pre style="border: 1px solid rgb(206, 206, 206); padding: 5px; overflow: auto; background-color: rgb(251, 251, 251); min-height: 40px; width: 438px; height: 302px;"&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (annotation &lt;span style="color: rgb(0, 0, 255);"&gt;instanceof&lt;/span&gt; Persistance) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;        Persistance p = (Persistance) annotation;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;        log("&lt;span style="color: rgb(139, 0, 0);"&gt;processing annotation: &lt;/span&gt;" + p.type() + "&lt;span style="color: rgb(139, 0, 0);"&gt; &lt;/span&gt;"&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;            + p.relationType());&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (p.type().equals(Persistance.Type.Property)) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          &lt;span style="color: rgb(0, 128, 0);"&gt;// TODO: verify that the property is actually a primitive&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          Object value = field.get(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          log("&lt;span style="color: rgb(139, 0, 0);"&gt;setting property: &lt;/span&gt;" + field.getName() + "&lt;span style="color: rgb(139, 0, 0);"&gt; &lt;/span&gt;" + value);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          &lt;span style="color: rgb(0, 128, 0);"&gt;// here is a neo setting of a property&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          node.setProperty(field.getName(), value);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;        } &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (p.type().equals(Persistance.Type.Peer)) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          Object value = field.get(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          log("&lt;span style="color: rgb(139, 0, 0);"&gt;setting peer: &lt;/span&gt;" + field.getName() + "&lt;span style="color: rgb(139, 0, 0);"&gt; &lt;/span&gt;" + value);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;          &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (value &lt;span style="color: rgb(0, 0, 255);"&gt;instanceof&lt;/span&gt; List) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; (Object item : (List) value) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              &lt;span style="color: rgb(0, 128, 0);"&gt;// here is another neo bit, where a new Node is&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              &lt;span style="color: rgb(0, 128, 0);"&gt;// created by recursively calling on the converting&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              &lt;span style="color: rgb(0, 128, 0);"&gt;// method with the child object&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              &lt;span style="color: rgb(0, 128, 0);"&gt;// after the new node is handed back, i create the&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              &lt;span style="color: rgb(0, 128, 0);"&gt;// relationship between the two&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              Node otherNode = objectToNode(item, stack);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;              node.createRelationshipTo(otherNode, p&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;                  .relationType());&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;            }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;   &lt;br /&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; background-color: rgb(251, 251, 251); width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px;"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="http://files.getdropbox.com/u/1403101/graphDB.rar"&gt;Download the complete java source code&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-8428901162421982495?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/8428901162421982495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/07/down-rabbits-hole-with-neo4j-part-1.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8428901162421982495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8428901162421982495'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/07/down-rabbits-hole-with-neo4j-part-1.html' title='Down the rabbits hole with neo4j (Part 1)'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5491273138850821710</id><published>2009-07-01T16:04:00.006+10:00</published><updated>2009-07-01T16:14:43.286+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='factory'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='getDefinitionByName'/><title type='text'>Factory Implementation in Flex AS3</title><content type='html'>&lt;p&gt;&lt;span style="font-size:100%;"&gt;The closest thing i could find for implementing a simple factory in Flex is by using the &lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;getDefinitionByName &lt;/span&gt;&lt;span style="font-size:100%;"&gt;function.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;Usage:&lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;import &lt;/span&gt;flash.utils.getDefinitionByName;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;private static &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;const &lt;/span&gt;basePath:String = "..path to implementation..";  &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;a:SomeClassImp;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;private &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;b:OtherClassImp;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public static &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;function &lt;/span&gt;getRendrer(className:String):Object{   &lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          var &lt;/span&gt;classFullName:String = basePath+ className;   &lt;br /&gt;         &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;var &lt;/span&gt;objClass:Class = &lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;getDefinitionByName&lt;/span&gt;( classFullName ) as Class;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;return &lt;/span&gt;new objClass();   &lt;br /&gt;     }     &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Note&lt;/span&gt;: The classes that the factory is suppose to generate in run time have to be explicitly stated as var’s in the factory class. this is for the compiler to know to add them into the compilation product.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:78%;"&gt;  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5491273138850821710?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5491273138850821710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/07/factory-implementation-in-flex-as3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5491273138850821710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5491273138850821710'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/07/factory-implementation-in-flex-as3.html' title='Factory Implementation in Flex AS3'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2734630091052339756</id><published>2009-06-14T22:00:00.005+10:00</published><updated>2009-06-15T07:09:27.711+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Bazooka Developer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K0XxPUglAM4/SjVJS1BXJ-I/AAAAAAAAAJA/_7lrQoIH3RE/s1600-h/03042008178.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 153px; height: 155px;" src="http://2.bp.blogspot.com/_K0XxPUglAM4/SjVJS1BXJ-I/AAAAAAAAAJA/_7lrQoIH3RE/s400/03042008178.jpg" alt="" id="BLOGGER_PHOTO_ID_5347260720391596002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face 	{font-family:"Bradley Hand ITC"; 	panose-1:3 7 4 2 5 3 2 3 2 3; 	mso-font-charset:0; 	mso-generic-font-family:script; 	mso-font-pitch:variable; 	mso-font-signature:3 0 0 0 1 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle 	{mso-style-priority:11; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:"Subtitle Char"; 	mso-style-next:Normal; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#4F81BD; 	mso-themecolor:accent1; 	letter-spacing:.75pt; 	mso-bidi-language:AR-SA; 	font-style:italic;} span.SubtitleChar 	{mso-style-name:"Subtitle Char"; 	mso-style-priority:11; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:Subtitle; 	mso-ansi-font-size:12.0pt; 	mso-bidi-font-size:12.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#4F81BD; 	mso-themecolor:accent1; 	letter-spacing:.75pt; 	font-style:italic;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;It is so told, that there should come a time for every developer, when he be faced with the challenge of coding in the sky. A situation like this happens when a client is faced with a critical problem and needs an immediate solution. The solution provider decides to give it a go, sends out a repair man, for a fast, cowboy style solution, and cashes in the check.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;When my turn came, I was handed the assignment along with the flight tickets and a brief rundown of the functionality I had to deliver. The functionality took about an hour for him to describe. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;This kind of positive thinking often reminds me of the ‘Bazooka Joe’ bubblegum fortune, telling me that by the age of 21 I would probably land on the moon. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Keeping that same positive thinking in mind, I realized it would be a nice opportunity for setting my agile development skills to the test. I preach agility all the time. I preach it to my colleges and to my developers. I even preach it to my boss. There was no way I was about to turn ‘cowboy’ on all that.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The entire time frame for this task was less than a standard agile heart beat, but I stuck with the principles, and used them to guide me.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SubtitleChar"&gt;&lt;span style="line-height: 115%;font-size:12;" &gt;My first task was to deliver functionality.&lt;/span&gt;&lt;/span&gt; So I set to inquire whatever I could about the requirements. There was the way my boss envisioned it and there were some correspondence with the customer that preceded the request. I swept through the mail exchanges, to find out how the customer wanted it to work and how it ought to be fitted in the surrounding landscape of the other systems. I came out with a detailed feature list, reflecting the functionality requirements, an outline sketch of the interfaces and a high level cubistic design with a short list of would be obstacles (i.e. outstanding issues yet to be resolved).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Meeting the bare minimum to enable testability: I wrote a mock up interface invoker (two actually, that know how to talk to each other in a session like manner). Just like in the real world, my module was going to be ‘stuck’ right in between the two mockups, doing so I could have a convenient testing envelope where I can gradually grow my functionality.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I felt I was ready for some hard core coding.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-style: italic;"&gt;Fortune: you will not get much sleep the next few nights.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SubtitleChar"&gt;&lt;span style="line-height: 115%;font-size:12;" &gt;I developed in short cycles.&lt;/span&gt;&lt;/span&gt; I used my short list of suspected pickles&lt;b&gt;&lt;span style="color:red;"&gt; &lt;/span&gt;&lt;/b&gt;to define the steps for development. After coding a new solution that was suppose to address a particular issue, I ran the module against the testing facilities, with all the scenarios I had so far, and a new scenario that would test the solution. This got me through debugging and I made sure that I was not disrupting previously developed features (i.e. regression testing).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I know, I know, I was sprinting or whatever. In any case it kept me focused on my goals and constantly in check with working functionality.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I sprinted at the office, I sprinted at home, I sprinted at night, in the airport and on the airplane.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;It so happened that by the time I got to the site, I was far from done, but I did have a prototype that was solid enough and being as it was, I had it installed on one of the development environment there.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span class="SubtitleChar"&gt;&lt;span style="line-height: 115%;font-size:12;" &gt;I made use of the customer&lt;/span&gt;&lt;/span&gt;. The customer in this case was a respectable American corporate. I met there with the IT team that held everything together. Right at the beginning, they brought into my attention that they had four sets of environments. This was an important point to note since there were differences in application versions between them. The version differences meant that every time I got environmentally promoted, I had to adjust to the changes in protocol and behavior.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-style: italic;"&gt;Fortune: an overnight success is the result of years of preparations&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;At this stage, I could have my testing cycles run up against real applications and not the mockup applications I prepared myself. The people from the IT team helped me learn about the extreme scenarios and together we were able to devise a meticulous testing plan. Together we defined the scope for load testing.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;During the working hours, I ran tests on the various environments that were available and spent the nights at the hotel for code fixing and optimization. This was not an easy time for me. By the end of the first week we have conducted a few cycles of testing and amendment, and we were already deep into the load testing.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-style: italic;"&gt;Fortune: the love you give is equal to the love you get&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I was also able to cater for some extra requests for changes. These were minor modifications that had to do with logging and configuration options, but it made customer happy. The help I got from the customer staff I met there was absolutely essential in making the delivery and having the module go into production.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A month after I flew back, my module was set into production. Of course there were some more bugs identified and some new feature requests as well. But all in all, the customer was satisfied.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-style: italic;"&gt;Fortune: don’t let it go up to your head&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2734630091052339756?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2734630091052339756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/06/bazooka-developer.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2734630091052339756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2734630091052339756'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/06/bazooka-developer.html' title='Bazooka Developer'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K0XxPUglAM4/SjVJS1BXJ-I/AAAAAAAAAJA/_7lrQoIH3RE/s72-c/03042008178.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-8150760241462968501</id><published>2009-06-12T00:30:00.005+10:00</published><updated>2009-06-12T00:41:54.067+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='mdi'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;always on top&quot;'/><title type='text'>Flex MDI, Always On Top window</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi; 	mso-bidi-language:AR-SA;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;So how does one go about and opens an “Always On Top” window, using the &lt;a href="http://www.insideria.com/2008/08/windowing-in-flex-flexmdi.html"&gt;FlexMDI &lt;/a&gt;(on &lt;a href="http://code.google.com/p/flexlib/"&gt;flexlib&lt;/a&gt;)?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Sadly, I wasn’t able to find any nice solution for this problem and when such frustration comes, I resort to tricks. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;My trick in this case was to wrap the &lt;a style="font-style: italic;" href="http://flexlib.googlecode.com/svn/trunk/docs/flexlib/mdi/containers/MDICanvas.html"&gt;MDICanvas&lt;/a&gt; with a class of my own, and in it I had two MDI canvases one on top of the other.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I added a nice utility method for opening a window, and according to an indicator on that method I either open it in bottom layer, or the top one; hence the “always on top”.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Not perfect, but working.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-8150760241462968501?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/8150760241462968501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/06/flex-mdi-always-on-top-window.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8150760241462968501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8150760241462968501'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/06/flex-mdi-always-on-top-window.html' title='Flex MDI, Always On Top window'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-1535577476763825436</id><published>2009-06-09T16:42:00.006+10:00</published><updated>2009-06-09T17:04:10.174+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='malformed'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='embed'/><title type='text'>Flex loads with a blank screen</title><content type='html'>I'm developing some complex GUI app using the Flex builder 3 (eclipse plug in) and while i was working i suddenly got a blank screen when i ran my application.&lt;br /&gt;&lt;br /&gt;no error was printed out in the consul. it appeared that flex was loading but wasn't loading my application.&lt;br /&gt;&lt;br /&gt;if this happens to you too, check your code to see if you are embedding a file as XML:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;[Embed(source="...data.xml")]&lt;br /&gt;private static var xmlData:Class;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if you are, and the file happens to be malformed (some mistake in the XML structure) you are not going to see any error from the compiler or the runtime(!)&lt;br /&gt;just a peaceful, zen like, blank page.&lt;br /&gt;&lt;br /&gt;bugger&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-1535577476763825436?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/1535577476763825436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/06/flex-loads-with-blank-screen.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1535577476763825436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1535577476763825436'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/06/flex-loads-with-blank-screen.html' title='Flex loads with a blank screen'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-8584411618526528492</id><published>2009-05-27T08:04:00.011+10:00</published><updated>2009-05-30T03:58:39.123+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Agile Safari</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K0XxPUglAM4/Sh_ycVNnPkI/AAAAAAAAAIQ/v_l7vgNoW1U/s1600-h/IMG_2989.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 166px; height: 171px;" src="http://2.bp.blogspot.com/_K0XxPUglAM4/Sh_ycVNnPkI/AAAAAAAAAIQ/v_l7vgNoW1U/s400/IMG_2989.JPG" alt="" id="BLOGGER_PHOTO_ID_5341254251629198914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A giraffe, which I hold dear, once told me that agile application development is all about pace, straight forward thinking and relevance. I can’t help thinking that us humans, like to make things all so complicated, even when we intend them to be ‘agile’.&lt;/span&gt;  &lt;p&gt;We adore rules and regulations, and a static algorithm is fantastic when your target is motionless. The nature of things is not as static and rigid and not having a timely response might lose us the patch. “Follow your own heart”, the giraffe would tell me, “it should be as good as anything else you might find, and you can always change the rules and adapt to the new situations as they present themselves”.&lt;/p&gt;  &lt;p&gt;I couldn’t help noticing that there was a wide nose rhino, staring at us from the other side of a patch of coffee.&lt;/p&gt;  &lt;p&gt;Grasslands and software projects usually exist within a particular window of opportunity. The grazing has to be finished before the grass disappears: the problem has to be identified, addressed and delivered before it becomes irrelevant. “It has to be done and over with before the dry season” the giraffe would say. Managing software projects with agility is all about keeping up with the changing seasons, and the other moving animals. &lt;/p&gt;  &lt;p&gt;The rhino was eyeing us ferociously. He wasn’t going anywhere.&lt;/p&gt;  &lt;p&gt;Sitting there, leaned against a baobab tree, I heard the ‘agile of three points’ coming from above, straight from the giraffe’s mouth.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Always deliver functionality &lt;/li&gt;    &lt;li&gt;Develop in short manageable cycles &lt;/li&gt;    &lt;li&gt;Make use of the customer &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These three principles form the conduct and rhythm of agile development: Combined together, they insure the growth of the product in relevance, while maintaining a steady flow of fresh capabilities under close supervision and immediate acknowledgment of the customer for every step.&lt;/p&gt;  &lt;p&gt;“Is it clear yet?” asked the giraffe. Here is some more:&lt;/p&gt;  &lt;h4&gt;Delivering functionality&lt;/h4&gt;  &lt;p&gt;Delivering functionality has to do with the continuous effort of implanting new business ideas and capabilities into the product by way of every software drop. Functionality delivered alongside other non functional changes.&lt;/p&gt;  &lt;p&gt;The principal has two immediate benefits.&lt;/p&gt;  &lt;p&gt;From the customer’s point of view, each code drop brings some fresh and new solutions he needs for his business. After all, new functionality is exactly what he paid for. &lt;/p&gt;  &lt;p&gt;From the development standpoint, the proper prioritization for new functionality prevents the product from freezing while the development team works in full capacity in revising and rewriting already working code. &lt;/p&gt;  &lt;p&gt;I’m not saying that code maintenance is irrelevant. Software releases should be a balanced concoction of improvements both in business relevance and in code quality.&lt;/p&gt;  &lt;h4&gt;Short development cycles&lt;/h4&gt;  &lt;p&gt;Development in ‘short bursts’ is an all too familiar concept to the Agile advocates. This is a principal that has to do with the pace of the development and of the software delivery. &lt;/p&gt;  &lt;p&gt;Having short and manageable development cycles insures close proximity for each issue between the time it is developed and the time it is tested. Nothing is lost by time or forgetfulness.&lt;/p&gt;  &lt;p&gt;Another byproduct is by having pending and immediate deadlines; it is easier to keep the developers in check and optimal production.&lt;/p&gt;  &lt;p&gt;Of course I’m letting go of many other aspects, but I think this captures the essence.&lt;/p&gt;  &lt;h4&gt;Customer involvement&lt;/h4&gt;  &lt;p&gt;This principal has to do with relevance. Nobody knows the business better then the customer. Hence, customer’s involvement in the application development is an asset. &lt;/p&gt;  &lt;p&gt;Sounds so simple, but it’s probably the most difficult to practice. To make this happen, the customer needs to have focal points for every issue that might rise in development, and define direct access to these key professionals. &lt;/p&gt;  &lt;p&gt;Having customer representatives on board during progress and status meetings might sound to some as walking naked in Times Square, but the other side for this exhibitionism is the total involvement of the customer in progress and prioritization. &lt;/p&gt;  &lt;p&gt;And while involvement means cooperation and clarity means trust, the chances of the project to eventually ‘go live’ is as high as is can get.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cgilad%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:"Times New Roman"; 	mso-bidi-font-family:Arial;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-hansi-font-family:Calibri; 	mso-bidi-font-family:Arial;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:12;"  &gt;&lt;span style="font-family:georgia;"&gt;Maybe next time I’ll have a short chat with the rhino.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-8584411618526528492?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/8584411618526528492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/05/agile-safari.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8584411618526528492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/8584411618526528492'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/05/agile-safari.html' title='Agile Safari'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K0XxPUglAM4/Sh_ycVNnPkI/AAAAAAAAAIQ/v_l7vgNoW1U/s72-c/IMG_2989.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-74684452934330777</id><published>2009-05-11T21:54:00.015+10:00</published><updated>2009-05-12T06:19:22.476+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='sydney open coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='domain expert'/><category scheme='http://www.blogger.com/atom/ns#' term='sydney meetup'/><category scheme='http://www.blogger.com/atom/ns#' term='Sydney'/><category scheme='http://www.blogger.com/atom/ns#' term='darren saul'/><category scheme='http://www.blogger.com/atom/ns#' term='Business savvy'/><category scheme='http://www.blogger.com/atom/ns#' term='Australia'/><title type='text'>Homecoming</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K0XxPUglAM4/SggZ9HlR8cI/AAAAAAAAAH0/UO1mC_V33xA/s1600-h/IMG_1625.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 142px; height: 134px;" src="http://4.bp.blogspot.com/_K0XxPUglAM4/SggZ9HlR8cI/AAAAAAAAAH0/UO1mC_V33xA/s400/IMG_1625.JPG" alt="" id="BLOGGER_PHOTO_ID_5334542296418480578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; I have just got back from a month long vacation to Australia. No words can do justice with the magnificence of that continent at the other side of the globe. When I grow up, I would like to be an Australian.&lt;/p&gt;  &lt;p style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K0XxPUglAM4/SggZtkscCkI/AAAAAAAAAHs/yVhpoTjgH9g/s1600-h/IMG_1625.JPG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;During my too short a visit, I had the pleasure of engaging with some very interesting people in the &lt;a href="http://www.meetup.com/open-coffee-sydney/" target="_blank"&gt;Sydney Open coffee meet up&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Harsh times have come to the hundred-acre-wood of the IT industries, and the Australian IT was not spared. Yet, it was apparent that the world wide gloom was not in residence. The messages I’ve heard were about times of change, opportunity and of new beginnings. &lt;/p&gt;  &lt;p&gt;It had occurred to me that in deed times have changed. The rules of engagement are being rewritten. Opportunities lay in initiative and added value, rather than in the sole code-literacy capabilities that are the tools of my trade.&lt;/p&gt;  &lt;p&gt;I was discussing exactly this with a good friend and experienced Sydney IT Recruiter &lt;a href="http://carnegiehillblogging.blogspot.com/"&gt;Darren Saul&lt;/a&gt; at one of the Sydney meet-ups. Darren mentioned that he has seen a definite shift in the way employers qualify potential employees – “after all”, said Darren, “a great organization is only as great as its people”. &lt;/p&gt;  &lt;p&gt;The way Darren put it, is that employers need as much added value as possible and it’s no longer enough to “just” be proficient technically, it is as important to really understand your industry sector as a “Domain Expert”. Employers recruiting in the financial sector, for example, will be looking for technical support specialists or developers with a very strong understanding of the financial industry, a strong knowledge of the industry specific applications and will be looking for individuals that are generally “Business Savvy”. Thus continuous learning and broad thinking are of the utmost importance to stay ahead of the rest and ensure your place as an integral, valued and respected member of your team. &lt;/p&gt;  &lt;p&gt;As I see it, Darren’s definition of Business savvy hits the spot in what concerns the attitude for the IT people and industry. It’s like the difference between being a co founder in a startup opposed to the first employee being hired. &lt;/p&gt;  &lt;p&gt;When I was fresh in the army, we used to practice night time maneuvering. They would team us in pairs, and we were given two legs to cover, one for each in the pair. &lt;/p&gt;  &lt;p&gt;While one was doing the navigation, the other would follow until it was his turn to lead. The partner that was not navigating was called the dummy. He would carry everything and concentrate on following.&lt;/p&gt;  &lt;p&gt;We quickly came to the understanding that the more involved your dummy was, in the actual navigation, the better your own results would be. Even if it’s your turn to follow, do your best to help lead.&lt;/p&gt;  &lt;p&gt;For more of Darren check out his blog at: &lt;a href="http://www.carnegiehillblogging.blogspot.com/"&gt;www.carnegiehillblogging.blogspot.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step up, lead the field.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-74684452934330777?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/74684452934330777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/05/homecoming.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/74684452934330777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/74684452934330777'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/05/homecoming.html' title='Homecoming'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_K0XxPUglAM4/SggZ9HlR8cI/AAAAAAAAAH0/UO1mC_V33xA/s72-c/IMG_1625.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-1283513082450192360</id><published>2009-04-09T12:07:00.005+10:00</published><updated>2009-04-20T18:52:36.851+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='Sydney'/><title type='text'>Open coffee in Sydney</title><content type='html'>&lt;p&gt;I love coffee, I love talking passionately about the things i do and the combination of both was what happened to me today. &lt;/p&gt;  &lt;p&gt;Today I went to a gathering of entrepreneurs in down town Sydney and it was lovely.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.meetup.com/open-coffee-sydney/calendar/10019728/" target="_blank"&gt;Kim H&lt;/a&gt; is the organizer of this particular event and it takes place every other Thursday morning, behind the coffee shop of the Allianz Building. &lt;/p&gt;  &lt;p&gt;Hanging out with a pack of people who are so receptive to innovation and ingenuity fills me up with so much energy, i can practically run on it for days.&lt;/p&gt;  &lt;p&gt;My verve.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-1283513082450192360?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/1283513082450192360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/04/open-coffee-in-sydney.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1283513082450192360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1283513082450192360'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/04/open-coffee-in-sydney.html' title='Open coffee in Sydney'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-1716846221602780047</id><published>2009-03-16T20:51:00.003+11:00</published><updated>2009-03-16T22:41:34.657+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='httpservice'/><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><title type='text'>Flex HTTP Service result formatting</title><content type='html'>&lt;p&gt;when playing around with the flex &lt;strong&gt;HTTPService&lt;/strong&gt; class, i got the following error: &lt;/p&gt;  &lt;blockquote&gt;&lt;code&gt;&lt;em&gt;faultCode:Client.CouldNotDecode faultString:'Error #1090: XML parser failure: element is malformed.' faultDetail:'null'&lt;/em&gt; &lt;/code&gt;&lt;/blockquote&gt;  &lt;p&gt;this is because i was using the default parser (i.e. “object”) for the result digestion, while the returned value from my HTTP hit was HTML.&lt;/p&gt;  &lt;p&gt;all this is clearly explained in the &lt;a href="http://livedocs.adobe.com/flex/2/langref/mx/rpc/http/HTTPService.html#resultFormat" target="_blank"&gt;adobe documentation&lt;/a&gt; for the HTTPService, but not that clear from the error.&lt;/p&gt;  &lt;p&gt;when connecting to a site or external data source with an unknown structure, its easier to analyze the incoming stream when the result format is set to “text”. this returns the stream in its raw form.&lt;/p&gt;  &lt;p&gt;the property is set as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;code&gt;myHTTPService.resultFormat="text"; &lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-1716846221602780047?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/1716846221602780047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/03/flex-http-service-result-formatting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1716846221602780047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/1716846221602780047'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/03/flex-http-service-result-formatting.html' title='Flex HTTP Service result formatting'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5680578777011284795</id><published>2009-03-16T09:13:00.004+11:00</published><updated>2009-03-16T09:40:39.432+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='TextArea'/><category scheme='http://www.blogger.com/atom/ns#' term='right to left'/><category scheme='http://www.blogger.com/atom/ns#' term='hebrew'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><category scheme='http://www.blogger.com/atom/ns#' term='TextInput'/><category scheme='http://www.blogger.com/atom/ns#' term='mx'/><title type='text'>Flex Right to Left – for the Hebrew man</title><content type='html'>&lt;p&gt;here is some cowboy programming for handling the text direction in flex. i found that the simplest way is to extend the text UI component (i.e. mx:TextArea or mx:TextInput) with my own class with some instrumentation. &lt;/p&gt;  &lt;p&gt;amazingly enough, selecting the right font family is all it takes to have the UI component type the correct order in words. the font i used was Ariel.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;this.setStyle("textAlign","right");    &lt;br /&gt;this.setStyle("fontFamily","Arial");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;it gets a little bit trickier when setting or retrieving the text from the component, so I've added a set and get methods, that crudely check for the first character. if its Hebrew, i flip the order of words.&lt;/p&gt;  &lt;p&gt;the setter and getter look like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public function getText():String{&lt;br /&gt;    return LanguageUtil.getLocalazedText(this.text);     &lt;br /&gt;}&lt;br /&gt;    &lt;br /&gt;public function setText(s:String):void{     &lt;br /&gt;    this.text = LanguageUtil.getLocalazedText(s);     &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;the language utility I'm using is actually the following method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public static function getLocalazedText(message:String) :String {    &lt;br /&gt;    var c:int = message.charCodeAt(0);     &lt;br /&gt;    if(c&amp;gt;1487 &amp;amp;&amp;amp; c&amp;lt;1515){     &lt;br /&gt;        var resArray:Array = message.split(" ");     &lt;br /&gt;        var resLine:String = "";     &lt;br /&gt;        for(var i:int = resArray.length; i&amp;gt;0; i--){     &lt;br /&gt;            if(i != resArray.length){     &lt;br /&gt;                resLine += " ";     &lt;br /&gt;            }     &lt;br /&gt;            resLine += resArray[i-1].toString();     &lt;br /&gt;   }     &lt;br /&gt;        return resLine     &lt;br /&gt;    }else{     &lt;br /&gt;        return message;     &lt;br /&gt;  }     &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;i haven't tested this on       Mac yet. but for windows it seems to be ok.&lt;/p&gt;&lt;p&gt;hee haw&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5680578777011284795?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5680578777011284795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/03/flex-right-to-left-for-hebrew-man.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5680578777011284795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5680578777011284795'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/03/flex-right-to-left-for-hebrew-man.html' title='Flex Right to Left – for the Hebrew man'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-135567134996236676</id><published>2009-03-11T18:39:00.000+11:00</published><updated>2009-03-11T18:44:20.483+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Data buckets</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;a href="http://lh5.ggpht.com/_K0XxPUglAM4/Sa1BFPlbJfI/AAAAAAAAAHE/YnIRI8QfpSQ/s1600-h/06042008239%5B3%5D.jpg"&gt;&lt;img title="06042008239" style="border: 0px none ; display: inline;" alt="06042008239" src="http://lh6.ggpht.com/_K0XxPUglAM4/Sa1BFyO5UTI/AAAAAAAAAHI/uPpgIVjLhtc/06042008239_thumb%5B1%5D.jpg?imgmax=800" border="0" width="120" height="112" /&gt;&lt;/a&gt; For me, software development is just a nice way of saying ‘bit moving’. A good friend of mine used to describe himself as a bit reorganizer. We rearrange invisible magnets, he would say, setting their tiny arrows of residual currents to point this way or that. We are a bunch of “bitniks” and we are all about data.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Application design and development has been my main source of income for the last decade or so, it struck me as odd that there were so few terms that describe so many kinds of data.&lt;/p&gt;  &lt;p&gt;It occurred to me, that the Eskimos had their fourteen words for snow, and they say that the Bedouins have nine words to describe sand. I felt so alone. I felt a need for discovering my own flavors of data. It took me a while, but then in a single perfect moment of clarity, I had realized what lay before me.&lt;/p&gt;  &lt;p&gt;The orchestration of the moment was this; in the middle of a design meeting, yelling and shouting all around, we were discussing optimization and performance and spirits were high. My thoughts went back to when I have learnt about application design. The fact was that when developing any business application, the first step to take is to determine the set of business flows that describe the scope and functionality of that application within the organizations it’s meant to serve.&lt;/p&gt;  &lt;p&gt;Listing these business-flows by rank and cardinality is no bother at all. The simplest evaluation I could think of is according to frequency of use and the sheer number of users that would eventually use the flow.&lt;/p&gt;  &lt;p&gt;I thought that the categorization of the data body by the same yardstick could provide me with the flavors of data I was looking for.&lt;/p&gt; ... Read more: &lt;a href="http://www.javaworld.com/community/node/2552"&gt;the complete post at &lt;/a&gt;&lt;strong&gt;&lt;a href="http://www.javaworld.com/community/node/2552"&gt;JavaWorld&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scribd.com/doc/13086819/Data-Buckets"&gt;&lt;span style="font-weight: normal;"&gt;download this post from scribd&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-135567134996236676?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/135567134996236676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/03/data-buckets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/135567134996236676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/135567134996236676'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/03/data-buckets.html' title='Data buckets'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_K0XxPUglAM4/Sa1BFyO5UTI/AAAAAAAAAHI/uPpgIVjLhtc/s72-c/06042008239_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-771981798151394320</id><published>2009-03-04T07:15:00.002+11:00</published><updated>2009-03-04T07:29:13.861+11:00</updated><title type='text'>My new spot at JavaWorld</title><content type='html'>&lt;p&gt;I’ve been upgraded. i have a new spot at &lt;a href="http://www.javaworld.com/" target="_blank"&gt;JavaWorld&lt;/a&gt; in the daily brew community and I've just posted my first article there.&lt;/p&gt;  &lt;p&gt;This is the link to my article “&lt;a href="http://www.javaworld.com/community/node/2552" target="_blank"&gt;Data Buckets&lt;/a&gt;”.&lt;/p&gt;  &lt;p&gt;What next? &lt;/p&gt;  &lt;p&gt;I have two things I'm working on at the moment. I'm finalizing version 0.3 of the white rabbit project and I've stated writing the next post. I hope I'll finish them before my vacation later this month.&lt;/p&gt;  &lt;p&gt;Australia here i come!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-771981798151394320?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/771981798151394320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/03/my-new-spot-at-javaworld.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/771981798151394320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/771981798151394320'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/03/my-new-spot-at-javaworld.html' title='My new spot at JavaWorld'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-2179219834071691958</id><published>2009-02-05T08:59:00.001+11:00</published><updated>2009-02-05T09:06:26.818+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>The customer factor</title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;a href="http://lh3.ggpht.com/_K0XxPUglAM4/SYoPrlpKbGI/AAAAAAAAAGU/iMxrtEr5GLM/s1600-h/DSCN12581%5B3%5D.jpg"&gt;&lt;img title="DSCN12581" style="border: 0px none ; display: inline;" alt="DSCN12581" src="http://lh3.ggpht.com/_K0XxPUglAM4/SYoPseRnFHI/AAAAAAAAAGY/L2NqILX13vA/DSCN12581_thumb%5B1%5D.jpg?imgmax=800" width="113" border="0" height="108" /&gt;&lt;/a&gt; &lt;/b&gt;&lt;b&gt;One of the greater challenges, I‘ve observed in the lifecycle of software development lay not in the technology, or in the method of solution, but with the interaction with the customer. The less fortunate case would be the lack of any interaction with a customer all together, resulting in a peculiar&lt;/b&gt; &lt;b&gt;situation of over development.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;An “Over development”, as I see it, happens when product features don’t match the majority use cases and no customer would be willing to pay for their development. Things that seem awfully cool to have, but don’t actually assist in the selling process.&lt;/p&gt;  &lt;p&gt;I’ve been involved in many corporate development projects. These were huge projects, with large groups of developers, all working for functionality defined by a single customer. The past two years, I've been managing the development of a leading product for the paper press industry. This product is an “off the shelf” reporting solution for the production process of a commercial printing house. &lt;/p&gt;  &lt;p&gt;The product tracks and accumulates data in any provided format. It produces a wide range of analyses and diagnostics, regarding the production line of a printing house operation.&lt;/p&gt;  &lt;p&gt;Although the two development scenarios may seem different, I consider them to be quite similar, with a slight variation: in the development of an “off the shelf” product, the customer is the sales department.&lt;/p&gt;  &lt;p&gt;For both development scenarios, the one big issue that stands out is having the application go into production. As obvious as it may seem, it is the least trivial, and to my mind, the hardest. &lt;/p&gt;  &lt;p&gt;I’ve started out with a product that was extremely over developed, and not a single customer. The first thing I did was to set a goal for myself (i.e. my group), to push the product into production as fast as I could while shrinking the development cycles.&lt;/p&gt;  &lt;p&gt;The sale department managers helped me come up with a bare bone requirement list of features. I used this “can’t go without” list to determine the entry point of the product. I used this leverage to get the sales department to arrange the first beta customer. Once there was a real life customer in the development cycle, crucial information began flowing back, requesting features and functionality.&lt;/p&gt;  &lt;p&gt;There are two good things that a customer may give the application developer. One is money for the product; the other would be rejects on the product. The latter, when provided from a customer is worth more than any internal brainstorming process within the development group. To my opinion it is the best way to have the product pushed forward and to make it robust and usable.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-2179219834071691958?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/2179219834071691958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/02/customer-factor.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2179219834071691958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/2179219834071691958'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/02/customer-factor.html' title='The customer factor'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_K0XxPUglAM4/SYoPseRnFHI/AAAAAAAAAGY/L2NqILX13vA/s72-c/DSCN12581_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-5517950332074221342</id><published>2009-02-05T00:03:00.001+11:00</published><updated>2009-02-06T02:37:44.042+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Development war room</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_K0XxPUglAM4/SYnvpuPRnBI/AAAAAAAAAGM/poLeUJ2eHAA/s1600-h/military_sleep_by_marcheshvan%5B3%5D.jpg"&gt;&lt;img title="military_sleep_by_marcheshvan" style="border: 0px none ; display: inline;" alt="military_sleep_by_marcheshvan" src="http://lh4.ggpht.com/_K0XxPUglAM4/SYnvqnPIvkI/AAAAAAAAAGQ/VATcz5a8IDI/military_sleep_by_marcheshvan_thumb%5B1%5D.jpg?imgmax=800" border="0" width="141" height="137" /&gt;&lt;/a&gt; I had a friend over the other day, one of the smartest people I know and an extraordinary talent. We were reminiscing about the olden days, and we were reminded of the principles we have learnt in the army so long ago. Actually, he was the one being reminded because I was never even close to anything like combat myself. As he was reciting his lines I came to think that some of the guidelines may apply to software development. I’ve listed them with some relevant modifications&lt;/p&gt;  &lt;p&gt;1. &lt;i&gt;Pursuing on the task at hand, in light of the goal&lt;/i&gt;. Goals have the awful habit of changing all the time: the market is prone to change; your boss might have a sudden change of heart. Thus tasks may become irrelevant. I found it a good policy to check every once in a while whether what I am doing, is still in concordance with the goal. Another term that might pop into mind would be the word adaptation. Yet, I don’t feel from it the conviction of getting the task done. &lt;/p&gt;  &lt;p&gt;2. &lt;i&gt;The customer is my supreme commander&lt;/i&gt;. The customer in this case may range from the actual person or company that makes use of the product, to the sales department. All in all, my customer has a wider angle of view on things than I do&lt;/p&gt;  &lt;p&gt;3. &lt;i&gt;Creativity and innovation&lt;/i&gt;. While creativity is thinking out of the box, innovation is the yoking of it to the purpose of the product. It’s a tipsy tread, balancing between both. Creativity without innovation is a waste of time, but there is no innovation without creativity.&lt;/p&gt;  &lt;p&gt;4. &lt;i&gt;Never fall in love with your own creativity&lt;/i&gt;. I keep forgetting that one.&lt;/p&gt;  &lt;p&gt;5. &lt;i&gt;Keeping it stupid and simple&lt;/i&gt;. Might make the difference when you are showing the product to a customer. Letting go of this principal, may also cost a fortune in application maintenance. Keeping up with simplicity is a task for no fool. Some Damoclesien solution is needed to chop off the unnecessary.&lt;/p&gt;  &lt;p&gt;6. &lt;i&gt;Logistics&lt;/i&gt;. The average developer, like me, has a thread timeout of half a minute. Any logistic task I have to do that might exceeds that, waiting for coffee, or a long walk to the little boys room, has an overhead of reengaging the lost thread of thought when arriving back to the seat (oh, caffeine enriched coffee may help as well)&lt;/p&gt;  &lt;p&gt;7. &lt;i&gt;Standardization vs. opportunism.&lt;/i&gt; For me, the key word here is balance. Before the agile love affair, we used to call it the quick and dirty approach, i.e. having things done the fast way, when a customer is at the door. The difference between quick and dirty and plain old sloppy is the set of guidelines and standards that the course of production is built upon. &lt;/p&gt;  &lt;p&gt;8. &lt;i&gt;Mapping the critical paths&lt;/i&gt;. Pretty obvious where this is going. While mapping tasks, it’s not that difficult to make estimation about dependencies. Once that’s figured out, any project management software provides tools to visualize the critical path&lt;/p&gt;  &lt;p&gt;9. &lt;i&gt;Reserve management&lt;/i&gt;. Each developer manages his own buffers. This is important when you want to deliver within the time frame you are committed to. This behavior backfires when buffers aren’t properly manages and instead, layers upon layers of time buffers are created. When a developer asks for 3 days on a 2 day job, on average, he or she would only start working on it on the second day. In most cases, the product would be ready on time, in some it would actually take worst case of 3 days, summing up in a 4 day total. The best practice for me is to club all buffers to a single pool. Each developer is assigned with a best case time table, and the development manager controls the pool of time buffers. The probable outcome would be that only a fraction of the tasks are delayed and exceed the time assigned, then pool reserve time is given. No time is spared to be abused.&lt;/p&gt;  &lt;p&gt;10. &lt;i&gt;Task breakdown&lt;/i&gt;; autopilot.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;special thanks to &lt;a href="http://www.linkedin.com/pub/11/221/167"&gt;Uri Holtzman&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-5517950332074221342?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/5517950332074221342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/02/development-war-room.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5517950332074221342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/5517950332074221342'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/02/development-war-room.html' title='Development war room'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_K0XxPUglAM4/SYnvqnPIvkI/AAAAAAAAAGQ/VATcz5a8IDI/s72-c/military_sleep_by_marcheshvan_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-346903948399534038</id><published>2009-01-29T06:19:00.001+11:00</published><updated>2009-01-29T06:22:44.907+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='NullPointerException'/><category scheme='http://www.blogger.com/atom/ns#' term='boxing'/><title type='text'>Java Auto-Boxing NullPointerException</title><content type='html'>&lt;p&gt;What may one think to ones self, when a null pointer exception is thrown from a line of code as following:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;MySpecialThing specialThing = new MySpecialThing (aLongArgument);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;As if just to spite, the constructor is as harmless as:&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family:Courier;"&gt;MySpecialThing  (long someNumber){ this.longNumber=someNumber;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;This is just one of those things that even an hours worth of code staring won’t resolve. The stack trace in this case gives no reasonable hint to what might be the problem. However, if its not obvious from the title, there is an auto-boxing of a Long object into a java primitive long. &lt;/p&gt;  &lt;p&gt;The java compiler, wont see anything wrong, because such an assignment is perfectly legal, but at runtime if &lt;span style="font-family:Courier;"&gt;aLongArgument&lt;/span&gt; is delivered as null, the runtime exception is thrown from the constructor call(!).&lt;/p&gt;  &lt;p&gt;Shameless.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-346903948399534038?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/346903948399534038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/01/java-auto-boxing-nullpointerexception.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/346903948399534038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/346903948399534038'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/01/java-auto-boxing-nullpointerexception.html' title='Java Auto-Boxing NullPointerException'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4235252005998365022</id><published>2009-01-25T00:36:00.000+11:00</published><updated>2009-01-25T16:44:45.678+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='persisted'/><category scheme='http://www.blogger.com/atom/ns#' term='queue'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><category scheme='http://www.blogger.com/atom/ns#' term='producer consumer'/><title type='text'>The bliss of code reuse  </title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} span.query 	{mso-style-name:query; 	mso-style-unhide:no;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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;} &lt;/style&gt; &lt;![endif]--&gt;&lt;p class="MsoNormal"&gt;Almost two years ago, I wrote a java service for relaying and replicating some communication protocol for an American customer. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;One of the requirements of that service was to have persistence for the protocol commands it was passing, so in case of a communication failure, it would repeat the signal over and over until it got through. &lt;span style=""&gt; &lt;/span&gt;The file persistence was to ensure that if the service itself crashed for some reason, it would be able to pick up on the same note without loosing a thing.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The design was fairly simple, an array of producer/consumer queues, each accommodating a two way communication path to a far away server. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Even though I had a very short time to develop and deploy this service, I was anal enough to make myself a very nice persisted queue implementation. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;I used generics for the object that represents a single communication element. I used it naively by applying a string in the service I was writing, but I did see others use it in more elaborate fashions.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Because of some problems I had with using the Log4J implementation, I wrote my own logging mechanism. I did this since Log4J creates a drizzle of a memory leak when the implementation constantly adds categories and appenders at run-time. I figured that out while load testing, where I bombarded it with new sessions, I’ve notices that the log4J accumulated all the session appenders and never cleared them out. &lt;span style=""&gt; &lt;/span&gt;To smooth things out, I wrapped the logging implementation with a comfortable delegator, which allows an easy substitution; thus, my persisted queue was initiated either with log4J or by any other implementation (i.e. my own).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The way I made the persistence stick was to have a transaction like de-queue sequence. In lighter terms, what I mean is that once a message is de-queued by the consumer, it isn't removed from the queue and the persistence file, until a complimentary “commit de-queue” message is sent. I supplemented this with a regular de-queue method and a remove method that bypassed the FIFO mechanism all together.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I worked hard on making it as simple to use as i could. The base line initialization was without anything special, and was simple as calling a constructor without any arguments and would result in a simple blocking queue. That meant that nobody had to learn anything special about it, unless of course a special feature was actually required. The hard part is to overcome ones own bias to ones own code.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;I’ve finally realized I’ve struck gold with this, one day when I was re-factoring some packages and notices that this module was being used all over the application. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;I was mirthful and jolly&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;One of the reasons for my tipsy reaction was that while writing this little component, I did right and took the time to make a generic reusable module. It’s sometimes hard to tell while writing something new, whether it would ever be in use again. The academic approach of having everything reusable, is a fine methodology, but does have drawbacks when a customer is breathing down your throat, and doesn’t exactly appreciate paying for the reusability of the code.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Sometimes one just gets plain old lucky.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4235252005998365022?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4235252005998365022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/01/bliss-of-code-reuse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4235252005998365022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4235252005998365022'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/01/bliss-of-code-reuse.html' title='The bliss of code reuse  '/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3949784072476765950</id><published>2009-01-20T19:59:00.000+11:00</published><updated>2009-01-29T06:48:48.004+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript 3'/><title type='text'>Is it a bug? Is it a plane? no.. its...</title><content type='html'>last night i found a very interesting bug while running the debugger in the flex builder (version 3)&lt;br /&gt;&lt;br /&gt;I tries to compare an XML typed object to an empty string, don't ask me why.&lt;br /&gt;&lt;br /&gt;the debugger was watching the expression &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;(dataSource=="")&lt;/span&gt;.&lt;br /&gt;i then noticed that when the variable &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;dataSource &lt;/span&gt;was not null, and actually contained a valid XML object; the debugger was evaluating a false result in the watcher while in the code, the result was opposite.&lt;br /&gt;&lt;br /&gt;i caught a screen shot of this anomaly:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K0XxPUglAM4/SXWVKOZeSOI/AAAAAAAAAEg/AWh-SIjBzUc/s1600-h/WTF.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 83px;" src="http://2.bp.blogspot.com/_K0XxPUglAM4/SXWVKOZeSOI/AAAAAAAAAEg/AWh-SIjBzUc/s400/WTF.JPG" alt="" id="BLOGGER_PHOTO_ID_5293300939940055266" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-3949784072476765950?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/3949784072476765950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/01/adobe-flex-builder-bug-in-actionscript3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3949784072476765950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/3949784072476765950'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/01/adobe-flex-builder-bug-in-actionscript3.html' title='Is it a bug? Is it a plane? no.. its...'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_K0XxPUglAM4/SXWVKOZeSOI/AAAAAAAAAEg/AWh-SIjBzUc/s72-c/WTF.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-4665441327979247400</id><published>2009-01-18T19:32:00.001+11:00</published><updated>2009-10-14T22:08:29.571+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='white rabbit'/><category scheme='http://www.blogger.com/atom/ns#' term='time track'/><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe air'/><title type='text'>The white rabbit: bugs and suggestions</title><content type='html'>current version : beta 0.2 (&lt;a style="font-weight: bold;" href="http://dl.getdropbox.com/u/1403101/theWhiteRabbitINST/beta0.2/WhiteRabbit.air"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;this is what i have so far in terms of open bugs and suggestions:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);font-size:100%;" &gt;unresolved bugs:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;project and task tree collapses whenever changed&lt;/li&gt;&lt;li&gt;session time counter display: when changing back from monthly to session, the clock keeps showing the monthly accumulation&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);font-size:100%;" &gt;suggestions:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;"coast plus" configuration for the reports; suggested by Roy Reshef. have a configuration for adding a fixed overhead on the hour report, that would express the standard extra expenses. this is useful for freelancers that need to overload extra coasts on the hourly report. this might be implemented as a conversion to monitory terms as well.&lt;/li&gt;&lt;li&gt;add a scheduler for tasks; suggested by Tomer Ben Arie. embed a scheduler into the project and task tree, that would allow time planning for implementation&lt;/li&gt;&lt;li&gt;go large in enterprise mode; suggested by Ori Manor. enable networking and task legation from one user to another.&lt;/li&gt;&lt;li&gt;oops mechanism, for backtracking in case i forget to stop the clock.&lt;/li&gt;&lt;li&gt;floating task; enable time measurement without first determining the ownership. this is a nice feature when you are presented with a problem that you cant decide where to frame it until well into the task.&lt;/li&gt;&lt;li&gt;task list view; a simple list like view where the user may thrown in "todo" tasks, and categorize them later.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;this feed is brought to you by Gilad Manor http://giladmanor.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8843397059880399331-4665441327979247400?l=giladmanor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://giladmanor.blogspot.com/feeds/4665441327979247400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://giladmanor.blogspot.com/2009/01/white-rabbit-bugs-and-suggestions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4665441327979247400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8843397059880399331/posts/default/4665441327979247400'/><link rel='alternate' type='text/html' href='http://giladmanor.blogspot.com/2009/01/white-rabbit-bugs-and-suggestions.html' title='The white rabbit: bugs and suggestions'/><author><name>Gilad Manor</name><uri>http://www.blogger.com/profile/09539994283922783215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_K0XxPUglAM4/SSNJKdqEljI/AAAAAAAAAAo/KkrVbHV7JOo/S220/profile_by_giladmanor.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8843397059880399331.post-3026335636634003304</id><published>2009-01-17T06:55:00.002+11:00</published><updated>2009-10-15T20:11:00.413+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='white rabbit'/><category scheme='http://www.blogger.com/atom/ns#' term='time track'/><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='beta'/><category scheme='http://www.blogger.com/atom/ns#' term='document'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe air'/><title type='text'>Follow the white rabbit</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K0XxPUglAM4/SXDyXj2p8yI/AAAAAAAAACw/QBxrxh2DdkY/s1600-h/theWiteRabit.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 167px; height: 137px;" src="http://2.bp.blogspot.com/_K0XxPUglAM4/SXDyXj2p8yI/AAAAAAAAACw/QBxrxh2DdkY/s320/theWiteRabit.jpg" alt="" id="BLOGGER_PHOTO_ID_5291996048735728418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	mso-themecolor:hyperlink; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1385444865; 	mso-list-type:hybrid; 	mso-list-template-ids:-199611690 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-size:24px;" &gt;A&lt;/span&gt; couple of months ago, two things happened; one was that I got a project for a report wizard to do in flex. The other was the need to report on the hours I spent on it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Learning Flex was a very nice and exciting experience. The need for precise accounting of time spent on this project made me start a side task on my little white rabbit. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The white rabbit is a simple, stand-alone application that measures time spend on each task in a project. It’s not fully automated, and relays the user to start and stop the clock.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Nevertheless, it does help keep organized and it does generate a report.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Why is it called “The white rabbit”? Because of the character from Luis Carol’s Alice in wonderland, the white rabbit fellow that runs around complaining about time or the absence of it. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So &lt;a href="http://dl.getdropbox.com/u/1403101/theWhiteRabbitINST/beta0.2/WhiteRabbit.air"&gt;here it is&lt;/a&gt;. A simple tool, very easy to use, fully persisted standalone application. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;The application was written using the adobe flex3 builder, and the package is installable in all windows versions and Mac OS, as long as you have flash installed (&lt;a href="http://www.adobe.com/products/air/"&gt;&lt;/a&gt;&lt;a href="http://www.adobe.com/products/air/"&gt;get adobe air&lt;/a&gt;).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The application has three aspects to it:&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;The task management tool, defines a tree of accounts, projects and tasks&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;The activity measurement tool, double click a task, and it starts counting the time&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;And the reporting tool, temporal reports in a PDF format, ready for submission&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073741899 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} h2 	{mso-style-noshow:yes; 	mso-style-priority:9; 	mso-style-qformat:yes; 	mso-style-link:"Heading 2 Char"; 	mso-style-next:Normal; 	margin-top:10.0pt; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:0in; 	margin-bottom:.0001pt; 	line-height:115%; 	mso-pagination:widow-orphan lines-together; 	page-break-after:avoid; 	mso-outline-level:2; 	font-size:13.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#4F81BD; 	mso-themecolor:accent1;} span.Heading2Char 	{mso-style-name:"Heading 2 Char"; 	mso-style-noshow:yes; 	mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:"Heading 2"; 	mso-ansi-font-size:13.0pt; 	mso-bidi-font-size:13.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#4F81BD; 	mso-themecolor:accent1; 	font-weight:bold;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;h2&gt;Projects and Task tree management:&lt;/h2&gt;  &lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:742140090; 	mso-list-type:hybrid; 	mso-list-template-ids:907194566 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:.25in; 	text-indent:-.25in; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;I have assembled the task tree with three entities:&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;An account: represents a customer. A billed entity that would be receiving the report.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;A project: an assignment with a particular scope, one may regard this is as a directory of tasks.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;A task: a single work particle. Could be regarded as anything actually. &lt;/p&gt;    &lt;p class="MsoNormal"&gt;The only restriction I’ve set into this task tree structure is that the root of any tree has to be an account.&lt;/p&gt;  &lt;span style=""&gt;Figure 1: the porjects management screen&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K0XxPUglAM4/SXDyJkoTkxI/AAAAAAAAACY/RTq4BEgaEV0/s1600-h/projects.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 314px; height: 320px;" src="http://4.bp.blogspot.com/_K0XxPUglAM4/SXDyJkoTkxI/AAAAAAAAACY/RTq4BEgaEV0/s320/projects.jpg" alt="" id="BLOGGER_PHOTO_ID_5291995808425808658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K0XxPUglAM4/SXDyJbDlAjI/AAAAAAAAACQ/cntPJcfcaZo/s1600-h/projectOptions.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 159px; height: 232px;" src="http://1.bp.blogspot.com/_K0XxPUglAM4/SXDyJbDlAjI/AAAAAAAAACQ/cntPJcfcaZo/s320/projectOptions.jpg" alt="" id="BLOGGER_PHOTO_ID_5291995805855842866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:officedocumentsettings&gt;   &lt;o:relyonvml/&gt;   &lt;o:allowpng/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;HE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:0in; 	margin-left:.5in; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:.5in; 	mso-add-space:auto; 	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-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:Arial; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1171485945; 	mso-list-type:hybrid; 	mso-list-template-ids:-1776231714 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-.25in; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* 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-qformat:yes; 	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;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;The items in the tree, regardless of their type all have the following properties:&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;A title&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;A description&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;Status (open or closed)&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family:Symbol;"&gt;&lt;span style=""&gt;·&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;An hour estimation &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" st
